From 5a45db3e6cd43d00b4fef87fab4bfae7ee1b0136 Mon Sep 17 00:00:00 2001 From: Bruno Cardoso Lopes Date: Tue, 7 Sep 2010 18:41:45 +0000 Subject: [PATCH] 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 --- llvm/lib/Target/X86/X86ISelLowering.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index e496365de2eb..a98de5bc7b24 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!