[llvm] [Intrinsics][AArch64] Add intrinsic to mask off aliasing vector lanes (PR #117007)

Sander de Smalen via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 1 03:19:36 PDT 2025


================
@@ -8244,6 +8244,16 @@ void SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I,
     visitVectorExtractLastActive(I, Intrinsic);
     return;
   }
+  case Intrinsic::loop_dependence_war_mask:
+  case Intrinsic::loop_dependence_raw_mask: {
+    auto IntrinsicVT = EVT::getEVT(I.getType());
+    unsigned ID = Intrinsic == Intrinsic::loop_dependence_war_mask
+                      ? ISD::LOOP_DEPENDENCE_WAR_MASK
+                      : ISD::LOOP_DEPENDENCE_RAW_MASK;
+    setValue(&I,
+             DAG.getNode(ID, sdl, IntrinsicVT, getValue(I.getOperand(0)),
+                         getValue(I.getOperand(1)), getValue(I.getOperand(2))));
+  }
----------------
sdesmalen-arm wrote:

nit: Personally, I think it's more clear to split this out like this:
```suggestion
  case Intrinsic::loop_dependence_war_mask:
    setValue(&I,
             DAG.getNode(ISD::LOOP_DEPENDENCE_WAR_MASK, sdl, 
                         EVT::getEVT(I.getType()), getValue(I.getOperand(0)),
                         getValue(I.getOperand(1)), getValue(I.getOperand(2))));
    return;
  case Intrinsic::loop_dependence_raw_mask:
    setValue(&I,
             DAG.getNode(ISD::LOOP_DEPENDENCE_RAW_MASK, sdl,
                         EVT::getEVT(I.getType()), getValue(I.getOperand(0)),
                         getValue(I.getOperand(1)), getValue(I.getOperand(2))));
    return;
```

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


More information about the llvm-commits mailing list