summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2007-05-17 17:13:13 +0000
committerChris Lattner <sabre@nondot.org>2007-05-17 17:13:13 +0000
commitdade607f19c7e2783aade3c108ad8c96acf0f36e (patch)
tree16096c7505c9bb0695207471b2cbc36460242a63 /llvm/lib/Target
parent1ad46187155d92df4b0000be7016e1596181d899 (diff)
downloadbcm5719-llvm-dade607f19c7e2783aade3c108ad8c96acf0f36e.tar.gz
bcm5719-llvm-dade607f19c7e2783aade3c108ad8c96acf0f36e.zip
This is the correct fix for PR1427. This fixes mmx-shuffle.ll and doesn't
cause other regressions. llvm-svn: 37160
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 6de6b21c78e..0616513b5ee 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -2675,7 +2675,8 @@ X86TargetLowering::LowerVECTOR_SHUFFLE(SDOperand Op, SelectionDAG &DAG) {
return Op;
}
- if (X86::isSHUFPMask(PermMask.Val))
+ if (X86::isSHUFPMask(PermMask.Val) &&
+ MVT::getSizeInBits(VT) != 64) // Don't do this for MMX.
return Op;
// Handle v8i16 shuffle high / low shuffle node pair.
@@ -2712,7 +2713,9 @@ X86TargetLowering::LowerVECTOR_SHUFFLE(SDOperand Op, SelectionDAG &DAG) {
}
}
- if (NumElems == 4) {
+ if (NumElems == 4 &&
+ // Don't do this for MMX.
+ MVT::getSizeInBits(VT) != 64) {
MVT::ValueType MaskVT = PermMask.getValueType();
MVT::ValueType MaskEVT = MVT::getVectorBaseType(MaskVT);
SmallVector<std::pair<int, int>, 8> Locs;
OpenPOWER on IntegriCloud