[cfe-commits] r148902 - in /cfe/trunk/lib/CodeGen: CGBuiltin.cpp CGExpr.cpp CGExprScalar.cpp

Argyrios Kyrtzidis kyrtzidis at apple.com
Tue Jan 24 19:02:46 PST 2012


Reverted in r148907, since this was part of 148901 which was reverted in r148906.

-Argyrios

On Jan 24, 2012, at 6:06 PM, Chris Lattner wrote:

> Author: lattner
> Date: Tue Jan 24 20:06:10 2012
> New Revision: 148902
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=148902&view=rev
> Log:
> use the new ConstantVector::getSplat method where it makes sense.
> 
> Modified:
>    cfe/trunk/lib/CodeGen/CGBuiltin.cpp
>    cfe/trunk/lib/CodeGen/CGExpr.cpp
>    cfe/trunk/lib/CodeGen/CGExprScalar.cpp
> 
> Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=148902&r1=148901&r2=148902&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Tue Jan 24 20:06:10 2012
> @@ -1212,8 +1212,7 @@
> 
> Value *CodeGenFunction::EmitNeonSplat(Value *V, Constant *C) {
>   unsigned nElts = cast<llvm::VectorType>(V->getType())->getNumElements();
> -  SmallVector<Constant*, 16> Indices(nElts, C);
> -  Value* SV = llvm::ConstantVector::get(Indices);
> +  Value* SV = llvm::ConstantVector::getSplat(nElts, C);
>   return Builder.CreateShuffleVector(V, V, SV, "lane");
> }
> 
> @@ -1233,13 +1232,11 @@
> 
> Value *CodeGenFunction::EmitNeonShiftVector(Value *V, llvm::Type *Ty, 
>                                             bool neg) {
> -  ConstantInt *CI = cast<ConstantInt>(V);
> -  int SV = CI->getSExtValue();
> +  int SV = cast<ConstantInt>(V)->getSExtValue();
> 
>   llvm::VectorType *VTy = cast<llvm::VectorType>(Ty);
>   llvm::Constant *C = ConstantInt::get(VTy->getElementType(), neg ? -SV : SV);
> -  SmallVector<llvm::Constant*, 16> CV(VTy->getNumElements(), C);
> -  return llvm::ConstantVector::get(CV);
> +  return llvm::ConstantVector::getSplat(VTy->getNumElements(), C);
> }
> 
> /// GetPointeeAlignment - Given an expression with a pointer type, find the
> @@ -1957,8 +1954,8 @@
>     for (unsigned vi = 0; vi != 2; ++vi) {
>       SmallVector<Constant*, 16> Indices;
>       for (unsigned i = 0, e = VTy->getNumElements(); i != e; i += 2) {
> -        Indices.push_back(ConstantInt::get(Int32Ty, i+vi));
> -        Indices.push_back(ConstantInt::get(Int32Ty, i+e+vi));
> +        Indices.push_back(Builder.getInt32(i+vi));
> +        Indices.push_back(Builder.getInt32(i+e+vi));
>       }
>       Value *Addr = Builder.CreateConstInBoundsGEP1_32(Ops[0], vi);
>       SV = llvm::ConstantVector::get(Indices);
> @@ -2019,7 +2016,7 @@
> 
>   // If this is a constant vector, create a ConstantVector.
>   if (AllConstants) {
> -    std::vector<llvm::Constant*> CstOps;
> +    SmallVector<llvm::Constant*, 16> CstOps;
>     for (unsigned i = 0, e = Ops.size(); i != e; ++i)
>       CstOps.push_back(cast<Constant>(Ops[i]));
>     return llvm::ConstantVector::get(CstOps);
> @@ -2030,8 +2027,7 @@
>     llvm::UndefValue::get(llvm::VectorType::get(Ops[0]->getType(), Ops.size()));
> 
>   for (unsigned i = 0, e = Ops.size(); i != e; ++i)
> -    Result = Builder.CreateInsertElement(Result, Ops[i],
> -               llvm::ConstantInt::get(llvm::Type::getInt32Ty(getLLVMContext()), i));
> +    Result = Builder.CreateInsertElement(Result, Ops[i], Builder.getInt32(i));
> 
>   return Result;
> }
> 
> Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?rev=148902&r1=148901&r2=148902&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGExpr.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGExpr.cpp Tue Jan 24 20:06:10 2012
> @@ -952,10 +952,8 @@
>   unsigned NumResultElts = ExprVT->getNumElements();
> 
>   SmallVector<llvm::Constant*, 4> Mask;
> -  for (unsigned i = 0; i != NumResultElts; ++i) {
> -    unsigned InIdx = getAccessedFieldNo(i, Elts);
> -    Mask.push_back(llvm::ConstantInt::get(Int32Ty, InIdx));
> -  }
> +  for (unsigned i = 0; i != NumResultElts; ++i)
> +    Mask.push_back(Builder.getInt32(getAccessedFieldNo(i, Elts)));
> 
>   llvm::Value *MaskV = llvm::ConstantVector::get(Mask);
>   Vec = Builder.CreateShuffleVector(Vec, llvm::UndefValue::get(Vec->getType()),
> @@ -1175,10 +1173,8 @@
>       // elements and restore the vector mask since it is on the side it will be
>       // stored.
>       SmallVector<llvm::Constant*, 4> Mask(NumDstElts);
> -      for (unsigned i = 0; i != NumSrcElts; ++i) {
> -        unsigned InIdx = getAccessedFieldNo(i, Elts);
> -        Mask[InIdx] = llvm::ConstantInt::get(Int32Ty, i);
> -      }
> +      for (unsigned i = 0; i != NumSrcElts; ++i)
> +        Mask[getAccessedFieldNo(i, Elts)] = Builder.getInt32(i);
> 
>       llvm::Value *MaskV = llvm::ConstantVector::get(Mask);
>       Vec = Builder.CreateShuffleVector(SrcVal,
> @@ -1192,7 +1188,7 @@
>       SmallVector<llvm::Constant*, 4> ExtMask;
>       unsigned i;
>       for (i = 0; i != NumSrcElts; ++i)
> -        ExtMask.push_back(llvm::ConstantInt::get(Int32Ty, i));
> +        ExtMask.push_back(Builder.getInt32(i));
>       for (; i != NumDstElts; ++i)
>         ExtMask.push_back(llvm::UndefValue::get(Int32Ty));
>       llvm::Value *ExtMaskV = llvm::ConstantVector::get(ExtMask);
> @@ -1203,13 +1199,11 @@
>       // build identity
>       SmallVector<llvm::Constant*, 4> Mask;
>       for (unsigned i = 0; i != NumDstElts; ++i)
> -        Mask.push_back(llvm::ConstantInt::get(Int32Ty, i));
> +        Mask.push_back(Builder.getInt32(i));
> 
>       // modify when what gets shuffled in
> -      for (unsigned i = 0; i != NumSrcElts; ++i) {
> -        unsigned Idx = getAccessedFieldNo(i, Elts);
> -        Mask[Idx] = llvm::ConstantInt::get(Int32Ty, i+NumDstElts);
> -      }
> +      for (unsigned i = 0; i != NumSrcElts; ++i)
> +        Mask[getAccessedFieldNo(i, Elts)] = Builder.getInt32(i+NumDstElts);
>       llvm::Value *MaskV = llvm::ConstantVector::get(Mask);
>       Vec = Builder.CreateShuffleVector(Vec, ExtSrcVal, MaskV);
>     } else {
> @@ -1734,13 +1728,11 @@
> }
> 
> static
> -llvm::Constant *GenerateConstantVector(llvm::LLVMContext &VMContext,
> +llvm::Constant *GenerateConstantVector(llvm::IRBuilder<> &Builder,
>                                        SmallVector<unsigned, 4> &Elts) {
>   SmallVector<llvm::Constant*, 4> CElts;
> -
> -  llvm::Type *Int32Ty = llvm::Type::getInt32Ty(VMContext);
>   for (unsigned i = 0, e = Elts.size(); i != e; ++i)
> -    CElts.push_back(llvm::ConstantInt::get(Int32Ty, Elts[i]));
> +    CElts.push_back(Builder.getInt32(Elts[i]));
> 
>   return llvm::ConstantVector::get(CElts);
> }
> @@ -1783,7 +1775,7 @@
>   E->getEncodedElementAccess(Indices);
> 
>   if (Base.isSimple()) {
> -    llvm::Constant *CV = GenerateConstantVector(getLLVMContext(), Indices);
> +    llvm::Constant *CV = GenerateConstantVector(Builder, Indices);
>     return LValue::MakeExtVectorElt(Base.getAddress(), CV, type);
>   }
>   assert(Base.isExtVectorElt() && "Can only subscript lvalue vec elts here!");
> 
> Modified: cfe/trunk/lib/CodeGen/CGExprScalar.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprScalar.cpp?rev=148902&r1=148901&r2=148902&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGExprScalar.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGExprScalar.cpp Tue Jan 24 20:06:10 2012
> @@ -612,10 +612,8 @@
>     // Splat the element across to all elements
>     SmallVector<llvm::Constant*, 16> Args;
>     unsigned NumElements = cast<llvm::VectorType>(DstTy)->getNumElements();
> -    for (unsigned i = 0; i != NumElements; ++i)
> -      Args.push_back(Builder.getInt32(0));
> -
> -    llvm::Constant *Mask = llvm::ConstantVector::get(Args);
> +    llvm::Constant *Mask = llvm::ConstantVector::getSplat(NumElements,
> +                                                          Builder.getInt32(0));
>     llvm::Value *Yay = Builder.CreateShuffleVector(UnV, UnV, Mask, "splat");
>     return Yay;
>   }
> @@ -749,11 +747,8 @@
>                                        (1 << llvm::Log2_32(LHSElts))-1);
> 
>     // Mask off the high bits of each shuffle index.
> -    SmallVector<llvm::Constant *, 32> MaskV;
> -    for (unsigned i = 0, e = MTy->getNumElements(); i != e; ++i)
> -      MaskV.push_back(EltMask);
> -    
> -    Value* MaskBits = llvm::ConstantVector::get(MaskV);
> +    Value *MaskBits = llvm::ConstantVector::getSplat(MTy->getNumElements(),
> +                                                     EltMask);
>     Mask = Builder.CreateAnd(Mask, MaskBits, "mask");
> 
>     // newv = undef
> @@ -1206,10 +1201,7 @@
>     SmallVector<llvm::Constant*, 16> Args;
>     unsigned NumElements = cast<llvm::VectorType>(DstTy)->getNumElements();
>     llvm::Constant *Zero = Builder.getInt32(0);
> -    for (unsigned i = 0; i < NumElements; i++)
> -      Args.push_back(Zero);
> -
> -    llvm::Constant *Mask = llvm::ConstantVector::get(Args);
> +    llvm::Constant *Mask = llvm::ConstantVector::getSplat(NumElements, Zero);
>     llvm::Value *Yay = Builder.CreateShuffleVector(UnV, UnV, Mask, "splat");
>     return Yay;
>   }
> @@ -2596,11 +2588,7 @@
>     unsigned numElem = vecTy->getNumElements();      
>     llvm::Type *elemType = vecTy->getElementType();
> 
> -    std::vector<llvm::Constant*> Zvals;
> -    for (unsigned i = 0; i < numElem; ++i)
> -      Zvals.push_back(llvm::ConstantInt::get(elemType, 0));
> -
> -    llvm::Value *zeroVec = llvm::ConstantVector::get(Zvals);    
> +    llvm::Value *zeroVec = llvm::Constant::getNullValue(vecTy);
>     llvm::Value *TestMSB = Builder.CreateICmpSLT(CondV, zeroVec);
>     llvm::Value *tmp = Builder.CreateSExt(TestMSB, 
>                                           llvm::VectorType::get(elemType,
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits




More information about the cfe-commits mailing list