Lines Matching full:builder

145   /// \p Builder
151 Value *createStepVector(IRBuilder<> &Builder, Type *LaneTy,
157 /// \p Builder
164 Value *convertEVLToMask(IRBuilder<> &Builder, Value *EVLParam,
174 Value *expandPredicationInBinaryOperator(IRBuilder<> &Builder,
178 Value *expandPredicationToIntCall(IRBuilder<> &Builder, VPIntrinsic &PI,
182 Value *expandPredicationToFPCall(IRBuilder<> &Builder, VPIntrinsic &PI,
186 Value *expandPredicationInReduction(IRBuilder<> &Builder,
190 Value *expandPredicationToCastIntrinsic(IRBuilder<> &Builder,
194 Value *expandPredicationInMemoryIntrinsic(IRBuilder<> &Builder,
198 Value *expandPredicationInComparison(IRBuilder<> &Builder,
218 Value *CachingVPExpander::createStepVector(IRBuilder<> &Builder, Type *LaneTy,
229 Value *CachingVPExpander::convertEVLToMask(IRBuilder<> &Builder,
235 auto *M = Builder.GetInsertBlock()->getModule();
236 Type *BoolVecTy = VectorType::get(Builder.getInt1Ty(), ElemCount);
240 Value *ConstZero = Builder.getInt32(0);
241 return Builder.CreateCall(ActiveMaskFunc, {ConstZero, EVLParam});
247 Value *VLSplat = Builder.CreateVectorSplat(NumElems, EVLParam);
248 Value *IdxVec = createStepVector(Builder, LaneTy, NumElems);
249 return Builder.CreateICmp(CmpInst::ICMP_ULT, IdxVec, VLSplat);
253 CachingVPExpander::expandPredicationInBinaryOperator(IRBuilder<> &Builder,
279 Op1 = Builder.CreateSelect(Mask, Op1, SafeDivisor);
283 Value *NewBinOp = Builder.CreateBinOp(OC, Op0, Op1, VPI.getName());
290 IRBuilder<> &Builder, VPIntrinsic &VPI, unsigned UnpredicatedIntrinsicID) {
301 Value *NewOp = Builder.CreateCall(Fn, {Op0, Op1}, VPI.getName());
310 Value *NewOp = Builder.CreateCall(Fn, {Op}, VPI.getName());
319 IRBuilder<> &Builder, VPIntrinsic &VPI, unsigned UnpredicatedIntrinsicID) {
329 Value *NewOp = Builder.CreateCall(Fn, {Op0}, VPI.getName());
339 Value *NewOp = Builder.CreateCall(Fn, {Op0, Op1}, VPI.getName());
355 Builder.CreateConstrainedFPCall(Fn, {Op0, Op1, Op2}, VPI.getName());
357 NewOp = Builder.CreateCall(Fn, {Op0, Op1, Op2}, VPI.getName());
415 CachingVPExpander::expandPredicationInReduction(IRBuilder<> &Builder,
426 auto *NeutralVector = Builder.CreateVectorSplat(
428 RedOp = Builder.CreateSelect(Mask, RedOp, NeutralVector);
438 Reduction = Builder.CreateAddReduce(RedOp);
439 Reduction = Builder.CreateAdd(Reduction, Start);
442 Reduction = Builder.CreateMulReduce(RedOp);
443 Reduction = Builder.CreateMul(Reduction, Start);
446 Reduction = Builder.CreateAndReduce(RedOp);
447 Reduction = Builder.CreateAnd(Reduction, Start);
450 Reduction = Builder.CreateOrReduce(RedOp);
451 Reduction = Builder.CreateOr(Reduction, Start);
454 Reduction = Builder.CreateXorReduce(RedOp);
455 Reduction = Builder.CreateXor(Reduction, Start);
458 Reduction = Builder.CreateIntMaxReduce(RedOp, /*IsSigned*/ true);
460 Builder.CreateBinaryIntrinsic(Intrinsic::smax, Reduction, Start);
463 Reduction = Builder.CreateIntMinReduce(RedOp, /*IsSigned*/ true);
465 Builder.CreateBinaryIntrinsic(Intrinsic::smin, Reduction, Start);
468 Reduction = Builder.CreateIntMaxReduce(RedOp, /*IsSigned*/ false);
470 Builder.CreateBinaryIntrinsic(Intrinsic::umax, Reduction, Start);
473 Reduction = Builder.CreateIntMinReduce(RedOp, /*IsSigned*/ false);
475 Builder.CreateBinaryIntrinsic(Intrinsic::umin, Reduction, Start);
478 Reduction = Builder.CreateFPMaxReduce(RedOp);
481 Builder.CreateBinaryIntrinsic(Intrinsic::maxnum, Reduction, Start);
484 Reduction = Builder.CreateFPMinReduce(RedOp);
487 Builder.CreateBinaryIntrinsic(Intrinsic::minnum, Reduction, Start);
490 Reduction = Builder.CreateFPMaximumReduce(RedOp);
493 Builder.CreateBinaryIntrinsic(Intrinsic::maximum, Reduction, Start);
496 Reduction = Builder.CreateFPMinimumReduce(RedOp);
499 Builder.CreateBinaryIntrinsic(Intrinsic::minimum, Reduction, Start);
502 Reduction = Builder.CreateFAddReduce(Start, RedOp);
505 Reduction = Builder.CreateFMulReduce(Start, RedOp);
513 Value *CachingVPExpander::expandPredicationToCastIntrinsic(IRBuilder<> &Builder,
521 Builder.CreateSExt(VPI.getOperand(0), VPI.getType(), VPI.getName());
525 Builder.CreateZExt(VPI.getOperand(0), VPI.getType(), VPI.getName());
529 Builder.CreateTrunc(VPI.getOperand(0), VPI.getType(), VPI.getName());
533 Builder.CreateIntToPtr(VPI.getOperand(0), VPI.getType(), VPI.getName());
537 Builder.CreatePtrToInt(VPI.getOperand(0), VPI.getType(), VPI.getName());
541 Builder.CreateFPToSI(VPI.getOperand(0), VPI.getType(), VPI.getName());
546 Builder.CreateFPToUI(VPI.getOperand(0), VPI.getType(), VPI.getName());
550 Builder.CreateSIToFP(VPI.getOperand(0), VPI.getType(), VPI.getName());
554 Builder.CreateUIToFP(VPI.getOperand(0), VPI.getType(), VPI.getName());
558 Builder.CreateFPTrunc(VPI.getOperand(0), VPI.getType(), VPI.getName());
562 Builder.CreateFPExt(VPI.getOperand(0), VPI.getType(), VPI.getName());
570 CachingVPExpander::expandPredicationInMemoryIntrinsic(IRBuilder<> &Builder,
590 Builder.CreateStore(DataParam, PtrParam, /*IsVolatile*/ false);
595 NewMemoryInst = Builder.CreateMaskedStore(
602 Builder.CreateLoad(VPI.getType(), PtrParam, /*IsVolatile*/ false);
607 NewMemoryInst = Builder.CreateMaskedLoad(
614 NewMemoryInst = Builder.CreateMaskedScatter(
621 NewMemoryInst = Builder.CreateMaskedGather(
634 Value *CachingVPExpander::expandPredicationInComparison(IRBuilder<> &Builder,
646 auto *NewCmp = Builder.CreateCmp(Pred, Op0, Op1);
670 IRBuilder<> Builder(VPI.getParent(), VPI.getIterator());
671 Value *FactorConst = Builder.getInt32(StaticElemCount.getKnownMinValue());
672 Value *VScale = Builder.CreateCall(VScaleFunc, {}, "vscale");
673 MaxEVL = Builder.CreateMul(VScale, FactorConst, "scalable_size",
684 IRBuilder<> Builder(&VPI);
701 Value *VLMask = convertEVLToMask(Builder, OldEVLParam, ElemCount);
702 Value *NewMaskParam = Builder.CreateAnd(VLMask, OldMaskParam);
717 IRBuilder<> Builder(&VPI);
723 return expandPredicationInBinaryOperator(Builder, VPI);
726 return expandPredicationInReduction(Builder, *VPRI);
729 return expandPredicationInComparison(Builder, *VPCmp);
732 return expandPredicationToCastIntrinsic(Builder, VPI);
739 Value *NewNegOp = Builder.CreateFNeg(VPI.getOperand(0), VPI.getName());
750 return expandPredicationToIntCall(Builder, VPI,
760 return expandPredicationToFPCall(Builder, VPI,
766 return expandPredicationInMemoryIntrinsic(Builder, VPI);
770 if (Value *Call = expandPredicationToFPCall(Builder, VPI, *CID))