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 > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
