| # 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("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 |