| # RUN: %PYTHON %s | FileCheck %s | |
| from mlir.ir import * | |
| from mlir.dialects import index, arith | |
| def run(f): | |
| print("\nTEST:", f.__name__) | |
| with Context() as ctx, Location.unknown(): | |
| module = Module.create() | |
| with InsertionPoint(module.body): | |
| f(ctx) | |
| print(module) | |
| # CHECK-LABEL: TEST: testConstantOp | |
| @run | |
| def testConstantOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| # CHECK: %{{.*}} = index.constant 42 | |
| # CHECK-LABEL: TEST: testBoolConstantOp | |
| @run | |
| def testBoolConstantOp(ctx): | |
| a = index.BoolConstantOp(value=True) | |
| # CHECK: %{{.*}} = index.bool.constant true | |
| # CHECK-LABEL: TEST: testAndOp | |
| @run | |
| def testAndOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| r = index.AndOp(a, a) | |
| # CHECK: %{{.*}} = index.and %{{.*}}, %{{.*}} | |
| # CHECK-LABEL: TEST: testOrOp | |
| @run | |
| def testOrOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| r = index.OrOp(a, a) | |
| # CHECK: %{{.*}} = index.or %{{.*}}, %{{.*}} | |
| # CHECK-LABEL: TEST: testXOrOp | |
| @run | |
| def testXOrOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| r = index.XOrOp(a, a) | |
| # CHECK: %{{.*}} = index.xor %{{.*}}, %{{.*}} | |
| # CHECK-LABEL: TEST: testCastSOp | |
| @run | |
| def testCastSOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| b = arith.ConstantOp(value=23, result=IntegerType.get_signless(64)) | |
| c = index.CastSOp(input=a, output=IntegerType.get_signless(32)) | |
| d = index.CastSOp(input=b, output=IndexType.get()) | |
| # CHECK: %{{.*}} = index.casts %{{.*}} : index to i32 | |
| # CHECK: %{{.*}} = index.casts %{{.*}} : i64 to index | |
| # CHECK-LABEL: TEST: testCastUOp | |
| @run | |
| def testCastUOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| b = arith.ConstantOp(value=23, result=IntegerType.get_signless(64)) | |
| c = index.CastUOp(input=a, output=IntegerType.get_signless(32)) | |
| d = index.CastUOp(input=b, output=IndexType.get()) | |
| # CHECK: %{{.*}} = index.castu %{{.*}} : index to i32 | |
| # CHECK: %{{.*}} = index.castu %{{.*}} : i64 to index | |
| # CHECK-LABEL: TEST: testCeilDivSOp | |
| @run | |
| def testCeilDivSOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| r = index.CeilDivSOp(a, a) | |
| # CHECK: %{{.*}} = index.ceildivs %{{.*}}, %{{.*}} | |
| # CHECK-LABEL: TEST: testCeilDivUOp | |
| @run | |
| def testCeilDivUOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| r = index.CeilDivUOp(a, a) | |
| # CHECK: %{{.*}} = index.ceildivu %{{.*}}, %{{.*}} | |
| # CHECK-LABEL: TEST: testCmpOp | |
| @run | |
| def testCmpOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| b = index.ConstantOp(value=23) | |
| pred = AttrBuilder.get("index.IndexCmpPredicateAttr")("slt", context=ctx) | |
| r = index.CmpOp(pred, lhs=a, rhs=b) | |
| # CHECK: %{{.*}} = index.cmp slt(%{{.*}}, %{{.*}}) | |
| # CHECK-LABEL: TEST: testAddOp | |
| @run | |
| def testAddOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| r = index.AddOp(a, a) | |
| # CHECK: %{{.*}} = index.add %{{.*}}, %{{.*}} | |
| # CHECK-LABEL: TEST: testSubOp | |
| @run | |
| def testSubOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| r = index.SubOp(a, a) | |
| # CHECK: %{{.*}} = index.sub %{{.*}}, %{{.*}} | |
| # CHECK-LABEL: TEST: testMulOp | |
| @run | |
| def testMulOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| r = index.MulOp(a, a) | |
| # CHECK: %{{.*}} = index.mul %{{.*}}, %{{.*}} | |
| # CHECK-LABEL: TEST: testDivSOp | |
| @run | |
| def testDivSOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| r = index.DivSOp(a, a) | |
| # CHECK: %{{.*}} = index.divs %{{.*}}, %{{.*}} | |
| # CHECK-LABEL: TEST: testDivUOp | |
| @run | |
| def testDivUOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| r = index.DivUOp(a, a) | |
| # CHECK: %{{.*}} = index.divu %{{.*}}, %{{.*}} | |
| # CHECK-LABEL: TEST: testFloorDivSOp | |
| @run | |
| def testFloorDivSOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| r = index.FloorDivSOp(a, a) | |
| # CHECK: %{{.*}} = index.floordivs %{{.*}}, %{{.*}} | |
| # CHECK-LABEL: TEST: testMaxSOp | |
| @run | |
| def testMaxSOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| b = index.ConstantOp(value=23) | |
| r = index.MaxSOp(a, b) | |
| # CHECK: %{{.*}} = index.maxs %{{.*}}, %{{.*}} | |
| # CHECK-LABEL: TEST: testMaxUOp | |
| @run | |
| def testMaxUOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| b = index.ConstantOp(value=23) | |
| r = index.MaxUOp(a, b) | |
| # CHECK: %{{.*}} = index.maxu %{{.*}}, %{{.*}} | |
| # CHECK-LABEL: TEST: testMinSOp | |
| @run | |
| def testMinSOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| b = index.ConstantOp(value=23) | |
| r = index.MinSOp(a, b) | |
| # CHECK: %{{.*}} = index.mins %{{.*}}, %{{.*}} | |
| # CHECK-LABEL: TEST: testMinUOp | |
| @run | |
| def testMinUOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| b = index.ConstantOp(value=23) | |
| r = index.MinUOp(a, b) | |
| # CHECK: %{{.*}} = index.minu %{{.*}}, %{{.*}} | |
| # CHECK-LABEL: TEST: testRemSOp | |
| @run | |
| def testRemSOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| b = index.ConstantOp(value=23) | |
| r = index.RemSOp(a, b) | |
| # CHECK: %{{.*}} = index.rems %{{.*}}, %{{.*}} | |
| # CHECK-LABEL: TEST: testRemUOp | |
| @run | |
| def testRemUOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| b = index.ConstantOp(value=23) | |
| r = index.RemUOp(a, b) | |
| # CHECK: %{{.*}} = index.remu %{{.*}}, %{{.*}} | |
| # CHECK-LABEL: TEST: testShlOp | |
| @run | |
| def testShlOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| b = index.ConstantOp(value=3) | |
| r = index.ShlOp(a, b) | |
| # CHECK: %{{.*}} = index.shl %{{.*}}, %{{.*}} | |
| # CHECK-LABEL: TEST: testShrSOp | |
| @run | |
| def testShrSOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| b = index.ConstantOp(value=3) | |
| r = index.ShrSOp(a, b) | |
| # CHECK: %{{.*}} = index.shrs %{{.*}}, %{{.*}} | |
| # CHECK-LABEL: TEST: testShrUOp | |
| @run | |
| def testShrUOp(ctx): | |
| a = index.ConstantOp(value=42) | |
| b = index.ConstantOp(value=3) | |
| r = index.ShrUOp(a, b) | |
| # CHECK: %{{.*}} = index.shru %{{.*}}, %{{.*}} | |
| # CHECK-LABEL: TEST: testSizeOfOp | |
| @run | |
| def testSizeOfOp(ctx): | |
| r = index.SizeOfOp() | |
| # CHECK: %{{.*}} = index.sizeof |