[llvm-commits] [llvm] r113050 - /llvm/trunk/lib/Target/X86/X86ISelLowering.cpp

Bruno Cardoso Lopes bruno.cardoso at gmail.com
Fri Sep 3 18:36:46 PDT 2010


Author: bruno
Date: Fri Sep  3 20:36:45 2010
New Revision: 113050

URL: http://llvm.org/viewvc/llvm-project?rev=113050&view=rev
Log:
Emit target specific nodes for isPSHUFHWMask and isPSHUFLWMask

Modified:
    llvm/trunk/lib/Target/X86/X86ISelLowering.cpp

Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=113050&r1=113049&r2=113050&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Fri Sep  3 20:36:45 2010
@@ -5471,11 +5471,19 @@
   // FIXME: pshufb, blends, shifts.
   if (VT.getVectorNumElements() == 2 ||
       ShuffleVectorSDNode::isSplatMask(&M[0], VT) ||
-      isPSHUFHWMask(M, VT) ||
-      isPSHUFLWMask(M, VT) ||
       isPALIGNRMask(M, VT, Subtarget->hasSSSE3()))
     return Op;
 
+  if (isPSHUFHWMask(M, VT))
+    return getTargetShuffleNode(X86ISD::PSHUFHW, dl, VT, V1,
+                                X86::getShufflePSHUFHWImmediate(SVOp),
+                                DAG);
+
+  if (isPSHUFLWMask(M, VT))
+    return getTargetShuffleNode(X86ISD::PSHUFLW, dl, VT, V1,
+                                X86::getShufflePSHUFLWImmediate(SVOp),
+                                DAG);
+
   if (isSHUFPMask(M, VT)) {
     unsigned TargetMask = X86::getShuffleSHUFImmediate(SVOp);
     if (VT == MVT::v4f32 || VT == MVT::v4i32)





More information about the llvm-commits mailing list