[llvm] [LV] Mask off possibly aliasing vector lanes (PR #100579)

Florian Hahn via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 11 05:51:09 PST 2025


================
@@ -4252,7 +4279,52 @@ void VPWidenPointerInductionRecipe::print(raw_ostream &O, const Twine &Indent,
     getOperand(4)->printAsOperand(O, SlotTracker);
   }
 }
+#endif
+
+void VPAliasLaneMaskRecipe::execute(VPTransformState &State) {
+  IRBuilderBase Builder = State.Builder;
+  Value *SinkValue = State.get(getSinkValue(), true);
+  Value *SourceValue = State.get(getSourceValue(), true);
+
+  unsigned IntrinsicID = WriteAfterRead ? Intrinsic::loop_dependence_war_mask
+                                        : Intrinsic::loop_dependence_raw_mask;
+  Value *SourceAsPtr = Builder.CreateCast(Instruction::IntToPtr, SourceValue,
+                                          Builder.getPtrTy());
+  Value *SinkAsPtr =
+      Builder.CreateCast(Instruction::IntToPtr, SinkValue, Builder.getPtrTy());
+  Value *AliasMask = Builder.CreateIntrinsic(
----------------
fhahn wrote:

This basically lowers to a wide intrinsic, can this simply use VPWidenIntrinsicReicpe?

https://github.com/llvm/llvm-project/pull/100579


More information about the llvm-commits mailing list