[llvm] [IR] Change getParamIndexForOptionalMask to assume masked parameter is last (PR #180558)

Graham Hunter via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 12 06:04:52 PST 2026


================
@@ -132,11 +132,22 @@ struct VFInfo {
   /// if any exist.
   std::optional<unsigned> getParamIndexForOptionalMask() const {
     unsigned ParamCount = Shape.Parameters.size();
-    for (unsigned i = 0; i < ParamCount; ++i)
-      if (Shape.Parameters[i].ParamKind == VFParamKind::GlobalPredicate)
-        return i;
 
-    return std::nullopt;
+#ifndef NDEBUG
+    unsigned NumMaskParams =
+        llvm::count_if(Shape.Parameters, [](const VFParameter &I) {
+          return I.ParamKind == VFParamKind::GlobalPredicate;
+        });
+    assert(NumMaskParams <= 1 && "Unexpected number of mask parameters");
+    assert((!NumMaskParams || Shape.Parameters[ParamCount - 1].ParamKind ==
+                                  VFParamKind::GlobalPredicate) &&
+           "Mask parameter in unexpected position");
+#endif
+
+    if (!ParamCount || Shape.Parameters[ParamCount - 1].ParamKind !=
----------------
huntergr-arm wrote:

(optional) nit: Perhaps we don't need ParamCount, and could use

```
  if (Shape.Parameters.empty() || Shape.Parameters.back().ParamKind != VFParamKind::GlobalPredicate)
    return std::nullopt;

  return Shape.Parameters.size() - 1;
```

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


More information about the llvm-commits mailing list