forked from OSchip/llvm-project
![]() This commit refactors the expected form of native constraint and rewrite functions, and greatly reduces the necessary user complexity required when defining a native function. Namely, this commit adds in automatic processing of the necessary PDLValue glue code, and allows for users to define constraint/rewrite functions using the C++ types that they actually want to use. As an example, lets see a simple example rewrite defined today: ``` static void rewriteFn(PatternRewriter &rewriter, PDLResultList &results, ArrayRef<PDLValue> args) { ValueRange operandValues = args[0].cast<ValueRange>(); TypeRange typeValues = args[1].cast<TypeRange>(); ... // Create an operation at some point and pass it back to PDL. Operation *op = rewriter.create<SomeOp>(...); results.push_back(op); } ``` After this commit, that same rewrite could be defined as: ``` static Operation *rewriteFn(PatternRewriter &rewriter ValueRange operandValues, TypeRange typeValues) { ... // Create an operation at some point and pass it back to PDL. return rewriter.create<SomeOp>(...); } ``` Differential Revision: https://reviews.llvm.org/D122086 |
||
---|---|---|
.. | ||
Analysis | ||
CAPI | ||
Conversion | ||
Dialect | ||
Examples | ||
IR | ||
Integration | ||
Interfaces | ||
Pass | ||
Rewrite | ||
Target | ||
Transforms | ||
Unit | ||
lib | ||
mlir-cpu-runner | ||
mlir-linalg-ods-gen | ||
mlir-lsp-server | ||
mlir-opt | ||
mlir-pdll | ||
mlir-pdll-lsp-server | ||
mlir-reduce | ||
mlir-spirv-cpu-runner | ||
mlir-tblgen | ||
mlir-translate | ||
mlir-vulkan-runner | ||
python | ||
APITest.h | ||
CMakeLists.txt | ||
lit.cfg.py | ||
lit.site.cfg.py.in |