diff options
| author | Lei Huang <lei@ca.ibm.com> | 2018-03-19 19:22:52 +0000 |
|---|---|---|
| committer | Lei Huang <lei@ca.ibm.com> | 2018-03-19 19:22:52 +0000 |
| commit | ecfede94a7a55b4907bcf87c23366f8e2625899e (patch) | |
| tree | 76dc4144ddf4c060fb81349085cfeed5a6e274cf /llvm/lib/Target/PowerPC | |
| parent | 1038cff6e972acad7b693766019925f5481ab69b (diff) | |
| download | bcm5719-llvm-ecfede94a7a55b4907bcf87c23366f8e2625899e.tar.gz bcm5719-llvm-ecfede94a7a55b4907bcf87c23366f8e2625899e.zip | |
[Power9]Legalize and emit code for quad-precision copySign/abs/nabs/neg/sqrt
Legalize and emit code for quad-precision floating point operations:
* xscpsgnqp
* xsabsqp
* xsnabsqp
* xsnegqp
* xssqrtqp
Differential Revision: https://reviews.llvm.org/D44530
llvm-svn: 327889
Diffstat (limited to 'llvm/lib/Target/PowerPC')
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPCInstrVSX.td | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCInstrVSX.td b/llvm/lib/Target/PowerPC/PPCInstrVSX.td index 95191aaad0a..4177dd72310 100644 --- a/llvm/lib/Target/PowerPC/PPCInstrVSX.td +++ b/llvm/lib/Target/PowerPC/PPCInstrVSX.td @@ -2386,12 +2386,17 @@ let AddedComplexity = 400, Predicates = [HasP9Vector] in { // Quad-Precision Scalar Move Instructions: // Copy Sign - def XSCPSGNQP : X_VT5_VA5_VB5<63, 100, "xscpsgnqp", []>; + def XSCPSGNQP : X_VT5_VA5_VB5<63, 100, "xscpsgnqp", + [(set f128:$vT, + (fcopysign f128:$vB, f128:$vA))]>; // Absolute/Negative-Absolute/Negate - def XSABSQP : X_VT5_XO5_VB5<63, 0, 804, "xsabsqp" , []>; - def XSNABSQP : X_VT5_XO5_VB5<63, 8, 804, "xsnabsqp", []>; - def XSNEGQP : X_VT5_XO5_VB5<63, 16, 804, "xsnegqp" , []>; + def XSABSQP : X_VT5_XO5_VB5<63, 0, 804, "xsabsqp", + [(set f128:$vT, (fabs f128:$vB))]>; + def XSNABSQP : X_VT5_XO5_VB5<63, 8, 804, "xsnabsqp", + [(set f128:$vT, (fneg (fabs f128:$vB)))]>; + def XSNEGQP : X_VT5_XO5_VB5<63, 16, 804, "xsnegqp", + [(set f128:$vT, (fneg f128:$vB))]>; //===--------------------------------------------------------------------===// // Quad-Precision Scalar Floating-Point Arithmetic Instructions: @@ -2414,7 +2419,8 @@ let AddedComplexity = 400, Predicates = [HasP9Vector] in { def XSDIVQPO : X_VT5_VA5_VB5_Ro<63, 548, "xsdivqpo", []>; // Square-Root - def XSSQRTQP : X_VT5_XO5_VB5 <63, 27, 804, "xssqrtqp" , []>; + def XSSQRTQP : X_VT5_XO5_VB5 <63, 27, 804, "xssqrtqp", + [(set f128:$vT, (fsqrt f128:$vB))]>; def XSSQRTQPO : X_VT5_XO5_VB5_Ro<63, 27, 804, "xssqrtqpo", []>; // (Negative) Multiply-{Add/Subtract} |

