reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Transforms/Vectorize/LoopVectorize.cpp
 1664   IRBuilder<>::InsertPointGuard Guard(Builder);
 1666     Builder.SetInsertPoint(LoopVectorPreHeader->getTerminator());
 1669   Value *Shuf = Builder.CreateVectorSplat(VF, V, "broadcast");
 1681   auto CurrIP = Builder.saveIP();
 1682   Builder.SetInsertPoint(LoopVectorPreHeader->getTerminator());
 1687     Step = Builder.CreateTrunc(Step, TruncType);
 1688     Start = Builder.CreateCast(Instruction::Trunc, Start, TruncType);
 1690   Value *SplatStart = Builder.CreateVectorSplat(VF, Start);
 1709   Value *Mul = addFastMathFlag(Builder.CreateBinOp(MulOp, Step, ConstVF));
 1718                        : Builder.CreateVectorSplat(VF, Mul);
 1719   Builder.restoreIP(CurrIP);
 1735         Builder.CreateBinOp(AddOp, LastInduction, SplatVF, "step.add")));
 1851                      ? Builder.CreateSExtOrTrunc(Induction, IV->getType())
 1852                      : Builder.CreateCast(Instruction::SIToFP, Induction,
 1854       ScalarIV = emitTransformedIndex(Builder, ScalarIV, PSE.getSE(), DL, ID);
 1861       ScalarIV = Builder.CreateTrunc(ScalarIV, TruncType);
 1862       Step = Builder.CreateTrunc(Step, TruncType);
 1912     Step = Builder.CreateVectorSplat(VLen, Step);
 1916     Step = Builder.CreateMul(Cv, Step);
 1917     return Builder.CreateAdd(Val, Step, "induction");
 1930   Step = Builder.CreateVectorSplat(VLen, Step);
 1936   Value *MulOp = Builder.CreateFMul(Cv, Step);
 1941   Value *BOp = Builder.CreateBinOp(BinOp, Val, MulOp, "induction");
 1980       auto *Mul = addFastMathFlag(Builder.CreateBinOp(MulOp, StartIdx, Step));
 1981       auto *Add = addFastMathFlag(Builder.CreateBinOp(AddOp, ScalarIV, Mul));
 2028     auto OldIP = Builder.saveIP();
 2030     Builder.SetInsertPoint(&*NewIP);
 2050     Builder.restoreIP(OldIP);
 2092   return Builder.CreateExtractElement(U, Builder.getInt32(Instance.Lane));
 2092   return Builder.CreateExtractElement(U, Builder.getInt32(Instance.Lane));
 2103   VectorValue = Builder.CreateInsertElement(VectorValue, ScalarInst,
 2104                                             Builder.getInt32(Instance.Lane));
 2112     ShuffleMask.push_back(Builder.getInt32(VF - i - 1));
 2114   return Builder.CreateShuffleVector(Vec, UndefValue::get(Vec->getType()),
 2178   setDebugLocFromInst(Builder, Ptr);
 2218     NewPtr = Builder.CreateGEP(ScalarTy, NewPtr, Builder.getInt32(-Index));
 2218     NewPtr = Builder.CreateGEP(ScalarTy, NewPtr, Builder.getInt32(-Index));
 2223     NewPtrs.push_back(Builder.CreateBitCast(NewPtr, PtrTy));
 2226   setDebugLocFromInst(Builder, Instr);
 2231     MaskForGaps = createBitMaskForGaps(Builder, VF, *Group);
 2247           auto *RepMask = createReplicatedMask(Builder, InterleaveFactor, VF);
 2248           Value *ShuffledMask = Builder.CreateShuffleVector(
 2251                           ? Builder.CreateBinOp(Instruction::And, ShuffledMask,
 2256             Builder.CreateMaskedLoad(NewPtrs[Part], Group->getAlignment(),
 2260         NewLoad = Builder.CreateAlignedLoad(VecTy, NewPtrs[Part],
 2275       Constant *StrideMask = createStrideMask(Builder, I, InterleaveFactor, VF);
 2277         Value *StridedVec = Builder.CreateShuffleVector(
 2321     Value *WideVec = concatenateVectors(Builder, StoredVecs);
 2324     Constant *IMask = createInterleaveMask(Builder, VF, InterleaveFactor);
 2325     Value *IVec = Builder.CreateShuffleVector(WideVec, UndefVec, IMask,
 2331       auto *RepMask = createReplicatedMask(Builder, InterleaveFactor, VF);
 2332       Value *ShuffledMask = Builder.CreateShuffleVector(
 2334       NewStoreInstr = Builder.CreateMaskedStore(
 2338       NewStoreInstr = Builder.CreateAlignedStore(IVec, NewPtrs[Part], 
 2405           Builder.CreateGEP(ScalarDataTy, Ptr, Builder.getInt32(-Part * VF)));
 2405           Builder.CreateGEP(ScalarDataTy, Ptr, Builder.getInt32(-Part * VF)));
 2408           Builder.CreateGEP(ScalarDataTy, PartPtr, Builder.getInt32(1 - VF)));
 2408           Builder.CreateGEP(ScalarDataTy, PartPtr, Builder.getInt32(1 - VF)));
 2414           Builder.CreateGEP(ScalarDataTy, Ptr, Builder.getInt32(Part * VF)));
 2414           Builder.CreateGEP(ScalarDataTy, Ptr, Builder.getInt32(Part * VF)));
 2418     return Builder.CreateBitCast(PartPtr, DataTy->getPointerTo(AddressSpace));
 2423     setDebugLocFromInst(Builder, SI);
 2431         NewSI = Builder.CreateMaskedScatter(StoredVal, VectorGep,
 2443           NewSI = Builder.CreateMaskedStore(StoredVal, VecPtr,
 2447               Builder.CreateAlignedStore(StoredVal, VecPtr, Alignment.value());
 2456   setDebugLocFromInst(Builder, LI);
 2462       NewLI = Builder.CreateMaskedGather(VectorGep, Alignment.value(), MaskPart,
 2468         NewLI = Builder.CreateMaskedLoad(VecPtr, Alignment.value(), Mask[Part],
 2472         NewLI = Builder.CreateAlignedLoad(DataTy, VecPtr, Alignment.value(),
 2489   setDebugLocFromInst(Builder, Instr);
 2507   Builder.Insert(Cloned);
 2660     return Builder.CreateBitOrPointerCast(V, DstVTy);
 2673   Value *CastVal = Builder.CreateBitOrPointerCast(V, VecIntTy);
 2674   return Builder.CreateBitOrPointerCast(CastVal, DstVTy);
 3051   Value *CmpN = Builder.getTrue();
 3069   Builder.SetInsertPoint(&*VecBody->getFirstInsertionPt());
 3534     Builder.SetInsertPoint(LoopVectorPreHeader->getTerminator());
 3535     VectorInit = Builder.CreateInsertElement(
 3537         Builder.getInt32(VF - 1), "vector.recur.init");
 3542   Builder.SetInsertPoint(
 3547   auto *VecPhi = Builder.CreatePHI(VectorInit->getType(), 2, "vector.recur");
 3561     Builder.SetInsertPoint(&*LoopVectorBody->getFirstInsertionPt());
 3563     Builder.SetInsertPoint(
 3569   ShuffleMask[0] = Builder.getInt32(VF - 1);
 3571     ShuffleMask[I] = Builder.getInt32(I + VF - 1);
 3582         VF > 1 ? Builder.CreateShuffleVector(Incoming, PreviousPart,
 3598     Builder.SetInsertPoint(LoopMiddleBlock->getTerminator());
 3599     ExtractForScalar = Builder.CreateExtractElement(
 3600         ExtractForScalar, Builder.getInt32(VF - 1), "vector.recur.extract");
 3609     ExtractForPhiUsedOutsideLoop = Builder.CreateExtractElement(
 3610         Incoming, Builder.getInt32(VF - 2), "vector.recur.extract.for.phi");
 3619   Builder.SetInsertPoint(&*LoopScalarPreHeader->begin());
 3620   auto *Start = Builder.CreatePHI(Phi->getType(), 2, "scalar.recur.init");
 3642   Constant *Zero = Builder.getInt32(0);
 3654   setDebugLocFromInst(Builder, ReductionStartValue);
 3660   Builder.SetInsertPoint(LoopVectorPreHeader->getTerminator());
 3676         Builder.CreateVectorSplat(VF, ReductionStartValue, "minmax.ident");
 3693         Builder.CreateInsertElement(Identity, ReductionStartValue, Zero);
 3718   Builder.SetInsertPoint(&*LoopMiddleBlock->getFirstInsertionPt());
 3720   setDebugLocFromInst(Builder, LoopExitInst);
 3747     Builder.SetInsertPoint(
 3752       Value *Trunc = Builder.CreateTrunc(RdxParts[Part], RdxVecTy);
 3753       Value *Extnd = RdxDesc.isSigned() ? Builder.CreateSExt(Trunc, VecTy)
 3754                                         : Builder.CreateZExt(Trunc, VecTy);
 3764     Builder.SetInsertPoint(&*LoopMiddleBlock->getFirstInsertionPt());
 3766       RdxParts[Part] = Builder.CreateTrunc(RdxParts[Part], RdxVecTy);
 3782   setDebugLocFromInst(Builder, LoopMiddleBlock->getTerminator());
 3788           Builder.CreateBinOp((Instruction::BinaryOps)Op, RdxPart,
 3792       ReducedPartRdx = createMinMaxOp(Builder, MinMaxKind, ReducedPartRdx,
 3799         createTargetReduction(Builder, TTI, RdxDesc, ReducedPartRdx, NoNaN);
 3805         ? Builder.CreateSExt(ReducedPartRdx, Phi->getType())
 3806         : Builder.CreateZExt(ReducedPartRdx, Phi->getType());
 3856       Builder.SetInsertPoint(LoopMiddleBlock->getTerminator());
 3945     Builder.SetInsertPoint(NewPhi);
 3974     Value *VecPhi = Builder.CreatePHI(VecTy, PN->getNumOperands(), "vec.phi");
 4000   setDebugLocFromInst(Builder, P);
 4022     PtrInd = Builder.CreateSExtOrTrunc(PtrInd, II.getStep()->getType());
 4032         Value *GlobalIdx = Builder.CreateAdd(PtrInd, Idx);
 4034             emitTransformedIndex(Builder, GlobalIdx, PSE.getSE(), DL, II);
 4088       auto *Clone = Builder.Insert(GEP->clone());
 4090         Value *EntryPart = Builder.CreateVectorSplat(VF, Clone);
 4124                 ? Builder.CreateInBoundsGEP(GEP->getSourceElementType(), Ptr,
 4126                 : Builder.CreateGEP(GEP->getSourceElementType(), Ptr, Indices);
 4156     setDebugLocFromInst(Builder, &I);
 4163       Value *V = Builder.CreateNAryOp(I.getOpcode(), Ops);
 4182     setDebugLocFromInst(Builder, &I);
 4196           Builder.CreateSelect(InvariantCond ? ScalarCond : Cond, Op0, Op1);
 4209     setDebugLocFromInst(Builder, Cmp);
 4216         IRBuilder<>::FastMathFlagGuard FMFG(Builder);
 4217         Builder.setFastMathFlags(Cmp->getFastMathFlags());
 4218         C = Builder.CreateFCmp(Cmp->getPredicate(), A, B);
 4220         C = Builder.CreateICmp(Cmp->getPredicate(), A, B);
 4242     setDebugLocFromInst(Builder, CI);
 4250       Value *Cast = Builder.CreateCast(CI->getOpcode(), A, DestTy);
 4261     setDebugLocFromInst(Builder, &I);
 4320       CallInst *V = Builder.CreateCall(VectorF, Args, OpBundles);
 6500                          DT,     ILV.Builder, ILV.VectorLoopValueMap,
 6573     Value *MulOp = addFastMathFlag(Builder.CreateFMul(C, Step));
 6574     return addFastMathFlag(Builder.CreateBinOp(BinOp, Val, MulOp));
 6577   return Builder.CreateAdd(Val, Builder.CreateMul(C, Step), "induction");
 6577   return Builder.CreateAdd(Val, Builder.CreateMul(C, Step), "induction");