[all-commits] [llvm/llvm-project] 95b4e8: [mlir:PDLL] Add support for PDL MLIR code generation

River Riddle via All-commits all-commits at lists.llvm.org
Sat Feb 26 11:26:45 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 95b4e88b1db348fbb074c945bd85c777cf807cc0
      https://github.com/llvm/llvm-project/commit/95b4e88b1db348fbb074c945bd85c777cf807cc0
  Author: River Riddle <riddleriver at gmail.com>
  Date:   2022-02-26 (Sat, 26 Feb 2022)

  Changed paths:
    M mlir/include/mlir/Tools/PDLL/AST/Nodes.h
    A mlir/include/mlir/Tools/PDLL/CodeGen/MLIRGen.h
    M mlir/lib/Tools/PDLL/CMakeLists.txt
    A mlir/lib/Tools/PDLL/CodeGen/CMakeLists.txt
    A mlir/lib/Tools/PDLL/CodeGen/MLIRGen.cpp
    A mlir/test/mlir-pdll/CodeGen/MLIR/decl.pdll
    A mlir/test/mlir-pdll/CodeGen/MLIR/expr.pdll
    A mlir/test/mlir-pdll/CodeGen/MLIR/stmt.pdll
    R mlir/test/mlir-pdll/Parser/lit.local.cfg
    A mlir/test/mlir-pdll/lit.local.cfg
    M mlir/tools/mlir-pdll/CMakeLists.txt
    M mlir/tools/mlir-pdll/mlir-pdll.cpp

  Log Message:
  -----------
  [mlir:PDLL] Add support for PDL MLIR code generation

This commits starts to plumb PDLL down into MLIR and adds an initial
PDL generator. After this commit, we will have conceptually support
end-to-end execution of PDLL. Followups will add CPP generation to
match the current DRR setup, and begin to add various end-to-end
tests to test PDLL execution.

Differential Revision: https://reviews.llvm.org/D119779


  Commit: a486cf5e98bcf6a186bf3d01ba4539a3e27bd08d
      https://github.com/llvm/llvm-project/commit/a486cf5e98bcf6a186bf3d01ba4539a3e27bd08d
  Author: River Riddle <riddleriver at gmail.com>
  Date:   2022-02-26 (Sat, 26 Feb 2022)

  Changed paths:
    M mlir/include/mlir/Tools/PDLL/AST/Nodes.h
    M mlir/lib/Tools/PDLL/Parser/Parser.cpp
    M mlir/test/mlir-pdll/CodeGen/MLIR/expr.pdll
    M mlir/test/mlir-pdll/Parser/expr.pdll

  Log Message:
  -----------
  [mlir:PDLL] Fix handling of unspecified operands/results on operation expressions

If the operand list or result list of an operation expression is not specified, we interpret
this as meaning that the operands/results are "unconstraint" (i.e. "could be anything").
We currently don't properly handle differentiating this case from the case of
"no operands/results". This commit adds the insertion of implicit value/type range
variables when these lists are unspecified. This allows for adding proper support
for when zero operands or results are expected.

Differential Revision: https://reviews.llvm.org/D119780


  Commit: 9ad64a5c78a98c4f9eb4fff7c9c7665925db6907
      https://github.com/llvm/llvm-project/commit/9ad64a5c78a98c4f9eb4fff7c9c7665925db6907
  Author: River Riddle <riddleriver at gmail.com>
  Date:   2022-02-26 (Sat, 26 Feb 2022)

  Changed paths:
    A mlir/include/mlir/Tools/PDLL/CodeGen/CPPGen.h
    M mlir/lib/Tools/PDLL/CodeGen/CMakeLists.txt
    A mlir/lib/Tools/PDLL/CodeGen/CPPGen.cpp
    A mlir/test/mlir-pdll/CodeGen/CPP/general.pdll
    M mlir/tools/mlir-pdll/mlir-pdll.cpp

  Log Message:
  -----------
  [mlir:PDLL] Add support for C++ generation

This commits adds a C++ generator to PDLL that generates wrapper PDL patterns
directly usable in C++ code, and also generates the definitions of native constraints/rewrites
that have code bodies specified in PDLL. This generator is effectively the PDLL equivalent of
the current DRR generator, and will allow easy replacement of DRR patterns with PDLL patterns.
A followup will start to utilize this for end-to-end integration testing and show case how to
use this as a drop-in replacement for DRR tablegen usage.

Differential Revision: https://reviews.llvm.org/D119781


  Commit: b474ca1d5a445cdfa924d794439013bea1599f92
      https://github.com/llvm/llvm-project/commit/b474ca1d5a445cdfa924d794439013bea1599f92
  Author: River Riddle <riddleriver at gmail.com>
  Date:   2022-02-26 (Sat, 26 Feb 2022)

  Changed paths:
    M mlir/lib/Tools/PDLL/Parser/Parser.cpp
    M mlir/test/mlir-pdll/Parser/constraint-failure.pdll

  Log Message:
  -----------
  [PDLL] Properly error out on returning results from native constraints

PDL currently doesn't support result values from constraints, meaning we need
to error out until this is actually supported to avoid crashes.

Differential Revision: https://reviews.llvm.org/D119782


Compare: https://github.com/llvm/llvm-project/compare/2e7c35ea12c8...b474ca1d5a44


More information about the All-commits mailing list