diff options
author | Sanjay Patel <spatel@rotateright.com> | 2019-03-10 18:56:21 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2019-03-10 18:56:21 +0000 |
commit | 26e06e859e218e395a87208c00b55d36274a09ae (patch) | |
tree | 8d16c9cecf0e559fe724602d0aa5a3773c1d9e3b /llvm/lib | |
parent | 7d8260feb602883bae48e792e26c9d9897f249a0 (diff) | |
download | bcm5719-llvm-26e06e859e218e395a87208c00b55d36274a09ae.tar.gz bcm5719-llvm-26e06e859e218e395a87208c00b55d36274a09ae.zip |
[x86] add x86-specific opcodes to extractelement scalarization list
llvm-svn: 355792
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index c90216c5378..db64cd87dc2 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -34341,9 +34341,9 @@ static SDValue scalarizeExtEltFP(SDNode *ExtElt, SelectionDAG &DAG) { if (VT != MVT::f32 && VT != MVT::f64) return SDValue(); - // TODO: This switch could include FNEG, the x86-specific FP logic ops - // (FAND, FANDN, FOR, FXOR), FRSQRT/FRCP and other FP math ops. But that may - // require enhancements to avoid missed load folding and fma+fneg combining. + // TODO: This switch could include FNEG and the x86-specific FP logic ops + // (FAND, FANDN, FOR, FXOR). But that may require enhancements to avoid + // missed load folding and fma+fneg combining. switch (Vec.getOpcode()) { case ISD::FMA: // Begin 3 operands case ISD::FMAD: @@ -34359,6 +34359,8 @@ static SDValue scalarizeExtEltFP(SDNode *ExtElt, SelectionDAG &DAG) { case ISD::FMAXNUM_IEEE: case ISD::FMAXIMUM: case ISD::FMINIMUM: + case X86ISD::FMAX: + case X86ISD::FMIN: case ISD::FABS: // Begin 1 operand case ISD::FSQRT: case ISD::FRINT: @@ -34366,7 +34368,9 @@ static SDValue scalarizeExtEltFP(SDNode *ExtElt, SelectionDAG &DAG) { case ISD::FTRUNC: case ISD::FNEARBYINT: case ISD::FROUND: - case ISD::FFLOOR: { + case ISD::FFLOOR: + case X86ISD::FRCP: + case X86ISD::FRSQRT: { // extract (fp X, Y, ...), 0 --> fp (extract X, 0), (extract Y, 0), ... SDLoc DL(ExtElt); SmallVector<SDValue, 4> ExtOps; |