summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2016-08-29 04:49:27 +0000
committerCraig Topper <craig.topper@gmail.com>2016-08-29 04:49:27 +0000
commitf0e822ff31a668ea85e388bdd9207df859352d41 (patch)
tree285ba415358228ba6e314d0a727db29d5a9d542b
parent71584cd0f06e596e16cfee11f3179913c3b974c4 (diff)
downloadbcm5719-llvm-f0e822ff31a668ea85e388bdd9207df859352d41.tar.gz
bcm5719-llvm-f0e822ff31a668ea85e388bdd9207df859352d41.zip
[AVX-512] Always use v8i64 when converting 512-bit FAND/FOR/FXOR/FANDN to integer operations when DQI isn't supported. This is consistent with the recent changes to promote logical operations to i64 vectors.
llvm-svn: 279957
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp8
1 files changed, 3 insertions, 5 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 2591aef6c42..381b81f9945 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -30365,11 +30365,9 @@ static SDValue lowerX86FPLogicOp(SDNode *N, SelectionDAG &DAG,
// VXORPS, VORPS, VANDPS, VANDNPS are supported only under DQ extention.
// These logic operations may be executed in the integer domain.
SDLoc dl(N);
- MVT IntScalar = MVT::getIntegerVT(VT.getScalarSizeInBits());
- MVT IntVT = MVT::getVectorVT(IntScalar, VT.getVectorNumElements());
- SDValue Op0 = DAG.getBitcast(IntVT, N->getOperand(0));
- SDValue Op1 = DAG.getBitcast(IntVT, N->getOperand(1));
+ SDValue Op0 = DAG.getBitcast(MVT::v8i64, N->getOperand(0));
+ SDValue Op1 = DAG.getBitcast(MVT::v8i64, N->getOperand(1));
unsigned IntOpcode = 0;
switch (N->getOpcode()) {
default: llvm_unreachable("Unexpected FP logic op");
@@ -30378,7 +30376,7 @@ static SDValue lowerX86FPLogicOp(SDNode *N, SelectionDAG &DAG,
case X86ISD::FAND: IntOpcode = ISD::AND; break;
case X86ISD::FANDN: IntOpcode = X86ISD::ANDNP; break;
}
- SDValue IntOp = DAG.getNode(IntOpcode, dl, IntVT, Op0, Op1);
+ SDValue IntOp = DAG.getNode(IntOpcode, dl, MVT::v8i64, Op0, Op1);
return DAG.getBitcast(VT, IntOp);
}
return SDValue();
OpenPOWER on IntegriCloud