-
Notifications
You must be signed in to change notification settings - Fork 15.1k
Revert "[mlir][py] better support for arith.constant construction" #84103
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@llvm/pr-subscribers-mlir Author: Mehdi Amini (joker-eph) ChangesReverts llvm/llvm-project#83259 This broke an integration test on Windows Full diff: https://github.com/llvm/llvm-project/pull/84103.diff 2 Files Affected:
diff --git a/mlir/python/mlir/dialects/arith.py b/mlir/python/mlir/dialects/arith.py
index 83a50c7ef244f1..61c6917393f1f9 100644
--- a/mlir/python/mlir/dialects/arith.py
+++ b/mlir/python/mlir/dialects/arith.py
@@ -5,8 +5,6 @@
from ._arith_ops_gen import *
from ._arith_ops_gen import _Dialect
from ._arith_enum_gen import *
-from array import array as _array
-from typing import overload
try:
from ..ir import *
@@ -45,30 +43,13 @@ def _is_float_type(type: Type):
class ConstantOp(ConstantOp):
"""Specialization for the constant op class."""
- @overload
- def __init__(self, value: Attribute, *, loc=None, ip=None):
- ...
-
- @overload
def __init__(
- self, result: Type, value: Union[int, float, _array], *, loc=None, ip=None
+ self, result: Type, value: Union[int, float, Attribute], *, loc=None, ip=None
):
- ...
-
- def __init__(self, result, value, *, loc=None, ip=None):
- if value is None:
- assert isinstance(result, Attribute)
- super().__init__(result, loc=loc, ip=ip)
- return
-
if isinstance(value, int):
super().__init__(IntegerAttr.get(result, value), loc=loc, ip=ip)
elif isinstance(value, float):
super().__init__(FloatAttr.get(result, value), loc=loc, ip=ip)
- elif isinstance(value, _array) and value.typecode in ["i", "l"]:
- super().__init__(DenseIntElementsAttr.get(value, type=result))
- elif isinstance(value, _array) and value.typecode in ["f", "d"]:
- super().__init__(DenseFPElementsAttr.get(value, type=result))
else:
super().__init__(value, loc=loc, ip=ip)
@@ -98,6 +79,6 @@ def literal_value(self) -> Union[int, float]:
def constant(
- result: Type, value: Union[int, float, Attribute, _array], *, loc=None, ip=None
+ result: Type, value: Union[int, float, Attribute], *, loc=None, ip=None
) -> Value:
return _get_op_result_or_op_results(ConstantOp(result, value, loc=loc, ip=ip))
diff --git a/mlir/test/python/dialects/arith_dialect.py b/mlir/test/python/dialects/arith_dialect.py
index ef0e1620bba990..8bb80eed2b8105 100644
--- a/mlir/test/python/dialects/arith_dialect.py
+++ b/mlir/test/python/dialects/arith_dialect.py
@@ -4,7 +4,6 @@
from mlir.ir import *
import mlir.dialects.arith as arith
import mlir.dialects.func as func
-from array import array
def run(f):
@@ -93,40 +92,3 @@ def __str__(self):
b = a * a
# CHECK: ArithValue(%2 = arith.mulf %cst_1, %cst_1 : f64)
print(b)
-
-
-# CHECK-LABEL: TEST: testArrayConstantConstruction
-@run
-def testArrayConstantConstruction():
- with Context(), Location.unknown():
- module = Module.create()
- with InsertionPoint(module.body):
- i32_array = array("i", [1, 2, 3, 4])
- i32 = IntegerType.get_signless(32)
- vec_i32 = VectorType.get([2, 2], i32)
- arith.constant(vec_i32, i32_array)
- arith.ConstantOp(vec_i32, DenseIntElementsAttr.get(i32_array, type=vec_i32))
-
- i64_array = array("l", [5, 6, 7, 8])
- i64 = IntegerType.get_signless(64)
- vec_i64 = VectorType.get([1, 4], i64)
- arith.constant(vec_i64, i64_array)
- arith.ConstantOp(vec_i64, DenseIntElementsAttr.get(i64_array, type=vec_i64))
-
- f32_array = array("f", [1.0, 2.0, 3.0, 4.0])
- f32 = F32Type.get()
- vec_f32 = VectorType.get([4, 1], f32)
- arith.constant(vec_f32, f32_array)
- arith.ConstantOp(vec_f32, DenseFPElementsAttr.get(f32_array, type=vec_f32))
-
- f64_array = array("d", [1.0, 2.0, 3.0, 4.0])
- f64 = F64Type.get()
- vec_f64 = VectorType.get([2, 1, 2], f64)
- arith.constant(vec_f64, f64_array)
- arith.ConstantOp(vec_f64, DenseFPElementsAttr.get(f64_array, type=vec_f64))
-
- # CHECK-COUNT-2: arith.constant dense<[{{\[}}1, 2], [3, 4]]> : vector<2x2xi32>
- # CHECK-COUNT-2: arith.constant dense<[{{\[}}5, 6, 7, 8]]> : vector<1x4xi64>
- # CHECK-COUNT-2: arith.constant dense<[{{\[}}1.000000e+00], [2.000000e+00], [3.000000e+00], [4.000000e+00]]> : vector<4x1xf32>
- # CHECK-COUNT-2: arith.constant dense<[{{\[}}[1.000000e+00, 2.000000e+00]], [{{\[}}3.000000e+00, 4.000000e+00]]]> : vector<2x1x2xf64>
- print(module)
|
makslevental
pushed a commit
to makslevental/python_bindings_fork
that referenced
this pull request
Aug 14, 2025
…#84142) Arithmetic constants for vector types can be constructed from objects implementing Python buffer protocol such as `array.array`. Note that until Python 3.12, there is no typing support for buffer protocol implementers, so the annotations use array explicitly. Reverts llvm/llvm-project#84103
makslevental
pushed a commit
to makslevental/python_bindings_fork
that referenced
this pull request
Aug 14, 2025
…#84142) Arithmetic constants for vector types can be constructed from objects implementing Python buffer protocol such as `array.array`. Note that until Python 3.12, there is no typing support for buffer protocol implementers, so the annotations use array explicitly. Reverts llvm/llvm-project#84103
makslevental
pushed a commit
to makslevental/python_bindings_fork
that referenced
this pull request
Aug 14, 2025
…#84142) Arithmetic constants for vector types can be constructed from objects implementing Python buffer protocol such as `array.array`. Note that until Python 3.12, there is no typing support for buffer protocol implementers, so the annotations use array explicitly. Reverts llvm/llvm-project#84103
bump-llvm bot
pushed a commit
to makslevental/python_bindings_fork
that referenced
this pull request
Aug 14, 2025
…#84142) Arithmetic constants for vector types can be constructed from objects implementing Python buffer protocol such as `array.array`. Note that until Python 3.12, there is no typing support for buffer protocol implementers, so the annotations use array explicitly. Reverts llvm/llvm-project#84103
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
mlir:python
MLIR Python bindings
mlir
skip-precommit-approval
PR for CI feedback, not intended for review
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Reverts #83259
This broke an integration test on Windows