[llvm] [VPlan] Materialize VF and VFxUF using VPInstructions. (PR #152879)
Luke Lau via llvm-commits
llvm-commits at lists.llvm.org
Sun Aug 10 22:05:34 PDT 2025
================
@@ -3339,6 +3339,50 @@ void VPlanTransforms::materializeVectorTripCount(VPlan &Plan,
VectorTC.replaceAllUsesWith(Res);
}
+void VPlanTransforms::materializeVFAndVFxUF(VPlan &Plan, VPBasicBlock *VectorPH,
+ ElementCount VFEC) {
+ VPBuilder Builder(VectorPH, VectorPH->begin());
+ auto *TCTy = VPTypeAnalysis(Plan).inferScalarType(Plan.getTripCount());
+ VPValue &VF = Plan.getVF();
+ VPValue &VFxUF = Plan.getVFxUF();
+ if (VF.getNumUsers()) {
+ VPValue *RuntimeVF =
+ Plan.getOrAddLiveIn(ConstantInt::get(TCTy, VFEC.getKnownMinValue()));
+ if (VFEC.isScalable())
+ RuntimeVF = Builder.createNaryOp(
+ Instruction::Mul,
+ {Builder.createNaryOp(VPInstruction::VScale, {}, TCTy), RuntimeVF},
+ VPIRFlags::WrapFlagsTy(true, false));
----------------
lukel97 wrote:
Should we add a `VPBuilder::createElementCount` helper to mirror `IRBuilderBase::CreateElementCount`? We could also move in the `VFMulUF == 1` simplification from below into it.
https://github.com/llvm/llvm-project/pull/152879
More information about the llvm-commits
mailing list