[llvm] [LV] Add initial support for partial alias masking (PR #177599)
Benjamin Maxwell via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 9 03:44:11 PST 2026
================
@@ -4954,6 +4955,58 @@ void VPlanTransforms::materializeVFAndVFxUF(VPlan &Plan, VPBasicBlock *VectorPH,
VFxUF.replaceAllUsesWith(MulByUF);
}
+VPValue *
+VPlanTransforms::materializeAliasMask(VPlan &Plan, VPBasicBlock *AliasCheck,
+ ArrayRef<PointerDiffInfo> DiffChecks) {
+ VPValue &AliasMask = Plan.getAliasMask();
+ VPBuilder Builder(AliasCheck, AliasCheck->begin());
+ Type *I1Ty = IntegerType::getInt1Ty(Plan.getContext());
+ Type *I64Ty = IntegerType::getInt64Ty(Plan.getContext());
+ Type *PtrTy = PointerType::getUnqual(Plan.getContext());
+
+ VPValue *Mask = nullptr;
+ for (PointerDiffInfo Check : DiffChecks) {
+ VPValue *Src = vputils::getOrCreateVPValueForSCEVExpr(Plan, Check.SrcStart);
+ VPValue *Sink =
+ vputils::getOrCreateVPValueForSCEVExpr(Plan, Check.SinkStart);
+
+ VPValue *SrcPtr =
+ Builder.createScalarCast(Instruction::CastOps::IntToPtr, Src, PtrTy,
+ DebugLoc::getCompilerGenerated());
----------------
MacDue wrote:
The SCEV expansion inserts pointer-to-integer casts, I'm not sure if that can be avoided, but they should fold away.
https://github.com/llvm/llvm-project/pull/177599
More information about the llvm-commits
mailing list