diff options
Diffstat (limited to 'mlir/test/python')
-rw-r--r-- | mlir/test/python/dialects/transform_smt_ext.py | 30 | ||||
-rw-r--r-- | mlir/test/python/ir/operation.py | 28 |
2 files changed, 47 insertions, 11 deletions
diff --git a/mlir/test/python/dialects/transform_smt_ext.py b/mlir/test/python/dialects/transform_smt_ext.py index 3692fd9..e28c56f 100644 --- a/mlir/test/python/dialects/transform_smt_ext.py +++ b/mlir/test/python/dialects/transform_smt_ext.py @@ -25,26 +25,44 @@ def run(f): # CHECK-LABEL: TEST: testConstrainParamsOp @run def testConstrainParamsOp(target): - dummy_value = ir.IntegerAttr.get(ir.IntegerType.get_signless(32), 42) + c42_attr = ir.IntegerAttr.get(ir.IntegerType.get_signless(32), 42) # CHECK: %[[PARAM_AS_PARAM:.*]] = transform.param.constant - symbolic_value = transform.ParamConstantOp( - transform.AnyParamType.get(), dummy_value + symbolic_value_as_param = transform.ParamConstantOp( + transform.AnyParamType.get(), c42_attr ) # CHECK: transform.smt.constrain_params(%[[PARAM_AS_PARAM]]) constrain_params = transform_smt.ConstrainParamsOp( - [symbolic_value], [smt.IntType.get()] + [], [symbolic_value_as_param], [smt.IntType.get()] ) # CHECK-NEXT: ^bb{{.*}}(%[[PARAM_AS_SMT_SYMB:.*]]: !smt.int): with ir.InsertionPoint(constrain_params.body): + symbolic_value_as_smt_var = constrain_params.body.arguments[0] # CHECK: %[[C0:.*]] = smt.int.constant 0 c0 = smt.IntConstantOp(ir.IntegerAttr.get(ir.IntegerType.get_signless(32), 0)) # CHECK: %[[C43:.*]] = smt.int.constant 43 c43 = smt.IntConstantOp(ir.IntegerAttr.get(ir.IntegerType.get_signless(32), 43)) # CHECK: %[[LB:.*]] = smt.int.cmp le %[[C0]], %[[PARAM_AS_SMT_SYMB]] - lb = smt.IntCmpOp(smt.IntPredicate.le, c0, constrain_params.body.arguments[0]) + lb = smt.IntCmpOp(smt.IntPredicate.le, c0, symbolic_value_as_smt_var) # CHECK: %[[UB:.*]] = smt.int.cmp le %[[PARAM_AS_SMT_SYMB]], %[[C43]] - ub = smt.IntCmpOp(smt.IntPredicate.le, constrain_params.body.arguments[0], c43) + ub = smt.IntCmpOp(smt.IntPredicate.le, symbolic_value_as_smt_var, c43) # CHECK: %[[BOUNDED:.*]] = smt.and %[[LB]], %[[UB]] bounded = smt.AndOp([lb, ub]) # CHECK: smt.assert %[[BOUNDED:.*]] smt.AssertOp(bounded) + smt.YieldOp([]) + + # CHECK: transform.smt.constrain_params(%[[PARAM_AS_PARAM]]) + compute_with_params = transform_smt.ConstrainParamsOp( + [transform.ParamType.get(ir.IntegerType.get_signless(32))], + [symbolic_value_as_param], + [smt.IntType.get()], + ) + # CHECK-NEXT: ^bb{{.*}}(%[[SMT_SYMB:.*]]: !smt.int): + with ir.InsertionPoint(compute_with_params.body): + symbolic_value_as_smt_var = compute_with_params.body.arguments[0] + # CHECK: %[[TWICE:.*]] = smt.int.add %[[SMT_SYMB]], %[[SMT_SYMB]] + twice_symb = smt.IntAddOp( + [symbolic_value_as_smt_var, symbolic_value_as_smt_var] + ) + # CHECK: smt.yield %[[TWICE]] + smt.YieldOp([twice_symb]) diff --git a/mlir/test/python/ir/operation.py b/mlir/test/python/ir/operation.py index cb4cfc8c..1d4ede1 100644 --- a/mlir/test/python/ir/operation.py +++ b/mlir/test/python/ir/operation.py @@ -569,12 +569,30 @@ def testOperationAttributes(): # CHECK: Attribute value b'text' print(f"Attribute value {sattr.value_bytes}") + # Python dict-style iteration # We don't know in which order the attributes are stored. - # CHECK-DAG: NamedAttribute(dependent="text") - # CHECK-DAG: NamedAttribute(other.attribute=3.000000e+00 : f64) - # CHECK-DAG: NamedAttribute(some.attribute=1 : i8) - for attr in op.attributes: - print(str(attr)) + # CHECK-DAG: dependent + # CHECK-DAG: other.attribute + # CHECK-DAG: some.attribute + for name in op.attributes: + print(name) + + # Basic dict-like introspection + # CHECK: True + print("some.attribute" in op.attributes) + # CHECK: False + print("missing" in op.attributes) + # CHECK: Keys: ['dependent', 'other.attribute', 'some.attribute'] + print("Keys:", sorted(op.attributes.keys())) + # CHECK: Values count 3 + print("Values count", len(op.attributes.values())) + # CHECK: Items count 3 + print("Items count", len(op.attributes.items())) + + # Dict() conversion test + d = {k: v.value for k, v in dict(op.attributes).items()} + # CHECK: Dict mapping {'dependent': 'text', 'other.attribute': 3.0, 'some.attribute': 1} + print("Dict mapping", d) # Check that exceptions are raised as expected. try: |