@@ -272,3 +272,47 @@ llvm.func @get_vector_scale() -> i64 {
272
272
%0 = " llvm.intr.vscale" () : () -> i64
273
273
llvm.return %0 : i64
274
274
}
275
+
276
+ // CHECK-LABEL: @arm_sve_convert_from_svbool(
277
+ // CHECK-SAME: <vscale x 16 x i1> %[[SVBOOL:[0-9]+]])
278
+ llvm.func @arm_sve_convert_from_svbool (%nxv16i1 : vector <[16 ]xi1 >) {
279
+ // CHECK: %[[RES0:.*]] = call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> %[[SVBOOL]])
280
+ %res0 = " arm_sve.intr.convert.from.svbool" (%nxv16i1 )
281
+ : (vector <[16 ]xi1 >) -> vector <[8 ]xi1 >
282
+ // CHECK: %[[RES1:.*]] = call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> %[[SVBOOL]])
283
+ %res1 = " arm_sve.intr.convert.from.svbool" (%nxv16i1 )
284
+ : (vector <[16 ]xi1 >) -> vector <[4 ]xi1 >
285
+ // CHECK: %[[RES2:.*]] = call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> %[[SVBOOL]])
286
+ %res2 = " arm_sve.intr.convert.from.svbool" (%nxv16i1 )
287
+ : (vector <[16 ]xi1 >) -> vector <[2 ]xi1 >
288
+ // CHECK: %[[RES3:.*]] = call <vscale x 1 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv1i1(<vscale x 16 x i1> %[[SVBOOL]])
289
+ %res3 = " arm_sve.intr.convert.from.svbool" (%nxv16i1 )
290
+ : (vector <[16 ]xi1 >) -> vector <[1 ]xi1 >
291
+ llvm.return
292
+ }
293
+
294
+ // CHECK-LABEL: arm_sve_convert_to_svbool(
295
+ // CHECK-SAME: <vscale x 8 x i1> %[[P8:[0-9]+]],
296
+ // CHECK-SAME: <vscale x 4 x i1> %[[P4:[0-9]+]],
297
+ // CHECK-SAME: <vscale x 2 x i1> %[[P2:[0-9]+]],
298
+ // CHECK-SAME: <vscale x 1 x i1> %[[P1:[0-9]+]])
299
+ llvm.func @arm_sve_convert_to_svbool (
300
+ %nxv8i1 : vector <[8 ]xi1 >,
301
+ %nxv4i1 : vector <[4 ]xi1 >,
302
+ %nxv2i1 : vector <[2 ]xi1 >,
303
+ %nxv1i1 : vector <[1 ]xi1 >
304
+ ) {
305
+ // CHECK-NEXT: %[[RES0:.*]] = call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv8i1(<vscale x 8 x i1> %[[P8]])
306
+ %res0 = " arm_sve.intr.convert.to.svbool" (%nxv8i1 )
307
+ : (vector <[8 ]xi1 >) -> vector <[16 ]xi1 >
308
+ // CHECK-NEXT: %[[RES1:.*]] = call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv4i1(<vscale x 4 x i1> %[[P4]])
309
+ %res1 = " arm_sve.intr.convert.to.svbool" (%nxv4i1 )
310
+ : (vector <[4 ]xi1 >) -> vector <[16 ]xi1 >
311
+ // CHECK-NEXT: %[[RES2:.*]] = call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv2i1(<vscale x 2 x i1> %[[P2]])
312
+ %res2 = " arm_sve.intr.convert.to.svbool" (%nxv2i1 )
313
+ : (vector <[2 ]xi1 >) -> vector <[16 ]xi1 >
314
+ // CHECK-NEXT: %[[RES3:.*]] = call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv1i1(<vscale x 1 x i1> %[[P1]])
315
+ %res3 = " arm_sve.intr.convert.to.svbool" (%nxv1i1 )
316
+ : (vector <[1 ]xi1 >) -> vector <[16 ]xi1 >
317
+ llvm.return
318
+ }
0 commit comments