diff options
author | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2010-09-07 18:41:45 +0000 |
---|---|---|
committer | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2010-09-07 18:41:45 +0000 |
commit | 58277b17c3c90512237cb84ca567e8884823aa59 (patch) | |
tree | eb6e54d27c786d15aed2f44aac41788b199c7722 | |
parent | 673bf78bb5104e28d7295bbca87ebdc2c237353e (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.cpp | 12 |
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! |