summaryrefslogtreecommitdiffstats
path: root/llvm/lib
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
commit5a45db3e6cd43d00b4fef87fab4bfae7ee1b0136 (patch)
treee2e80a0b9bfe07d70c32bbc2f8d4c73fa8db1ffe /llvm/lib
parent8499f47ef45d8a9ae7b8efd417453ef21fe8d117 (diff)
downloadbcm5719-llvm-5a45db3e6cd43d00b4fef87fab4bfae7ee1b0136.tar.gz
bcm5719-llvm-5a45db3e6cd43d00b4fef87fab4bfae7ee1b0136.zip
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
llvm-svn: 113247
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index e496365de2e..a98de5bc7b2 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/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!
OpenPOWER on IntegriCloud