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 | 5a45db3e6cd43d00b4fef87fab4bfae7ee1b0136 (patch) | |
| tree | e2e80a0b9bfe07d70c32bbc2f8d4c73fa8db1ffe /llvm/lib | |
| parent | 8499f47ef45d8a9ae7b8efd417453ef21fe8d117 (diff) | |
| download | bcm5719-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.cpp | 12 |
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! |

