1*eb861acdSSteven Varoumas# RUN: %PYTHON %s | FileCheck %s 2*eb861acdSSteven Varoumas 3*eb861acdSSteven Varoumasfrom mlir.ir import * 4*eb861acdSSteven Varoumasfrom mlir.dialects import index, arith 5*eb861acdSSteven Varoumas 6*eb861acdSSteven Varoumas 7*eb861acdSSteven Varoumasdef run(f): 8*eb861acdSSteven Varoumas print("\nTEST:", f.__name__) 9*eb861acdSSteven Varoumas with Context() as ctx, Location.unknown(): 10*eb861acdSSteven Varoumas module = Module.create() 11*eb861acdSSteven Varoumas with InsertionPoint(module.body): 12*eb861acdSSteven Varoumas f(ctx) 13*eb861acdSSteven Varoumas print(module) 14*eb861acdSSteven Varoumas 15*eb861acdSSteven Varoumas 16*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testConstantOp 17*eb861acdSSteven Varoumas@run 18*eb861acdSSteven Varoumasdef testConstantOp(ctx): 19*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 20*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.constant 42 21*eb861acdSSteven Varoumas 22*eb861acdSSteven Varoumas 23*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testBoolConstantOp 24*eb861acdSSteven Varoumas@run 25*eb861acdSSteven Varoumasdef testBoolConstantOp(ctx): 26*eb861acdSSteven Varoumas a = index.BoolConstantOp(value=True) 27*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.bool.constant true 28*eb861acdSSteven Varoumas 29*eb861acdSSteven Varoumas 30*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testAndOp 31*eb861acdSSteven Varoumas@run 32*eb861acdSSteven Varoumasdef testAndOp(ctx): 33*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 34*eb861acdSSteven Varoumas r = index.AndOp(a, a) 35*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.and %{{.*}}, %{{.*}} 36*eb861acdSSteven Varoumas 37*eb861acdSSteven Varoumas 38*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testOrOp 39*eb861acdSSteven Varoumas@run 40*eb861acdSSteven Varoumasdef testOrOp(ctx): 41*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 42*eb861acdSSteven Varoumas r = index.OrOp(a, a) 43*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.or %{{.*}}, %{{.*}} 44*eb861acdSSteven Varoumas 45*eb861acdSSteven Varoumas 46*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testXOrOp 47*eb861acdSSteven Varoumas@run 48*eb861acdSSteven Varoumasdef testXOrOp(ctx): 49*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 50*eb861acdSSteven Varoumas r = index.XOrOp(a, a) 51*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.xor %{{.*}}, %{{.*}} 52*eb861acdSSteven Varoumas 53*eb861acdSSteven Varoumas 54*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testCastSOp 55*eb861acdSSteven Varoumas@run 56*eb861acdSSteven Varoumasdef testCastSOp(ctx): 57*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 58*eb861acdSSteven Varoumas b = arith.ConstantOp(value=23, result=IntegerType.get_signless(64)) 59*eb861acdSSteven Varoumas c = index.CastSOp(input=a, output=IntegerType.get_signless(32)) 60*eb861acdSSteven Varoumas d = index.CastSOp(input=b, output=IndexType.get()) 61*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.casts %{{.*}} : index to i32 62*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.casts %{{.*}} : i64 to index 63*eb861acdSSteven Varoumas 64*eb861acdSSteven Varoumas 65*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testCastUOp 66*eb861acdSSteven Varoumas@run 67*eb861acdSSteven Varoumasdef testCastUOp(ctx): 68*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 69*eb861acdSSteven Varoumas b = arith.ConstantOp(value=23, result=IntegerType.get_signless(64)) 70*eb861acdSSteven Varoumas c = index.CastUOp(input=a, output=IntegerType.get_signless(32)) 71*eb861acdSSteven Varoumas d = index.CastUOp(input=b, output=IndexType.get()) 72*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.castu %{{.*}} : index to i32 73*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.castu %{{.*}} : i64 to index 74*eb861acdSSteven Varoumas 75*eb861acdSSteven Varoumas 76*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testCeilDivSOp 77*eb861acdSSteven Varoumas@run 78*eb861acdSSteven Varoumasdef testCeilDivSOp(ctx): 79*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 80*eb861acdSSteven Varoumas r = index.CeilDivSOp(a, a) 81*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.ceildivs %{{.*}}, %{{.*}} 82*eb861acdSSteven Varoumas 83*eb861acdSSteven Varoumas 84*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testCeilDivUOp 85*eb861acdSSteven Varoumas@run 86*eb861acdSSteven Varoumasdef testCeilDivUOp(ctx): 87*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 88*eb861acdSSteven Varoumas r = index.CeilDivUOp(a, a) 89*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.ceildivu %{{.*}}, %{{.*}} 90*eb861acdSSteven Varoumas 91*eb861acdSSteven Varoumas 92*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testCmpOp 93*eb861acdSSteven Varoumas@run 94*eb861acdSSteven Varoumasdef testCmpOp(ctx): 95*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 96*eb861acdSSteven Varoumas b = index.ConstantOp(value=23) 97*eb861acdSSteven Varoumas pred = AttrBuilder.get("IndexCmpPredicateAttr")("slt", context=ctx) 98*eb861acdSSteven Varoumas r = index.CmpOp(pred, lhs=a, rhs=b) 99*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.cmp slt(%{{.*}}, %{{.*}}) 100*eb861acdSSteven Varoumas 101*eb861acdSSteven Varoumas 102*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testAddOp 103*eb861acdSSteven Varoumas@run 104*eb861acdSSteven Varoumasdef testAddOp(ctx): 105*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 106*eb861acdSSteven Varoumas r = index.AddOp(a, a) 107*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.add %{{.*}}, %{{.*}} 108*eb861acdSSteven Varoumas 109*eb861acdSSteven Varoumas 110*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testSubOp 111*eb861acdSSteven Varoumas@run 112*eb861acdSSteven Varoumasdef testSubOp(ctx): 113*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 114*eb861acdSSteven Varoumas r = index.SubOp(a, a) 115*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.sub %{{.*}}, %{{.*}} 116*eb861acdSSteven Varoumas 117*eb861acdSSteven Varoumas 118*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testMulOp 119*eb861acdSSteven Varoumas@run 120*eb861acdSSteven Varoumasdef testMulOp(ctx): 121*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 122*eb861acdSSteven Varoumas r = index.MulOp(a, a) 123*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.mul %{{.*}}, %{{.*}} 124*eb861acdSSteven Varoumas 125*eb861acdSSteven Varoumas 126*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testDivSOp 127*eb861acdSSteven Varoumas@run 128*eb861acdSSteven Varoumasdef testDivSOp(ctx): 129*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 130*eb861acdSSteven Varoumas r = index.DivSOp(a, a) 131*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.divs %{{.*}}, %{{.*}} 132*eb861acdSSteven Varoumas 133*eb861acdSSteven Varoumas 134*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testDivUOp 135*eb861acdSSteven Varoumas@run 136*eb861acdSSteven Varoumasdef testDivUOp(ctx): 137*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 138*eb861acdSSteven Varoumas r = index.DivUOp(a, a) 139*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.divu %{{.*}}, %{{.*}} 140*eb861acdSSteven Varoumas 141*eb861acdSSteven Varoumas 142*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testFloorDivSOp 143*eb861acdSSteven Varoumas@run 144*eb861acdSSteven Varoumasdef testFloorDivSOp(ctx): 145*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 146*eb861acdSSteven Varoumas r = index.FloorDivSOp(a, a) 147*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.floordivs %{{.*}}, %{{.*}} 148*eb861acdSSteven Varoumas 149*eb861acdSSteven Varoumas 150*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testMaxSOp 151*eb861acdSSteven Varoumas@run 152*eb861acdSSteven Varoumasdef testMaxSOp(ctx): 153*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 154*eb861acdSSteven Varoumas b = index.ConstantOp(value=23) 155*eb861acdSSteven Varoumas r = index.MaxSOp(a, b) 156*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.maxs %{{.*}}, %{{.*}} 157*eb861acdSSteven Varoumas 158*eb861acdSSteven Varoumas 159*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testMaxUOp 160*eb861acdSSteven Varoumas@run 161*eb861acdSSteven Varoumasdef testMaxUOp(ctx): 162*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 163*eb861acdSSteven Varoumas b = index.ConstantOp(value=23) 164*eb861acdSSteven Varoumas r = index.MaxUOp(a, b) 165*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.maxu %{{.*}}, %{{.*}} 166*eb861acdSSteven Varoumas 167*eb861acdSSteven Varoumas 168*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testMinSOp 169*eb861acdSSteven Varoumas@run 170*eb861acdSSteven Varoumasdef testMinSOp(ctx): 171*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 172*eb861acdSSteven Varoumas b = index.ConstantOp(value=23) 173*eb861acdSSteven Varoumas r = index.MinSOp(a, b) 174*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.mins %{{.*}}, %{{.*}} 175*eb861acdSSteven Varoumas 176*eb861acdSSteven Varoumas 177*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testMinUOp 178*eb861acdSSteven Varoumas@run 179*eb861acdSSteven Varoumasdef testMinUOp(ctx): 180*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 181*eb861acdSSteven Varoumas b = index.ConstantOp(value=23) 182*eb861acdSSteven Varoumas r = index.MinUOp(a, b) 183*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.minu %{{.*}}, %{{.*}} 184*eb861acdSSteven Varoumas 185*eb861acdSSteven Varoumas 186*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testRemSOp 187*eb861acdSSteven Varoumas@run 188*eb861acdSSteven Varoumasdef testRemSOp(ctx): 189*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 190*eb861acdSSteven Varoumas b = index.ConstantOp(value=23) 191*eb861acdSSteven Varoumas r = index.RemSOp(a, b) 192*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.rems %{{.*}}, %{{.*}} 193*eb861acdSSteven Varoumas 194*eb861acdSSteven Varoumas 195*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testRemUOp 196*eb861acdSSteven Varoumas@run 197*eb861acdSSteven Varoumasdef testRemUOp(ctx): 198*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 199*eb861acdSSteven Varoumas b = index.ConstantOp(value=23) 200*eb861acdSSteven Varoumas r = index.RemUOp(a, b) 201*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.remu %{{.*}}, %{{.*}} 202*eb861acdSSteven Varoumas 203*eb861acdSSteven Varoumas 204*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testShlOp 205*eb861acdSSteven Varoumas@run 206*eb861acdSSteven Varoumasdef testShlOp(ctx): 207*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 208*eb861acdSSteven Varoumas b = index.ConstantOp(value=3) 209*eb861acdSSteven Varoumas r = index.ShlOp(a, b) 210*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.shl %{{.*}}, %{{.*}} 211*eb861acdSSteven Varoumas 212*eb861acdSSteven Varoumas 213*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testShrSOp 214*eb861acdSSteven Varoumas@run 215*eb861acdSSteven Varoumasdef testShrSOp(ctx): 216*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 217*eb861acdSSteven Varoumas b = index.ConstantOp(value=3) 218*eb861acdSSteven Varoumas r = index.ShrSOp(a, b) 219*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.shrs %{{.*}}, %{{.*}} 220*eb861acdSSteven Varoumas 221*eb861acdSSteven Varoumas 222*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testShrUOp 223*eb861acdSSteven Varoumas@run 224*eb861acdSSteven Varoumasdef testShrUOp(ctx): 225*eb861acdSSteven Varoumas a = index.ConstantOp(value=42) 226*eb861acdSSteven Varoumas b = index.ConstantOp(value=3) 227*eb861acdSSteven Varoumas r = index.ShrUOp(a, b) 228*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.shru %{{.*}}, %{{.*}} 229*eb861acdSSteven Varoumas 230*eb861acdSSteven Varoumas 231*eb861acdSSteven Varoumas# CHECK-LABEL: TEST: testSizeOfOp 232*eb861acdSSteven Varoumas@run 233*eb861acdSSteven Varoumasdef testSizeOfOp(ctx): 234*eb861acdSSteven Varoumas r = index.SizeOfOp() 235*eb861acdSSteven Varoumas # CHECK: %{{.*}} = index.sizeof 236