xref: /llvm-project/mlir/test/python/dialects/index_dialect.py (revision eb861acd49e4c6777e2fe09dd2004ac1f4731bba)
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