[llvm-commits] [llvm] r72356 - /llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp

Eli Friedman eli.friedman at gmail.com
Sat May 23 19:03:37 PDT 2009


Author: efriedma
Date: Sat May 23 21:03:36 2009
New Revision: 72356

URL: http://llvm.org/viewvc/llvm-project?rev=72356&view=rev
Log:
Make the PPC backend use a legal type for the operands to the BUILD_VECTOR
nodes it generates.


Modified:
    llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp

Modified: llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp?rev=72356&r1=72355&r2=72356&view=diff

==============================================================================
--- llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp Sat May 23 21:03:36 2009
@@ -698,15 +698,13 @@
 
   if (OpVal.getNode() == 0) return SDValue();  // All UNDEF: use implicit def.
 
-  unsigned ValSizeInBytes = 0;
+  unsigned ValSizeInBytes = EltSize;
   uint64_t Value = 0;
   if (ConstantSDNode *CN = dyn_cast<ConstantSDNode>(OpVal)) {
     Value = CN->getZExtValue();
-    ValSizeInBytes = CN->getValueType(0).getSizeInBits()/8;
   } else if (ConstantFPSDNode *CN = dyn_cast<ConstantFPSDNode>(OpVal)) {
     assert(CN->getValueType(0) == MVT::f32 && "Only one legal FP vector type!");
     Value = FloatToBits(CN->getValueAPF().convertToFloat());
-    ValSizeInBytes = 4;
   }
 
   // If the splat value is larger than the element value, then we can never do
@@ -3113,7 +3111,7 @@
   MVT CanonicalVT = VTys[SplatSize-1];
 
   // Build a canonical splat for this value.
-  SDValue Elt = DAG.getConstant(Val, CanonicalVT.getVectorElementType());
+  SDValue Elt = DAG.getConstant(Val, MVT::i32);
   SmallVector<SDValue, 8> Ops;
   Ops.assign(CanonicalVT.getVectorNumElements(), Elt);
   SDValue Res = DAG.getNode(ISD::BUILD_VECTOR, dl, CanonicalVT,
@@ -3515,7 +3513,7 @@
 
     for (unsigned j = 0; j != BytesPerElement; ++j)
       ResultMask.push_back(DAG.getConstant(SrcElt*BytesPerElement+j,
-                                           MVT::i8));
+                                           MVT::i32));
   }
 
   SDValue VPermMask = DAG.getNode(ISD::BUILD_VECTOR, dl, MVT::v16i8,





More information about the llvm-commits mailing list