@@ -37,6 +37,8 @@ func.func @vector_ops(%arg0: vector<4xf32>, %arg1: vector<4xi1>, %arg2: vector<4
37
37
return %1 : vector <4 xf32 >
38
38
}
39
39
40
+ // -----
41
+
40
42
// CHECK-LABEL: @ops
41
43
func.func @ops (f32 , f32 , i32 , i32 , f64 ) -> (f32 , i32 ) {
42
44
^bb0 (%arg0: f32 , %arg1: f32 , %arg2: i32 , %arg3: i32 , %arg4: f64 ):
@@ -84,9 +86,14 @@ func.func @ops(f32, f32, i32, i32, f64) -> (f32, i32) {
84
86
%20 = arith.shrsi %arg2 , %arg3 : i32
85
87
// CHECK: = llvm.lshr %arg2, %arg3 : i32
86
88
%21 = arith.shrui %arg2 , %arg3 : i32
89
+ // CHECK: arith.constant 2.000000e+00 : tf32
90
+ // There is no type conversion rule for tf32.
91
+ %22 = arith.constant 2.0 : tf32
87
92
return %0 , %10 : f32 , i32
88
93
}
89
94
95
+ // -----
96
+
90
97
// Checking conversion of index types to integers using i1, assuming no target
91
98
// system would have a 1-bit address space. Otherwise, we would have had to
92
99
// make this test dependent on the pointer size on the target system.
@@ -99,6 +106,8 @@ func.func @index_cast(%arg0: index, %arg1: i1) {
99
106
return
100
107
}
101
108
109
+ // -----
110
+
102
111
// CHECK-LABEL: @vector_index_cast
103
112
func.func @vector_index_cast (%arg0: vector <2 xindex >, %arg1: vector <2 xi1 >) {
104
113
// CHECK: = llvm.trunc %{{.*}} : vector<2xi{{.*}}> to vector<2xi1>
@@ -108,6 +117,8 @@ func.func @vector_index_cast(%arg0: vector<2xindex>, %arg1: vector<2xi1>) {
108
117
return
109
118
}
110
119
120
+ // -----
121
+
111
122
func.func @index_castui (%arg0: index , %arg1: i1 ) {
112
123
// CHECK: = llvm.trunc %0 : i{{.*}} to i1
113
124
%0 = arith.index_castui %arg0: index to i1
@@ -116,6 +127,8 @@ func.func @index_castui(%arg0: index, %arg1: i1) {
116
127
return
117
128
}
118
129
130
+ // -----
131
+
119
132
// CHECK-LABEL: @vector_index_castui
120
133
func.func @vector_index_castui (%arg0: vector <2 xindex >, %arg1: vector <2 xi1 >) {
121
134
// CHECK: = llvm.trunc %{{.*}} : vector<2xi{{.*}}> to vector<2xi1>
@@ -125,6 +138,8 @@ func.func @vector_index_castui(%arg0: vector<2xindex>, %arg1: vector<2xi1>) {
125
138
return
126
139
}
127
140
141
+ // -----
142
+
128
143
// Checking conversion of signed integer types to floating point.
129
144
// CHECK-LABEL: @sitofp
130
145
func.func @sitofp (%arg0 : i32 , %arg1 : i64 ) {
@@ -139,6 +154,8 @@ func.func @sitofp(%arg0 : i32, %arg1 : i64) {
139
154
return
140
155
}
141
156
157
+ // -----
158
+
142
159
// Checking conversion of integer vectors to floating point vector types.
143
160
// CHECK-LABEL: @sitofp_vector
144
161
func.func @sitofp_vector (%arg0 : vector <2 xi16 >, %arg1 : vector <2 xi32 >, %arg2 : vector <2 xi64 >) {
@@ -157,6 +174,8 @@ func.func @sitofp_vector(%arg0 : vector<2xi16>, %arg1 : vector<2xi32>, %arg2 : v
157
174
return
158
175
}
159
176
177
+ // -----
178
+
160
179
// Checking conversion of unsigned integer types to floating point.
161
180
// CHECK-LABEL: @uitofp
162
181
func.func @uitofp (%arg0 : i32 , %arg1 : i64 ) {
@@ -171,6 +190,8 @@ func.func @uitofp(%arg0 : i32, %arg1 : i64) {
171
190
return
172
191
}
173
192
193
+ // -----
194
+
174
195
// Checking conversion of integer types to floating point.
175
196
// CHECK-LABEL: @fpext
176
197
func.func @fpext (%arg0 : f16 , %arg1 : f32 ) {
@@ -183,6 +204,8 @@ func.func @fpext(%arg0 : f16, %arg1 : f32) {
183
204
return
184
205
}
185
206
207
+ // -----
208
+
186
209
// Checking conversion of integer types to floating point.
187
210
// CHECK-LABEL: @fpext
188
211
func.func @fpext_vector (%arg0 : vector <2 xf16 >, %arg1 : vector <2 xf32 >) {
@@ -195,6 +218,8 @@ func.func @fpext_vector(%arg0 : vector<2xf16>, %arg1 : vector<2xf32>) {
195
218
return
196
219
}
197
220
221
+ // -----
222
+
198
223
// Checking conversion of floating point to integer types.
199
224
// CHECK-LABEL: @fptosi
200
225
func.func @fptosi (%arg0 : f32 , %arg1 : f64 ) {
@@ -209,6 +234,8 @@ func.func @fptosi(%arg0 : f32, %arg1 : f64) {
209
234
return
210
235
}
211
236
237
+ // -----
238
+
212
239
// Checking conversion of floating point vectors to integer vector types.
213
240
// CHECK-LABEL: @fptosi_vector
214
241
func.func @fptosi_vector (%arg0 : vector <2 xf16 >, %arg1 : vector <2 xf32 >, %arg2 : vector <2 xf64 >) {
@@ -227,6 +254,8 @@ func.func @fptosi_vector(%arg0 : vector<2xf16>, %arg1 : vector<2xf32>, %arg2 : v
227
254
return
228
255
}
229
256
257
+ // -----
258
+
230
259
// Checking conversion of floating point to integer types.
231
260
// CHECK-LABEL: @fptoui
232
261
func.func @fptoui (%arg0 : f32 , %arg1 : f64 ) {
@@ -241,6 +270,8 @@ func.func @fptoui(%arg0 : f32, %arg1 : f64) {
241
270
return
242
271
}
243
272
273
+ // -----
274
+
244
275
// Checking conversion of floating point vectors to integer vector types.
245
276
// CHECK-LABEL: @fptoui_vector
246
277
func.func @fptoui_vector (%arg0 : vector <2 xf16 >, %arg1 : vector <2 xf32 >, %arg2 : vector <2 xf64 >) {
@@ -259,6 +290,8 @@ func.func @fptoui_vector(%arg0 : vector<2xf16>, %arg1 : vector<2xf32>, %arg2 : v
259
290
return
260
291
}
261
292
293
+ // -----
294
+
262
295
// Checking conversion of integer vectors to floating point vector types.
263
296
// CHECK-LABEL: @uitofp_vector
264
297
func.func @uitofp_vector (%arg0 : vector <2 xi16 >, %arg1 : vector <2 xi32 >, %arg2 : vector <2 xi64 >) {
@@ -277,6 +310,8 @@ func.func @uitofp_vector(%arg0 : vector<2xi16>, %arg1 : vector<2xi32>, %arg2 : v
277
310
return
278
311
}
279
312
313
+ // -----
314
+
280
315
// Checking conversion of integer types to floating point.
281
316
// CHECK-LABEL: @fptrunc
282
317
func.func @fptrunc (%arg0 : f32 , %arg1 : f64 ) {
@@ -289,6 +324,8 @@ func.func @fptrunc(%arg0 : f32, %arg1 : f64) {
289
324
return
290
325
}
291
326
327
+ // -----
328
+
292
329
// Checking conversion of integer types to floating point.
293
330
// CHECK-LABEL: @fptrunc
294
331
func.func @fptrunc_vector (%arg0 : vector <2 xf32 >, %arg1 : vector <2 xf64 >) {
@@ -301,6 +338,8 @@ func.func @fptrunc_vector(%arg0 : vector<2xf32>, %arg1 : vector<2xf64>) {
301
338
return
302
339
}
303
340
341
+ // -----
342
+
304
343
// CHECK-LABEL: experimental_constrained_fptrunc
305
344
func.func @experimental_constrained_fptrunc (%arg0 : f64 ) {
306
345
// CHECK-NEXT: = llvm.intr.experimental.constrained.fptrunc {{.*}} tonearest ignore : f64 to f32
@@ -316,6 +355,8 @@ func.func @experimental_constrained_fptrunc(%arg0 : f64) {
316
355
return
317
356
}
318
357
358
+ // -----
359
+
319
360
// Check sign and zero extension and truncation of integers.
320
361
// CHECK-LABEL: @integer_extension_and_truncation
321
362
func.func @integer_extension_and_truncation (%arg0 : i3 ) {
@@ -328,6 +369,8 @@ func.func @integer_extension_and_truncation(%arg0 : i3) {
328
369
return
329
370
}
330
371
372
+ // -----
373
+
331
374
// CHECK-LABEL: @integer_cast_0d_vector
332
375
func.func @integer_cast_0d_vector (%arg0 : vector <i3 >) {
333
376
// CHECK: %[[ARG0:.*]] = builtin.unrealized_conversion_cast
@@ -340,6 +383,8 @@ func.func @integer_cast_0d_vector(%arg0 : vector<i3>) {
340
383
return
341
384
}
342
385
386
+ // -----
387
+
343
388
// CHECK-LABEL: func @fcmp(%arg0: f32, %arg1: f32) {
344
389
func.func @fcmp (f32 , f32 ) -> () {
345
390
^bb0 (%arg0: f32 , %arg1: f32 ):
0 commit comments