summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/PowerPC/PPCInstrVSX.td
diff options
context:
space:
mode:
authorHal Finkel <hfinkel@anl.gov>2014-03-23 05:35:00 +0000
committerHal Finkel <hfinkel@anl.gov>2014-03-23 05:35:00 +0000
commit4a912250fa3830c6cb0bd2ebc8a7e1992b14520b (patch)
tree82586bf8e1ecc53a42c556335d5591fa1a0d761b /llvm/lib/Target/PowerPC/PPCInstrVSX.td
parent459b5dc39e7e7d636a424606b2ac401bccf281e3 (diff)
downloadbcm5719-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.td18
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),
OpenPOWER on IntegriCloud