diff options
author | Sean Fertile <sfertile@ca.ibm.com> | 2016-11-14 18:43:59 +0000 |
---|---|---|
committer | Sean Fertile <sfertile@ca.ibm.com> | 2016-11-14 18:43:59 +0000 |
commit | a435e07de85dfe6ef675aa584c6b074ea6cd98d7 (patch) | |
tree | 76c9384c235fb8371ce38badc2ff5e72a1dbd95c /llvm/lib | |
parent | 544220fc0b31b4cc95aa183a20ef91922aeab7b7 (diff) | |
download | bcm5719-llvm-a435e07de85dfe6ef675aa584c6b074ea6cd98d7.tar.gz bcm5719-llvm-a435e07de85dfe6ef675aa584c6b074ea6cd98d7.zip |
[PPC] Add intrinsic mapping to the xscvhpsp instruction
add an intrinsic to expose the 'VSX Scalar Convert Half-Precision to
Single-Precision' instruction.
Differential review: https://reviews.llvm.org/D26536
llvm-svn: 286862
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/PowerPC/PPCInstrVSX.td | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCInstrVSX.td b/llvm/lib/Target/PowerPC/PPCInstrVSX.td index cdf6a24b725..98ac3b77469 100644 --- a/llvm/lib/Target/PowerPC/PPCInstrVSX.td +++ b/llvm/lib/Target/PowerPC/PPCInstrVSX.td @@ -2132,6 +2132,7 @@ let AddedComplexity = 400, Predicates = [HasP9Vector] in { def XSCVSDQP : X_VT5_XO5_VB5_TyVB<63, 10, 836, "xscvsdqp", vfrc, []>; def XSCVUDQP : X_VT5_XO5_VB5_TyVB<63, 2, 836, "xscvudqp", vfrc, []>; + let UseVSXReg = 1 in { //===--------------------------------------------------------------------===// // Round to Floating-Point Integer Instructions @@ -2148,6 +2149,14 @@ let AddedComplexity = 400, Predicates = [HasP9Vector] in { [(set v4f32:$XT, (int_ppc_vsx_xvcvsphp v4f32:$XB))]>; + } // UseVSXReg = 1 + + // Pattern for matching Vector HP -> Vector SP intrinsic. Defined as a + // seperate pattern so that it can convert the input register class from + // VRRC(v8i16) to VSRC. + def : Pat<(v4f32 (int_ppc_vsx_xvcvhpsp v8i16:$A)), + (v4f32 (XVCVHPSP (COPY_TO_REGCLASS $A, VSRC)))>; + class Z23_VT5_R1_VB5_RMC2_EX1<bits<6> opcode, bits<8> xo, bit ex, string opc, list<dag> pattern> : Z23Form_1<opcode, xo, |