diff options
| author | Tim Noack <noack@esa.tu-darmstadt.de> | 2026-02-03 23:00:56 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-02-03 14:00:56 -0800 |
| commit | 254b3b137efb1be5a5e57188b3f8a8ff934bdf78 (patch) | |
| tree | 1a503d99d97fcf7268a1556f132d6d6335e32a2f /llvm/lib/Bitcode | |
| parent | 43faefdb12337216957b2fac34ca6bd1bed371b7 (diff) | |
| download | llvm-254b3b137efb1be5a5e57188b3f8a8ff934bdf78.tar.gz llvm-254b3b137efb1be5a5e57188b3f8a8ff934bdf78.tar.bz2 llvm-254b3b137efb1be5a5e57188b3f8a8ff934bdf78.zip | |
[mlir][tblgen] Add PredTypeTrait/PredAttrTrait support (#169153)
This patch adds support for `PredTypeTrait` and `PredAttrTrait` in type
and attribute definitions, enabling declarative predicate-based
verification similar to how `PredOpTrait` works for operations.
## Motivation
In 802bf02 (from 2021), `PredTypeTrait`/`PredAttrTrait` were defined in
TableGen but not implemented in the code generator. Using them causes
mlir-tblgen to crash with an assertion failure when trying to cast
`PredTrait` to `InterfaceTrait`. This patch fixes the crash and
implements the actual verification code generation.
## Usage
Use `$paramName` syntax in predicates to reference type/attribute
parameters:
```tablegen
def MyType : MyDialect_Type<"MyType",
[PredTypeTrait<"value must be positive", CPred<"$value > 0">>]> {
let parameters = (ins "unsigned":$value);
let mnemonic = "my_type";
let assemblyFormat = "`<` $value `>`";
}
```
This generates verification code in `verifyInvariantsImpl()`:
```cpp
if (!(value > 0)) {
emitError() << "failed to verify that value must be positive";
return ::mlir::failure();
}
```
Diffstat (limited to 'llvm/lib/Bitcode')
0 files changed, 0 insertions, 0 deletions
