diff options
| author | Hal Finkel <hfinkel@anl.gov> | 2014-03-23 05:35:00 +0000 |
|---|---|---|
| committer | Hal Finkel <hfinkel@anl.gov> | 2014-03-23 05:35:00 +0000 |
| commit | 4a912250fa3830c6cb0bd2ebc8a7e1992b14520b (patch) | |
| tree | 82586bf8e1ecc53a42c556335d5591fa1a0d761b /llvm/lib/Target/PowerPC/PPCInstrVSX.td | |
| parent | 459b5dc39e7e7d636a424606b2ac401bccf281e3 (diff) | |
| download | bcm5719-llvm-4a912250fa3830c6cb0bd2ebc8a7e1992b14520b.tar.gz bcm5719-llvm-4a912250fa3830c6cb0bd2ebc8a7e1992b14520b.zip | |
[PowerPC] Make use of VSX f64 <-> i64 conversion instructions
When VSX is available, these instructions should be used in preference to the
older variants that only have access to the scalar floating-point registers.
llvm-svn: 204559
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCInstrVSX.td')
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPCInstrVSX.td | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCInstrVSX.td b/llvm/lib/Target/PowerPC/PPCInstrVSX.td index cfc526ef805..63ea15db710 100644 --- a/llvm/lib/Target/PowerPC/PPCInstrVSX.td +++ b/llvm/lib/Target/PowerPC/PPCInstrVSX.td @@ -414,25 +414,31 @@ let Uses = [RM] in { "xscvdpsp $XT, $XB", IIC_VecFP, []>; def XSCVDPSXDS : XX2Form<60, 344, (outs vsrc:$XT), (ins vsrc:$XB), - "xscvdpsxds $XT, $XB", IIC_VecFP, []>; + "xscvdpsxds $XT, $XB", IIC_VecFP, + [(set f64:$XT, (PPCfctidz f64:$XB))]>; def XSCVDPSXWS : XX2Form<60, 88, (outs vsrc:$XT), (ins vsrc:$XB), - "xscvdpsxws $XT, $XB", IIC_VecFP, []>; + "xscvdpsxws $XT, $XB", IIC_VecFP, + [(set f64:$XT, (PPCfctiwz f64:$XB))]>; def XSCVDPUXDS : XX2Form<60, 328, (outs vsrc:$XT), (ins vsrc:$XB), - "xscvdpuxds $XT, $XB", IIC_VecFP, []>; + "xscvdpuxds $XT, $XB", IIC_VecFP, + [(set f64:$XT, (PPCfctiduz f64:$XB))]>; def XSCVDPUXWS : XX2Form<60, 72, (outs vsrc:$XT), (ins vsrc:$XB), - "xscvdpuxws $XT, $XB", IIC_VecFP, []>; + "xscvdpuxws $XT, $XB", IIC_VecFP, + [(set f64:$XT, (PPCfctiwuz f64:$XB))]>; def XSCVSPDP : XX2Form<60, 329, (outs vsrc:$XT), (ins vsrc:$XB), "xscvspdp $XT, $XB", IIC_VecFP, []>; def XSCVSXDDP : XX2Form<60, 376, (outs vsrc:$XT), (ins vsrc:$XB), - "xscvsxddp $XT, $XB", IIC_VecFP, []>; + "xscvsxddp $XT, $XB", IIC_VecFP, + [(set f64:$XT, (PPCfcfid f64:$XB))]>; def XSCVUXDDP : XX2Form<60, 360, (outs vsrc:$XT), (ins vsrc:$XB), - "xscvuxddp $XT, $XB", IIC_VecFP, []>; + "xscvuxddp $XT, $XB", IIC_VecFP, + [(set f64:$XT, (PPCfcfidu f64:$XB))]>; def XVCVDPSP : XX2Form<60, 393, (outs vsrc:$XT), (ins vsrc:$XB), |

