decouple MMX check from regular splat checks. Some refactoring is coming, and MMX should be left alone to be easily removed after moving to intrinsics
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113247 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp
index e496365..a98de5b 100644
--- a/lib/Target/X86/X86ISelLowering.cpp
+++ b/lib/Target/X86/X86ISelLowering.cpp
@@ -5271,12 +5271,16 @@
if (isZeroShuffle(SVOp))
return getZeroVector(VT, Subtarget->hasSSE2(), DAG, dl);
+ // FIXME: this is somehow handled during isel by MMX pattern fragments. Remove
+ // the check or come up with another solution when all MMX move to intrinsics,
+ // but don't allow this to be considered legal, we don't want vector_shuffle
+ // operations to be matched during isel anymore.
+ if (isMMX && SVOp->isSplat())
+ return Op;
+
// Promote splats to v4f32.
- if (SVOp->isSplat()) {
- if (isMMX)
- return Op;
+ if (SVOp->isSplat())
return PromoteSplat(SVOp, DAG);
- }
// If the shuffle can be profitably rewritten as a narrower shuffle, then
// do it!