summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2019-03-10 18:56:21 +0000
committerSanjay Patel <spatel@rotateright.com>2019-03-10 18:56:21 +0000
commit26e06e859e218e395a87208c00b55d36274a09ae (patch)
tree8d16c9cecf0e559fe724602d0aa5a3773c1d9e3b /llvm/lib
parent7d8260feb602883bae48e792e26c9d9897f249a0 (diff)
downloadbcm5719-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.cpp12
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;
OpenPOWER on IntegriCloud