aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-09-03 19:38:05 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-09-03 19:38:05 +0000
commit0ffe4db45cc530429d5aab1f4ce5ba9f5bbbbc32 (patch)
tree0bae6931ec30dd6de8944231977c315f3a41423e
parent3626a8c136a5d87d301aaab2534b77361bac37ae (diff)
downloadllvm-0ffe4db45cc530429d5aab1f4ce5ba9f5bbbbc32.zip
llvm-0ffe4db45cc530429d5aab1f4ce5ba9f5bbbbc32.tar.gz
llvm-0ffe4db45cc530429d5aab1f4ce5ba9f5bbbbc32.tar.bz2
Revert r112942, "Use punpckh and unpckh family of nodes instead of using unpckh
mask pattern fragment", which depends on r112934, which introduced some infinite loop and select failures. llvm-svn: 112998
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp26
1 files changed, 3 insertions, 23 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 96238a0..216ad10 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -2609,11 +2609,9 @@ static bool isTargetShuffle(unsigned Opcode) {
case X86ISD::PUNPCKLDQ:
case X86ISD::PUNPCKLQDQ:
case X86ISD::UNPCKHPS:
- case X86ISD::UNPCKHPD:
case X86ISD::PUNPCKHWD:
case X86ISD::PUNPCKHBW:
case X86ISD::PUNPCKHDQ:
- case X86ISD::PUNPCKHQDQ:
return true;
}
return false;
@@ -2674,11 +2672,9 @@ static SDValue getTargetShuffleNode(unsigned Opc, DebugLoc dl, EVT VT,
case X86ISD::PUNPCKLDQ:
case X86ISD::PUNPCKLQDQ:
case X86ISD::UNPCKHPS:
- case X86ISD::UNPCKHPD:
case X86ISD::PUNPCKHWD:
case X86ISD::PUNPCKHBW:
case X86ISD::PUNPCKHDQ:
- case X86ISD::PUNPCKHQDQ:
return DAG.getNode(Opc, dl, VT, V1, V2);
}
return SDValue();
@@ -5227,20 +5223,6 @@ static unsigned getUNPCKLOpcode(EVT VT) {
return 0;
}
-static unsigned getUNPCKHOpcode(EVT VT) {
- switch(VT.getSimpleVT().SimpleTy) {
- case MVT::v4i32: return X86ISD::PUNPCKHDQ;
- case MVT::v2i64: return X86ISD::PUNPCKHQDQ;
- case MVT::v4f32: return X86ISD::UNPCKHPS;
- case MVT::v2f64: return X86ISD::UNPCKHPD;
- case MVT::v16i8: return X86ISD::PUNPCKHBW;
- case MVT::v8i16: return X86ISD::PUNPCKHWD;
- default:
- llvm_unreachable("Unknow type for unpckh");
- }
- return 0;
-}
-
SDValue
X86TargetLowering::LowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG) const {
ShuffleVectorSDNode *SVOp = cast<ShuffleVectorSDNode>(Op);
@@ -5431,8 +5413,7 @@ X86TargetLowering::LowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG) const {
Op : getTargetShuffleNode(getUNPCKLOpcode(VT), dl, VT, V1, V2, DAG);
if (X86::isUNPCKHMask(SVOp))
- return (isMMX) ?
- Op : getTargetShuffleNode(getUNPCKHOpcode(VT), dl, VT, V1, V2, DAG);
+ return Op;
if (V2IsSplat) {
// Normalize mask so all entries that point to V2 points to its first
@@ -5457,11 +5438,10 @@ X86TargetLowering::LowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG) const {
if (X86::isUNPCKLMask(NewSVOp))
return (isMMX) ?
- NewOp : getTargetShuffleNode(getUNPCKLOpcode(VT), dl, VT, V2, V1, DAG);
+ Op : getTargetShuffleNode(getUNPCKLOpcode(VT), dl, VT, V2, V1, DAG);
if (X86::isUNPCKHMask(NewSVOp))
- return (isMMX) ?
- NewOp : getTargetShuffleNode(getUNPCKHOpcode(VT), dl, VT, V2, V1, DAG);
+ return NewOp;
}
// FIXME: for mmx, bitcast v2i32 to v4i16 for shuffle.