[all-commits] [llvm/llvm-project] bba85e: [mlir] add types to the transform dialect

ftynse via All-commits all-commits at lists.llvm.org
Tue Oct 11 02:55:43 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: bba85ebdfeffba74d19a22cfb592641d0af6b66a
      https://github.com/llvm/llvm-project/commit/bba85ebdfeffba74d19a22cfb592641d0af6b66a
  Author: Alex Zinenko <zinenko at google.com>
  Date:   2022-10-11 (Tue, 11 Oct 2022)

  Changed paths:
    M mlir/docs/Dialects/Transform.md
    M mlir/include/mlir/Dialect/Transform/IR/CMakeLists.txt
    M mlir/include/mlir/Dialect/Transform/IR/TransformDialect.h
    M mlir/include/mlir/Dialect/Transform/IR/TransformDialect.td
    M mlir/include/mlir/Dialect/Transform/IR/TransformInterfaces.h
    M mlir/include/mlir/Dialect/Transform/IR/TransformInterfaces.td
    M mlir/include/mlir/Dialect/Transform/IR/TransformOps.h
    M mlir/include/mlir/Dialect/Transform/IR/TransformOps.td
    A mlir/include/mlir/Dialect/Transform/IR/TransformTypes.h
    A mlir/include/mlir/Dialect/Transform/IR/TransformTypes.td
    M mlir/lib/Dialect/Transform/IR/CMakeLists.txt
    M mlir/lib/Dialect/Transform/IR/TransformDialect.cpp
    M mlir/lib/Dialect/Transform/IR/TransformInterfaces.cpp
    M mlir/lib/Dialect/Transform/IR/TransformOps.cpp
    A mlir/lib/Dialect/Transform/IR/TransformTypes.cpp
    M mlir/test/Dialect/Transform/ops.mlir
    M mlir/test/Dialect/Transform/test-dialect-injection.mlir
    M mlir/test/Dialect/Transform/test-interpreter.mlir
    M mlir/test/lib/Dialect/Transform/CMakeLists.txt
    M mlir/test/lib/Dialect/Transform/TestTransformDialectExtension.cpp
    M mlir/test/lib/Dialect/Transform/TestTransformDialectExtension.h
    M mlir/test/lib/Dialect/Transform/TestTransformDialectExtension.td
    M utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
    M utils/bazel/llvm-project-overlay/mlir/test/BUILD.bazel

  Log Message:
  -----------
  [mlir] add types to the transform dialect

Introduce a type system for the transform dialect. A transform IR type
captures the expectations of the transform IR on the payload IR
operations that are being transformed, such as being of a certain kind
or implementing an interface that enables the transformation. This
provides stricter checking and better readability of the transform IR
than using the catch-all "handle" type.

This change implements the basic support for a type system amendable to
dialect extensions and adds a drop-in replacement for the unrestricted
"handle" type. The actual switch of transform dialect ops to that type
will happen in a separate commit.

See https://discourse.llvm.org/t/rfc-type-system-for-the-transform-dialect/65702

Reviewed By: nicolasvasilache

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


  Commit: b586d56c7b8b0188355a4d7f5f8b09f8b3847757
      https://github.com/llvm/llvm-project/commit/b586d56c7b8b0188355a4d7f5f8b09f8b3847757
  Author: Alex Zinenko <zinenko at google.com>
  Date:   2022-10-11 (Tue, 11 Oct 2022)

  Changed paths:
    M mlir/include/mlir/Dialect/Transform/IR/TransformDialect.h
    M mlir/include/mlir/Dialect/Transform/IR/TransformDialect.td
    M mlir/lib/Dialect/Transform/IR/TransformDialect.cpp

  Log Message:
  -----------
  [mlir] clean up transform dialect definitions, NFC

Refactor the definition of the Transform dialect to move non-trivial
method implementations out of the .td file, and detemplatize functions
when possible while moving their implementations to a .cpp.

Reviewed By: nicolasvasilache

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


  Commit: 6fe03096025329add1b4e72273d9f631aa3acfda
      https://github.com/llvm/llvm-project/commit/6fe03096025329add1b4e72273d9f631aa3acfda
  Author: Alex Zinenko <zinenko at google.com>
  Date:   2022-10-11 (Tue, 11 Oct 2022)

  Changed paths:
    M mlir/include/mlir/Dialect/Transform/IR/TransformOps.td
    M mlir/lib/Dialect/Transform/IR/TransformDialect.cpp
    M mlir/lib/Dialect/Transform/IR/TransformInterfaces.cpp
    M mlir/lib/Dialect/Transform/IR/TransformOps.cpp
    M mlir/python/mlir/dialects/_transform_ops_ext.py
    M mlir/test/Dialect/Bufferization/Transforms/transform-ops.mlir
    M mlir/test/Dialect/GPU/transform-gpu-failing.mlir
    M mlir/test/Dialect/GPU/transform-gpu.mlir
    M mlir/test/Dialect/Linalg/multisize-tiling-full.mlir
    M mlir/test/Dialect/Linalg/promote.mlir
    M mlir/test/Dialect/Linalg/promotion_options.mlir
    M mlir/test/Dialect/Linalg/tile-to-foreach-thread.mlir
    M mlir/test/Dialect/Linalg/transform-op-decompose.mlir
    M mlir/test/Dialect/Linalg/transform-op-fuse-into-containing.mlir
    M mlir/test/Dialect/Linalg/transform-op-fuse.mlir
    M mlir/test/Dialect/Linalg/transform-op-generalize.mlir
    M mlir/test/Dialect/Linalg/transform-op-interchange.mlir
    M mlir/test/Dialect/Linalg/transform-op-match.mlir
    M mlir/test/Dialect/Linalg/transform-op-multitile-sizes.mlir
    M mlir/test/Dialect/Linalg/transform-op-pad.mlir
    M mlir/test/Dialect/Linalg/transform-op-scalarize.mlir
    M mlir/test/Dialect/Linalg/transform-op-split-reduction-by-scaling.mlir
    M mlir/test/Dialect/Linalg/transform-op-split-reduction.mlir
    M mlir/test/Dialect/Linalg/transform-op-split.mlir
    M mlir/test/Dialect/Linalg/transform-op-tile.mlir
    M mlir/test/Dialect/Linalg/transform-op-vectorize.mlir
    M mlir/test/Dialect/Linalg/transform-patterns.mlir
    M mlir/test/Dialect/Linalg/transform-promotion.mlir
    M mlir/test/Dialect/Linalg/transform-tile-and-fuse.mlir
    M mlir/test/Dialect/Linalg/vectorization.mlir
    M mlir/test/Dialect/SCF/transform-ops.mlir
    M mlir/test/Dialect/Transform/check-use-after-free.mlir
    M mlir/test/Dialect/Transform/expensive-checks.mlir
    M mlir/test/Dialect/Transform/ops-invalid.mlir
    M mlir/test/Dialect/Transform/ops.mlir
    M mlir/test/Dialect/Transform/selective-targeting.mlir
    M mlir/test/Dialect/Transform/test-interpreter.mlir
    M mlir/test/python/dialects/transform.py
    M mlir/test/python/dialects/transform_loop_ext.py
    M mlir/test/python/dialects/transform_structured_ext.py
    M utils/bazel/llvm-project-overlay/mlir/BUILD.bazel

  Log Message:
  -----------
  [mlir] switch transform dialect ops to use TransformTypeInterface

Use the recently introduced TransformTypeInterface instead of hardcoding
the PDLOperationType. This will allow the operations to use more
specific transform types to express pre/post-conditions in the future.
It requires the syntax and Python op construction API to be updated.
Dialect extensions will be switched separately.

Reviewed By: nicolasvasilache

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


  Commit: 6bb997c032f509d4f61461aa461c8431325cbb2a
      https://github.com/llvm/llvm-project/commit/6bb997c032f509d4f61461aa461c8431325cbb2a
  Author: Alex Zinenko <zinenko at google.com>
  Date:   2022-10-11 (Tue, 11 Oct 2022)

  Changed paths:
    M mlir/lib/Dialect/Transform/IR/TransformInterfaces.cpp

  Log Message:
  -----------
  [mlir] cleanup transform payload setting

Before the multi-handle relaxation, the transform interpreter did not
actually set payload for a handle that had no further uses as a hacky
mechanism to work around the multi-handle problem. This is no longer
necessary and can be removed to avoid debugging surprises when a handle
has no payload even when its producing op assigned it.

Reviewed By: nicolasvasilache

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


  Commit: 3e1f6d02f755e34a0a12a8dd439fb65f84d6621f
      https://github.com/llvm/llvm-project/commit/3e1f6d02f755e34a0a12a8dd439fb65f84d6621f
  Author: Alex Zinenko <zinenko at google.com>
  Date:   2022-10-11 (Tue, 11 Oct 2022)

  Changed paths:
    A mlir/include/mlir-c/Dialect/Transform.h
    M mlir/include/mlir/Dialect/Transform/IR/TransformDialect.td
    M mlir/include/mlir/Dialect/Transform/IR/TransformInterfaces.td
    M mlir/include/mlir/Dialect/Transform/IR/TransformTypes.td
    A mlir/lib/Bindings/Python/DialectTransform.cpp
    M mlir/lib/CAPI/Dialect/CMakeLists.txt
    A mlir/lib/CAPI/Dialect/Transform.cpp
    M mlir/lib/Dialect/Transform/IR/TransformDialect.cpp
    M mlir/lib/Dialect/Transform/IR/TransformTypes.cpp
    M mlir/python/CMakeLists.txt
    A mlir/python/mlir/_mlir_libs/_mlir/dialects/transform/__init__.pyi
    M mlir/python/mlir/dialects/_transform_ops_ext.py
    M mlir/python/mlir/dialects/transform/__init__.py
    M mlir/test/CAPI/CMakeLists.txt
    A mlir/test/CAPI/transform.c
    M mlir/test/CMakeLists.txt
    M mlir/test/Dialect/Transform/ops.mlir
    M mlir/test/Dialect/Transform/test-interpreter.mlir
    M mlir/test/lit.cfg.py
    M mlir/test/python/dialects/transform.py
    M utils/bazel/llvm-project-overlay/mlir/BUILD.bazel

  Log Message:
  -----------
  [mlir] add OperationType to the Transform dialect

Add a new OperationType handle type to the Transform dialect. This
transform type is parameterized by the name of the payload operation it
can point to. It is intended as a constraint on transformations that are
only applicable to a specific kind of payload operations. If a
transformation is applicable to a small set of operation classes, it can
be wrapped into a transform op by using a disjunctive constraint, such
as `Type<Or<[Transform_ConcreteOperation<"foo">.predicate,
Transform_ConcreteOperation<"bar">.predicate]>>` for its operand without
modifying this type. Broader sets of accepted operations should be
modeled as specific types.

Reviewed By: nicolasvasilache

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


  Commit: 59bb8af4c307623ff39f66006e0d4a3fd6a7063f
      https://github.com/llvm/llvm-project/commit/59bb8af4c307623ff39f66006e0d4a3fd6a7063f
  Author: Alex Zinenko <zinenko at google.com>
  Date:   2022-10-11 (Tue, 11 Oct 2022)

  Changed paths:
    M mlir/include/mlir/Dialect/SCF/TransformOps/SCFTransformOps.h
    M mlir/include/mlir/Dialect/SCF/TransformOps/SCFTransformOps.td
    M mlir/lib/Dialect/SCF/TransformOps/CMakeLists.txt
    M mlir/lib/Dialect/SCF/TransformOps/SCFTransformOps.cpp
    M mlir/python/mlir/dialects/_loop_transform_ops_ext.py
    M mlir/test/Dialect/Linalg/transform-op-fuse.mlir
    M mlir/test/Dialect/Linalg/transform-op-match.mlir
    M mlir/test/Dialect/MemRef/transform-ops.mlir
    M mlir/test/Dialect/SCF/transform-ops.mlir
    M mlir/test/Dialect/Transform/expensive-checks.mlir
    M mlir/test/Dialect/Transform/test-interpreter.mlir
    M mlir/test/lib/Dialect/Transform/TestTransformDialectExtension.td
    M mlir/test/python/dialects/transform_loop_ext.py

  Log Message:
  -----------
  [mlir] switch the transform loop extension to use types

Add types to the Loop (SCF) extension of the transform dialect.

See https://discourse.llvm.org/t/rfc-type-system-for-the-transform-dialect/65702

Reviewed By: nicolasvasilache

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


Compare: https://github.com/llvm/llvm-project/compare/b845addae89b...59bb8af4c307


More information about the All-commits mailing list