[mlir][PDLL] Add an initial frontend for PDLL
authorRiver Riddle <riddleriver@gmail.com>
Thu, 16 Dec 2021 01:48:19 +0000 (01:48 +0000)
committerRiver Riddle <riddleriver@gmail.com>
Thu, 16 Dec 2021 02:08:12 +0000 (02:08 +0000)
commit11d26bd14327bf92e8fd154527d76ae4e48df74a
tree6619593f2d298a8c64a0dfc9f3ddc44a8a0ac1b4
parent8f1ea2e85ca64dd706824fb7f5ea15c678a15dde
[mlir][PDLL] Add an initial frontend for PDLL

This is a new pattern rewrite frontend designed from the ground
up to support MLIR constructs, and to target PDL. This frontend
language was proposed in https://llvm.discourse.group/t/rfc-pdll-a-new-declarative-rewrite-frontend-for-mlir/4798

This commit starts sketching out the base structure of the
frontend, and is intended to be a minimal starting point for
building up the language. It essentially contains support for
defining a pattern, variables, and erasing an operation. The
features mentioned in the proposal RFC (including IDE support)
will be added incrementally in followup commits.

I intend to upstream the documentation for the language in a
followup when a bit more of the pieces have been landed.

Differential Revision: https://reviews.llvm.org/D115093
33 files changed:
mlir/include/mlir/Tools/PDLL/AST/Context.h [new file with mode: 0644]
mlir/include/mlir/Tools/PDLL/AST/Diagnostic.h [new file with mode: 0644]
mlir/include/mlir/Tools/PDLL/AST/Nodes.h [new file with mode: 0644]
mlir/include/mlir/Tools/PDLL/AST/Types.h [new file with mode: 0644]
mlir/include/mlir/Tools/PDLL/Parser/Parser.h [new file with mode: 0644]
mlir/lib/Tools/CMakeLists.txt
mlir/lib/Tools/PDLL/AST/CMakeLists.txt [new file with mode: 0644]
mlir/lib/Tools/PDLL/AST/Context.cpp [new file with mode: 0644]
mlir/lib/Tools/PDLL/AST/Diagnostic.cpp [new file with mode: 0644]
mlir/lib/Tools/PDLL/AST/NodePrinter.cpp [new file with mode: 0644]
mlir/lib/Tools/PDLL/AST/Nodes.cpp [new file with mode: 0644]
mlir/lib/Tools/PDLL/AST/TypeDetail.h [new file with mode: 0644]
mlir/lib/Tools/PDLL/AST/Types.cpp [new file with mode: 0644]
mlir/lib/Tools/PDLL/CMakeLists.txt [new file with mode: 0644]
mlir/lib/Tools/PDLL/Parser/CMakeLists.txt [new file with mode: 0644]
mlir/lib/Tools/PDLL/Parser/Lexer.cpp [new file with mode: 0644]
mlir/lib/Tools/PDLL/Parser/Lexer.h [new file with mode: 0644]
mlir/lib/Tools/PDLL/Parser/Parser.cpp [new file with mode: 0644]
mlir/test/CMakeLists.txt
mlir/test/lit.cfg.py
mlir/test/mlir-pdll/Parser/directive-failure.pdll [new file with mode: 0644]
mlir/test/mlir-pdll/Parser/expr-failure.pdll [new file with mode: 0644]
mlir/test/mlir-pdll/Parser/include.pdll [new file with mode: 0644]
mlir/test/mlir-pdll/Parser/include/included.pdll [new file with mode: 0644]
mlir/test/mlir-pdll/Parser/lit.local.cfg [new file with mode: 0644]
mlir/test/mlir-pdll/Parser/pattern-failure.pdll [new file with mode: 0644]
mlir/test/mlir-pdll/Parser/pattern.pdll [new file with mode: 0644]
mlir/test/mlir-pdll/Parser/stmt-failure.pdll [new file with mode: 0644]
mlir/test/mlir-pdll/Parser/stmt.pdll [new file with mode: 0644]
mlir/tools/CMakeLists.txt
mlir/tools/mlir-pdll/CMakeLists.txt [new file with mode: 0644]
mlir/tools/mlir-pdll/mlir-pdll.cpp [new file with mode: 0644]
utils/bazel/llvm-project-overlay/mlir/BUILD.bazel