[Mlir-commits] [mlir] f054901 - [mlir][bufferization][transform][python] Add enums to bindings & mixins.
Ingo Müller
llvmlistbot at llvm.org
Tue Aug 1 06:46:21 PDT 2023
Author: Ingo Müller
Date: 2023-08-01T13:46:16Z
New Revision: f0549017533bd073173b7fba4c5295c7deb455e9
URL: https://github.com/llvm/llvm-project/commit/f0549017533bd073173b7fba4c5295c7deb455e9
DIFF: https://github.com/llvm/llvm-project/commit/f0549017533bd073173b7fba4c5295c7deb455e9.diff
LOG: [mlir][bufferization][transform][python] Add enums to bindings & mixins.
This patch uses the new enum binding generation to add the enums of the
dialect to the Python bindings and uses them in the mix-in class where
it was still missing (namely, the `LayoutMapOption` for the
`function_boundary_type_conversion` of the `OneShotBufferizeOp`.
The patch also piggy-backs a few smaller clean-ups:
* Order the keyword-only arguments alphabetically.
* Add the keyword-only arguments to an overload where they were left out
by accident.
* Change some of the attribute values used in the tests to non-default
values such that they show up in the output IR and check for that
output.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D156664
Added:
Modified:
mlir/python/CMakeLists.txt
mlir/python/mlir/dialects/_bufferization_transform_ops_ext.py
mlir/python/mlir/dialects/transform/bufferization.py
mlir/test/python/dialects/transform_bufferization_ext.py
utils/bazel/llvm-project-overlay/mlir/python/BUILD.bazel
Removed:
################################################################################
diff --git a/mlir/python/CMakeLists.txt b/mlir/python/CMakeLists.txt
index a2aa493e2d827b..656e3f895adc06 100644
--- a/mlir/python/CMakeLists.txt
+++ b/mlir/python/CMakeLists.txt
@@ -153,6 +153,15 @@ declare_mlir_dialect_extension_python_bindings(
DIALECT_NAME transform
EXTENSION_NAME bufferization_transform)
+set(LLVM_TARGET_DEFINITIONS "${CMAKE_CURRENT_SOURCE_DIR}/mlir/dialects/BufferizationTransformOps.td")
+mlir_tablegen("dialects/_bufferization_transform_enum_gen.py" -gen-python-enum-bindings)
+add_public_tablegen_target(MLIRBufferizationTransformDialectPyEnumGen)
+declare_mlir_python_sources(
+ MLIRPythonSources.Dialects.bufferization_transform.enum_gen
+ ROOT_DIR "${CMAKE_CURRENT_BINARY_DIR}"
+ ADD_TO_PARENT MLIRPythonSources.Dialects.bufferization_transform
+ SOURCES "dialects/_bufferization_transform_enum_gen.py")
+
declare_mlir_dialect_extension_python_bindings(
ADD_TO_PARENT MLIRPythonSources.Dialects
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
diff --git a/mlir/python/mlir/dialects/_bufferization_transform_ops_ext.py b/mlir/python/mlir/dialects/_bufferization_transform_ops_ext.py
index 77f4d1e1608c83..ead337282bb7fd 100644
--- a/mlir/python/mlir/dialects/_bufferization_transform_ops_ext.py
+++ b/mlir/python/mlir/dialects/_bufferization_transform_ops_ext.py
@@ -8,6 +8,7 @@
except ImportError as e:
raise RuntimeError("Error loading imports from extension module") from e
+from enum import Enum
from typing import Optional, overload, Union
@@ -65,16 +66,31 @@ def __init__(
allow_unknown_ops: Optional[bool] = None,
bufferize_function_boundaries: Optional[bool] = None,
create_deallocs: Optional[bool] = None,
- test_analysis_only: Optional[bool] = None,
- print_conflicts: Optional[bool] = None,
+ function_boundary_type_conversion: Optional[Enum] = None,
memcpy_op: Optional[str] = None,
+ print_conflicts: Optional[bool] = None,
+ test_analysis_only: Optional[bool] = None,
loc=None,
ip=None
):
...
@overload
- def __init__(self, target: Union[Operation, OpView, Value], *, loc=None, ip=None):
+ def __init__(
+ self,
+ target: Union[Operation, OpView, Value],
+ *,
+ allow_return_allocs: Optional[bool] = None,
+ allow_unknown_ops: Optional[bool] = None,
+ bufferize_function_boundaries: Optional[bool] = None,
+ create_deallocs: Optional[bool] = None,
+ function_boundary_type_conversion: Optional[Enum] = None,
+ memcpy_op: Optional[str] = None,
+ print_conflicts: Optional[bool] = None,
+ test_analysis_only: Optional[bool] = None,
+ loc=None,
+ ip=None
+ ):
...
def __init__(
@@ -86,9 +102,10 @@ def __init__(
allow_unknown_ops: Optional[bool] = None,
bufferize_function_boundaries: Optional[bool] = None,
create_deallocs: Optional[bool] = None,
- test_analysis_only: Optional[bool] = None,
- print_conflicts: Optional[bool] = None,
+ function_boundary_type_conversion: Optional[Enum] = None,
memcpy_op: Optional[str] = None,
+ print_conflicts: Optional[bool] = None,
+ test_analysis_only: Optional[bool] = None,
loc=None,
ip=None
):
@@ -106,9 +123,10 @@ def __init__(
allow_unknown_ops=allow_unknown_ops,
bufferize_function_boundaries=bufferize_function_boundaries,
create_deallocs=create_deallocs,
- test_analysis_only=test_analysis_only,
- print_conflicts=print_conflicts,
+ function_boundary_type_conversion=function_boundary_type_conversion,
memcpy_op=memcpy_op,
+ print_conflicts=print_conflicts,
+ test_analysis_only=test_analysis_only,
loc=loc,
ip=ip,
)
diff --git a/mlir/python/mlir/dialects/transform/bufferization.py b/mlir/python/mlir/dialects/transform/bufferization.py
index eb77b746cf864f..1891bc0e1d6a1c 100644
--- a/mlir/python/mlir/dialects/transform/bufferization.py
+++ b/mlir/python/mlir/dialects/transform/bufferization.py
@@ -2,4 +2,5 @@
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+from .._bufferization_transform_enum_gen import *
from .._bufferization_transform_ops_gen import *
diff --git a/mlir/test/python/dialects/transform_bufferization_ext.py b/mlir/test/python/dialects/transform_bufferization_ext.py
index b2e213f78c8cdf..fad256513cbd1d 100644
--- a/mlir/test/python/dialects/transform_bufferization_ext.py
+++ b/mlir/test/python/dialects/transform_bufferization_ext.py
@@ -88,17 +88,21 @@ def testOneShotBufferizeOpAttributes():
allow_return_allocs=True,
allow_unknown_ops=True,
bufferize_function_boundaries=True,
- create_deallocs=True,
- test_analysis_only=True,
+ create_deallocs=False,
+ function_boundary_type_conversion=bufferization.LayoutMapOption.IDENTITY_LAYOUT_MAP,
+ memcpy_op="linalg.copy",
print_conflicts=True,
- memcpy_op="memref.copy",
+ test_analysis_only=True,
)
transform.YieldOp()
# CHECK-LABEL: TEST: testOneShotBufferizeOpAttributes
# CHECK: = transform.bufferization.one_shot_bufferize
+ # CHECK-SAME: layout{IdentityLayoutMap}
# CHECK-SAME: allow_return_allocs = true
# CHECK-SAME: allow_unknown_ops = true
# CHECK-SAME: bufferize_function_boundaries = true
+ # CHECK-SAME: create_deallocs = false
+ # CHECK-SAME: memcpy_op = "linalg.copy"
# CHECK-SAME: print_conflicts = true
# CHECK-SAME: test_analysis_only = true
# CHECK-SAME: (!transform.any_op) -> !transform.any_op
diff --git a/utils/bazel/llvm-project-overlay/mlir/python/BUILD.bazel b/utils/bazel/llvm-project-overlay/mlir/python/BUILD.bazel
index 3942aa152032ba..60ac972f8f883e 100644
--- a/utils/bazel/llvm-project-overlay/mlir/python/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/mlir/python/BUILD.bazel
@@ -775,6 +775,13 @@ gentbl_filegroup(
gentbl_filegroup(
name = "BufferizationTransformOpsPyGen",
tbl_outs = [
+ (
+ [
+ "-gen-python-enum-bindings",
+ "-bind-dialect=transform",
+ ],
+ "mlir/dialects/_bufferization_transform_enums_gen.py",
+ ),
(
[
"-gen-python-op-bindings",
More information about the Mlir-commits
mailing list