diff options
author | Mogball <jeff@modular.com> | 2023-09-01 23:12:11 +0000 |
---|---|---|
committer | Mogball <jeff@modular.com> | 2023-09-01 23:12:16 +0000 |
commit | 930916c7f3622870b40138dafcc5f94740404e8c (patch) | |
tree | f19fe2d712ac146195117066a2498e6032535f42 /llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp | |
parent | 2d696d0458ef395fcd61a20b6fd887b74ce9d04e (diff) | |
download | llvm-930916c7f3622870b40138dafcc5f94740404e8c.zip llvm-930916c7f3622870b40138dafcc5f94740404e8c.tar.gz llvm-930916c7f3622870b40138dafcc5f94740404e8c.tar.bz2 |
[MLIR][PDL] Add PDLL support for negated native constraints
This commit enables the expression of negated native constraints in PDLL:
If a constraint is prefixed with "not" it is parsed as a negated constraint and hence the attribute `isNegated` of the emitted `pdl.apply_native_constraint` operation is set to `true`.
In first instance this is only supported for the calling of external native C++ constraints and generation of PDL patterns.
Previously, negating a native constraint would have been handled by creating an additional native call, e.g.
```PDLL
Constraint checkA(input: Attr);
Constarint checkNotA(input: Attr);
```
or by including an explicit additional operand for negation, e.g.
`Constraint checkA(input: Attr, negated: Attr);`
With this a constraint can simply be negated by prefixing it with `not`. e.g.
```PDLL
Constraint simpleConstraint(op: Op);
Pattern example {
let inputOp = op<test.bar>() ->(type: Type);
let root = op<test.foo>(inputOp.0) -> ();
not simpleConstraint(inputOp);
simpleConstraint(root);
erase root;
}
```
Depends on [[ https://reviews.llvm.org/D153871 | D153871 ]]
Reviewed By: Mogball
Differential Revision: https://reviews.llvm.org/D153959
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp')
0 files changed, 0 insertions, 0 deletions