[llvm] [ConstantFolding] Fold scalable get_active_lane_masks (PR #156659)

David Green via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 3 23:48:47 PDT 2025


================
@@ -4238,6 +4238,13 @@ static Constant *ConstantFoldScalableVectorCall(
 
     return ConstantInt::getFalse(SVTy);
   }
+  case Intrinsic::get_active_lane_mask: {
+    auto Op0 = cast<ConstantInt>(Operands[0])->getValue();
+    auto Op1 = cast<ConstantInt>(Operands[1])->getValue();
+    if ((Op0.uge(Op1) && (!Op1.isZero())))
----------------
davemgreen wrote:

I don't think this needs a check for Op1.isZero. It is perfectly valid to refine poison to zero.

It would be converting the whilelo -> get_active_lane_mask that would be invalid, if zero produced poison, as it converts from zero->poison.

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


More information about the llvm-commits mailing list