summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorEric Christopher <echristo@gmail.com>2016-03-14 23:59:57 +0000
committerEric Christopher <echristo@gmail.com>2016-03-14 23:59:57 +0000
commitda8b3f1914e0cc4eb25af376583a23e660718115 (patch)
tree51d9243b87c6a48708793fbd3651609d1e3cadeb /llvm/lib
parentabde7dfbe9816c59795e4b94f1d1a4d7c60700f2 (diff)
downloadbcm5719-llvm-da8b3f1914e0cc4eb25af376583a23e660718115.tar.gz
bcm5719-llvm-da8b3f1914e0cc4eb25af376583a23e660718115.zip
Temporarily Revert "[X86][SSE] Simplify vector LOAD + EXTEND on
pre-SSE41 hardware" as it seems to be causing crashes during code generation in halide. PR forthcoming. This reverts commit r263303. llvm-svn: 263512
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h1
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp39
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp4
3 files changed, 1 insertions, 43 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h b/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
index c79505683e8..8ba19f76797 100644
--- a/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
+++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
@@ -653,7 +653,6 @@ private:
void SplitVecRes_UnaryOp(SDNode *N, SDValue &Lo, SDValue &Hi);
void SplitVecRes_ExtendOp(SDNode *N, SDValue &Lo, SDValue &Hi);
void SplitVecRes_InregOp(SDNode *N, SDValue &Lo, SDValue &Hi);
- void SplitVecRes_ExtVecInRegOp(SDNode *N, SDValue &Lo, SDValue &Hi);
void SplitVecRes_BITCAST(SDNode *N, SDValue &Lo, SDValue &Hi);
void SplitVecRes_BUILD_VECTOR(SDNode *N, SDValue &Lo, SDValue &Hi);
diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
index 0d6d9987211..452f0fdbcd9 100644
--- a/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
@@ -621,12 +621,6 @@ void DAGTypeLegalizer::SplitVectorResult(SDNode *N, unsigned ResNo) {
SplitVecRes_VECTOR_SHUFFLE(cast<ShuffleVectorSDNode>(N), Lo, Hi);
break;
- case ISD::ANY_EXTEND_VECTOR_INREG:
- case ISD::SIGN_EXTEND_VECTOR_INREG:
- case ISD::ZERO_EXTEND_VECTOR_INREG:
- SplitVecRes_ExtVecInRegOp(N, Lo, Hi);
- break;
-
case ISD::BITREVERSE:
case ISD::BSWAP:
case ISD::CONVERT_RNDSAT:
@@ -923,39 +917,6 @@ void DAGTypeLegalizer::SplitVecRes_InregOp(SDNode *N, SDValue &Lo,
DAG.getValueType(HiVT));
}
-void DAGTypeLegalizer::SplitVecRes_ExtVecInRegOp(SDNode *N, SDValue &Lo,
- SDValue &Hi) {
- unsigned Opcode = N->getOpcode();
- SDValue N0 = N->getOperand(0);
-
- SDLoc dl(N);
- SDValue InLo, InHi;
- GetSplitVector(N0, InLo, InHi);
- EVT InLoVT = InLo.getValueType();
- unsigned InNumElements = InLoVT.getVectorNumElements();
-
- EVT OutLoVT, OutHiVT;
- std::tie(OutLoVT, OutHiVT) = DAG.GetSplitDestVTs(N->getValueType(0));
- unsigned OutNumElements = OutLoVT.getVectorNumElements();
- assert((2 * OutNumElements) <= InNumElements &&
- "Illegal extend vector in reg split");
-
- // *_EXTEND_VECTOR_INREG instructions extend the lowest elements of the
- // input vector (i.e. we only use InLo):
- // OutLo will extend the first OutNumElements from InLo.
- // OutHi will extend the next OutNumElements from InLo.
-
- // Shuffle the elements from InLo for OutHi into the bottom elements to
- // create a 'fake' InHi.
- SmallVector<int, 8> SplitHi(InNumElements, -1);
- for (unsigned i = 0; i != OutNumElements; ++i)
- SplitHi[i] = i + OutNumElements;
- InHi = DAG.getVectorShuffle(InLoVT, dl, InLo, DAG.getUNDEF(InLoVT), SplitHi);
-
- Lo = DAG.getNode(Opcode, dl, OutLoVT, InLo);
- Hi = DAG.getNode(Opcode, dl, OutHiVT, InHi);
-}
-
void DAGTypeLegalizer::SplitVecRes_INSERT_VECTOR_ELT(SDNode *N, SDValue &Lo,
SDValue &Hi) {
SDValue Vec = N->getOperand(0);
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index e08e26e0ecd..bf4cc0fb392 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -28585,9 +28585,7 @@ static SDValue combineToExtendVectorInReg(SDNode *N, SelectionDAG &DAG,
// If target-size is 128-bits (or 256-bits on AVX2 target), then convert to
// ISD::*_EXTEND_VECTOR_INREG which ensures lowering to X86ISD::V*EXT.
- // Also use this if we don't have SSE41 to allow the legalizer do its job.
- if (!Subtarget.hasSSE41() || VT.is128BitVector() ||
- (VT.is256BitVector() && Subtarget.hasInt256())) {
+ if (VT.is128BitVector() || (VT.is256BitVector() && Subtarget.hasInt256())) {
SDValue ExOp = ExtendVecSize(DL, N0, VT.getSizeInBits());
return Opcode == ISD::SIGN_EXTEND
? DAG.getSignExtendVectorInReg(ExOp, DL, VT)
OpenPOWER on IntegriCloud