aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>2010-09-07 18:41:45 +0000
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>2010-09-07 18:41:45 +0000
commit58277b17c3c90512237cb84ca567e8884823aa59 (patch)
treeeb6e54d27c786d15aed2f44aac41788b199c7722
parent673bf78bb5104e28d7295bbca87ebdc2c237353e (diff)
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
-rw-r--r--lib/Target/X86/X86ISelLowering.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp
index e496365de2..a98de5bc7b 100644
--- a/lib/Target/X86/X86ISelLowering.cpp
+++ b/lib/Target/X86/X86ISelLowering.cpp
@@ -5271,12 +5271,16 @@ X86TargetLowering::LowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG) const {
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!