[Mlir-commits] [mlir] [mlir] Execute same operand name constraints before user constraints. (PR #162526)

Logan Chien llvmlistbot at llvm.org
Wed Oct 8 11:49:08 PDT 2025


================
@@ -206,6 +209,21 @@ func.func @verifyMultipleEqualArgs(
   return
 }
 
+func.func @verifyEqualArgsCheckBeforeUserConstraints(%arg0: i32, %arg1: f32) {
+  // def TestEqualArgsCheckBeforeUserConstraintsPattern :
+  //   Pat<(OpQ $x, $x),
----------------
loganchien wrote:

Maybe:

```
Pat<(OpQ:$op $x, $x),
    (replaceWithValue $x),
    [(AssertOperandsAreSame $op)]>;
```

and inside `AssertOpreandsAreSame` we simply put a fatal error.

```
bool AssertOperandsAreSame(Value op) {
  Operation* operation = op.getDefiningOp();
  if (operation->getOperand(0) != operation->getOpearnd(1)) {
    // Name binding equality check must happen before user-defined constraints, thus this must not be triggered.
    llvm::report_fatal_error(...);
  }
  return true;
}
```

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


More information about the Mlir-commits mailing list