diff options
| author | Chris Lattner <sabre@nondot.org> | 2007-05-17 17:13:13 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2007-05-17 17:13:13 +0000 |
| commit | dade607f19c7e2783aade3c108ad8c96acf0f36e (patch) | |
| tree | 16096c7505c9bb0695207471b2cbc36460242a63 /llvm/lib/Target | |
| parent | 1ad46187155d92df4b0000be7016e1596181d899 (diff) | |
| download | bcm5719-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.cpp | 7 |
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; |

