3
3
; RUN: llc -mtriple=riscv64 -mattr=+v,+zvfh -verify-machineinstrs < %s | FileCheck %s -check-prefixes=CHECK,RV64
4
4
; RUN: llc -mtriple=riscv32 -mattr=+v,+zvfh,+zvkb -verify-machineinstrs < %s | FileCheck %s -check-prefixes=ZVKB-V
5
5
; RUN: llc -mtriple=riscv64 -mattr=+v,+zvfh,+zvkb -verify-machineinstrs < %s | FileCheck %s -check-prefixes=ZVKB-V
6
- ; RUN: llc -mtriple=riscv32 -mattr=+zve32x,+zvfh,+zvkb -verify-machineinstrs < %s | FileCheck %s -check-prefixes=ZVKB-ZVE32X
7
- ; RUN: llc -mtriple=riscv64 -mattr=+zve32x,+zvfh,+zvkb -verify-machineinstrs < %s | FileCheck %s -check-prefixes=ZVKB-ZVE32X
6
+ ; RUN: llc -mtriple=riscv32 -mattr=+zve32x,+zvfh,+zvkb,+zvl64b -verify-machineinstrs < %s | FileCheck %s -check-prefixes=ZVKB-ZVE32X
7
+ ; RUN: llc -mtriple=riscv64 -mattr=+zve32x,+zvfh,+zvkb,+zvl64b -verify-machineinstrs < %s | FileCheck %s -check-prefixes=ZVKB-ZVE32X
8
8
9
9
define <8 x i1 > @shuffle_v8i1_as_i8_1 (<8 x i1 > %v ) {
10
10
; CHECK-LABEL: shuffle_v8i1_as_i8_1:
@@ -191,7 +191,7 @@ define <8 x i8> @shuffle_v8i8_as_i16(<8 x i8> %v) {
191
191
;
192
192
; ZVKB-ZVE32X-LABEL: shuffle_v8i8_as_i16:
193
193
; ZVKB-ZVE32X: # %bb.0:
194
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 4, e16, m2 , ta, ma
194
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 4, e16, m1 , ta, ma
195
195
; ZVKB-ZVE32X-NEXT: vrev8.v v8, v8
196
196
; ZVKB-ZVE32X-NEXT: ret
197
197
%shuffle = shufflevector <8 x i8 > %v , <8 x i8 > poison, <8 x i32 > <i32 1 , i32 0 , i32 3 , i32 2 , i32 5 , i32 4 , i32 7 , i32 6 >
@@ -215,7 +215,7 @@ define <8 x i8> @shuffle_v8i8_as_i32_8(<8 x i8> %v) {
215
215
;
216
216
; ZVKB-ZVE32X-LABEL: shuffle_v8i8_as_i32_8:
217
217
; ZVKB-ZVE32X: # %bb.0:
218
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 2, e32, m2 , ta, ma
218
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 2, e32, m1 , ta, ma
219
219
; ZVKB-ZVE32X-NEXT: vror.vi v8, v8, 8
220
220
; ZVKB-ZVE32X-NEXT: ret
221
221
%shuffle = shufflevector <8 x i8 > %v , <8 x i8 > poison, <8 x i32 > <i32 1 , i32 2 , i32 3 , i32 0 , i32 5 , i32 6 , i32 7 , i32 4 >
@@ -239,7 +239,7 @@ define <8 x i8> @shuffle_v8i8_as_i32_16(<8 x i8> %v) {
239
239
;
240
240
; ZVKB-ZVE32X-LABEL: shuffle_v8i8_as_i32_16:
241
241
; ZVKB-ZVE32X: # %bb.0:
242
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 2, e32, m2 , ta, ma
242
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 2, e32, m1 , ta, ma
243
243
; ZVKB-ZVE32X-NEXT: vror.vi v8, v8, 16
244
244
; ZVKB-ZVE32X-NEXT: ret
245
245
%shuffle = shufflevector <8 x i8 > %v , <8 x i8 > poison, <8 x i32 > <i32 2 , i32 3 , i32 0 , i32 1 , i32 6 , i32 7 , i32 4 , i32 5 >
@@ -263,7 +263,7 @@ define <8 x i8> @shuffle_v8i8_as_i32_24(<8 x i8> %v) {
263
263
;
264
264
; ZVKB-ZVE32X-LABEL: shuffle_v8i8_as_i32_24:
265
265
; ZVKB-ZVE32X: # %bb.0:
266
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 2, e32, m2 , ta, ma
266
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 2, e32, m1 , ta, ma
267
267
; ZVKB-ZVE32X-NEXT: vror.vi v8, v8, 24
268
268
; ZVKB-ZVE32X-NEXT: ret
269
269
%shuffle = shufflevector <8 x i8 > %v , <8 x i8 > poison, <8 x i32 > <i32 3 , i32 0 , i32 1 , i32 2 , i32 7 , i32 4 , i32 5 , i32 6 >
@@ -287,10 +287,10 @@ define <8 x i8> @shuffle_v8i8_as_i64_8(<8 x i8> %v) {
287
287
;
288
288
; ZVKB-ZVE32X-LABEL: shuffle_v8i8_as_i64_8:
289
289
; ZVKB-ZVE32X: # %bb.0:
290
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e8, m2 , ta, ma
291
- ; ZVKB-ZVE32X-NEXT: vslidedown.vi v10 , v8, 1
292
- ; ZVKB-ZVE32X-NEXT: vslideup.vi v10 , v8, 7
293
- ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v10
290
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e8, m1 , ta, ma
291
+ ; ZVKB-ZVE32X-NEXT: vslidedown.vi v9 , v8, 1
292
+ ; ZVKB-ZVE32X-NEXT: vslideup.vi v9 , v8, 7
293
+ ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v9
294
294
; ZVKB-ZVE32X-NEXT: ret
295
295
%shuffle = shufflevector <8 x i8 > %v , <8 x i8 > poison, <8 x i32 > <i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 0 >
296
296
ret <8 x i8 > %shuffle
@@ -313,10 +313,10 @@ define <8 x i8> @shuffle_v8i8_as_i64_16(<8 x i8> %v) {
313
313
;
314
314
; ZVKB-ZVE32X-LABEL: shuffle_v8i8_as_i64_16:
315
315
; ZVKB-ZVE32X: # %bb.0:
316
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e8, m2 , ta, ma
317
- ; ZVKB-ZVE32X-NEXT: vslidedown.vi v10 , v8, 2
318
- ; ZVKB-ZVE32X-NEXT: vslideup.vi v10 , v8, 6
319
- ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v10
316
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e8, m1 , ta, ma
317
+ ; ZVKB-ZVE32X-NEXT: vslidedown.vi v9 , v8, 2
318
+ ; ZVKB-ZVE32X-NEXT: vslideup.vi v9 , v8, 6
319
+ ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v9
320
320
; ZVKB-ZVE32X-NEXT: ret
321
321
%shuffle = shufflevector <8 x i8 > %v , <8 x i8 > poison, <8 x i32 > <i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 0 , i32 1 >
322
322
ret <8 x i8 > %shuffle
@@ -339,10 +339,10 @@ define <8 x i8> @shuffle_v8i8_as_i64_24(<8 x i8> %v) {
339
339
;
340
340
; ZVKB-ZVE32X-LABEL: shuffle_v8i8_as_i64_24:
341
341
; ZVKB-ZVE32X: # %bb.0:
342
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e8, m2 , ta, ma
343
- ; ZVKB-ZVE32X-NEXT: vslidedown.vi v10 , v8, 3
344
- ; ZVKB-ZVE32X-NEXT: vslideup.vi v10 , v8, 5
345
- ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v10
342
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e8, m1 , ta, ma
343
+ ; ZVKB-ZVE32X-NEXT: vslidedown.vi v9 , v8, 3
344
+ ; ZVKB-ZVE32X-NEXT: vslideup.vi v9 , v8, 5
345
+ ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v9
346
346
; ZVKB-ZVE32X-NEXT: ret
347
347
%shuffle = shufflevector <8 x i8 > %v , <8 x i8 > poison, <8 x i32 > <i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 0 , i32 1 , i32 2 >
348
348
ret <8 x i8 > %shuffle
@@ -365,10 +365,10 @@ define <8 x i8> @shuffle_v8i8_as_i64_32(<8 x i8> %v) {
365
365
;
366
366
; ZVKB-ZVE32X-LABEL: shuffle_v8i8_as_i64_32:
367
367
; ZVKB-ZVE32X: # %bb.0:
368
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e8, m2 , ta, ma
369
- ; ZVKB-ZVE32X-NEXT: vslidedown.vi v10 , v8, 4
370
- ; ZVKB-ZVE32X-NEXT: vslideup.vi v10 , v8, 4
371
- ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v10
368
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e8, m1 , ta, ma
369
+ ; ZVKB-ZVE32X-NEXT: vslidedown.vi v9 , v8, 4
370
+ ; ZVKB-ZVE32X-NEXT: vslideup.vi v9 , v8, 4
371
+ ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v9
372
372
; ZVKB-ZVE32X-NEXT: ret
373
373
%shuffle = shufflevector <8 x i8 > %v , <8 x i8 > poison, <8 x i32 > <i32 4 , i32 5 , i32 6 , i32 7 , i32 0 , i32 1 , i32 2 , i32 3 >
374
374
ret <8 x i8 > %shuffle
@@ -391,10 +391,10 @@ define <8 x i8> @shuffle_v8i8_as_i64_40(<8 x i8> %v) {
391
391
;
392
392
; ZVKB-ZVE32X-LABEL: shuffle_v8i8_as_i64_40:
393
393
; ZVKB-ZVE32X: # %bb.0:
394
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e8, m2 , ta, ma
395
- ; ZVKB-ZVE32X-NEXT: vslidedown.vi v10 , v8, 5
396
- ; ZVKB-ZVE32X-NEXT: vslideup.vi v10 , v8, 3
397
- ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v10
394
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e8, m1 , ta, ma
395
+ ; ZVKB-ZVE32X-NEXT: vslidedown.vi v9 , v8, 5
396
+ ; ZVKB-ZVE32X-NEXT: vslideup.vi v9 , v8, 3
397
+ ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v9
398
398
; ZVKB-ZVE32X-NEXT: ret
399
399
%shuffle = shufflevector <8 x i8 > %v , <8 x i8 > poison, <8 x i32 > <i32 5 , i32 6 , i32 7 , i32 0 , i32 1 , i32 2 , i32 3 , i32 4 >
400
400
ret <8 x i8 > %shuffle
@@ -417,10 +417,10 @@ define <8 x i8> @shuffle_v8i8_as_i64_48(<8 x i8> %v) {
417
417
;
418
418
; ZVKB-ZVE32X-LABEL: shuffle_v8i8_as_i64_48:
419
419
; ZVKB-ZVE32X: # %bb.0:
420
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e8, m2 , ta, ma
421
- ; ZVKB-ZVE32X-NEXT: vslidedown.vi v10 , v8, 6
422
- ; ZVKB-ZVE32X-NEXT: vslideup.vi v10 , v8, 2
423
- ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v10
420
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e8, m1 , ta, ma
421
+ ; ZVKB-ZVE32X-NEXT: vslidedown.vi v9 , v8, 6
422
+ ; ZVKB-ZVE32X-NEXT: vslideup.vi v9 , v8, 2
423
+ ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v9
424
424
; ZVKB-ZVE32X-NEXT: ret
425
425
%shuffle = shufflevector <8 x i8 > %v , <8 x i8 > poison, <8 x i32 > <i32 6 , i32 7 , i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 >
426
426
ret <8 x i8 > %shuffle
@@ -443,10 +443,10 @@ define <8 x i8> @shuffle_v8i8_as_i64_56(<8 x i8> %v) {
443
443
;
444
444
; ZVKB-ZVE32X-LABEL: shuffle_v8i8_as_i64_56:
445
445
; ZVKB-ZVE32X: # %bb.0:
446
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e8, m2 , ta, ma
447
- ; ZVKB-ZVE32X-NEXT: vslidedown.vi v10 , v8, 7
448
- ; ZVKB-ZVE32X-NEXT: vslideup.vi v10 , v8, 1
449
- ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v10
446
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e8, m1 , ta, ma
447
+ ; ZVKB-ZVE32X-NEXT: vslidedown.vi v9 , v8, 7
448
+ ; ZVKB-ZVE32X-NEXT: vslideup.vi v9 , v8, 1
449
+ ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v9
450
450
; ZVKB-ZVE32X-NEXT: ret
451
451
%shuffle = shufflevector <8 x i8 > %v , <8 x i8 > poison, <8 x i32 > <i32 7 , i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 >
452
452
ret <8 x i8 > %shuffle
@@ -469,7 +469,7 @@ define <8 x i16> @shuffle_v8i16_as_i32(<8 x i16> %v) {
469
469
;
470
470
; ZVKB-ZVE32X-LABEL: shuffle_v8i16_as_i32:
471
471
; ZVKB-ZVE32X: # %bb.0:
472
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 4, e32, m4 , ta, ma
472
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 4, e32, m2 , ta, ma
473
473
; ZVKB-ZVE32X-NEXT: vror.vi v8, v8, 16
474
474
; ZVKB-ZVE32X-NEXT: ret
475
475
%shuffle = shufflevector <8 x i16 > %v , <8 x i16 > poison, <8 x i32 > <i32 1 , i32 0 , i32 3 , i32 2 , i32 5 , i32 4 , i32 7 , i32 6 >
@@ -512,11 +512,11 @@ define <8 x i16> @shuffle_v8i16_as_i64_16(<8 x i16> %v) {
512
512
; ZVKB-ZVE32X: # %bb.0:
513
513
; ZVKB-ZVE32X-NEXT: lui a0, %hi(.LCPI19_0)
514
514
; ZVKB-ZVE32X-NEXT: addi a0, a0, %lo(.LCPI19_0)
515
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e16, m4 , ta, ma
516
- ; ZVKB-ZVE32X-NEXT: vle8.v v12 , (a0)
517
- ; ZVKB-ZVE32X-NEXT: vsext.vf2 v16, v12
518
- ; ZVKB-ZVE32X-NEXT: vrgather.vv v12 , v8, v16
519
- ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v12
515
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e16, m2 , ta, ma
516
+ ; ZVKB-ZVE32X-NEXT: vle8.v v10 , (a0)
517
+ ; ZVKB-ZVE32X-NEXT: vsext.vf2 v12, v10
518
+ ; ZVKB-ZVE32X-NEXT: vrgather.vv v10 , v8, v12
519
+ ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v10
520
520
; ZVKB-ZVE32X-NEXT: ret
521
521
%shuffle = shufflevector <8 x i16 > %v , <8 x i16 > poison, <8 x i32 > <i32 1 , i32 2 , i32 3 , i32 0 , i32 5 , i32 6 , i32 7 , i32 4 >
522
522
ret <8 x i16 > %shuffle
@@ -558,11 +558,11 @@ define <8 x i16> @shuffle_v8i16_as_i64_32(<8 x i16> %v) {
558
558
; ZVKB-ZVE32X: # %bb.0:
559
559
; ZVKB-ZVE32X-NEXT: lui a0, %hi(.LCPI20_0)
560
560
; ZVKB-ZVE32X-NEXT: addi a0, a0, %lo(.LCPI20_0)
561
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e16, m4 , ta, ma
562
- ; ZVKB-ZVE32X-NEXT: vle8.v v12 , (a0)
563
- ; ZVKB-ZVE32X-NEXT: vsext.vf2 v16, v12
564
- ; ZVKB-ZVE32X-NEXT: vrgather.vv v12 , v8, v16
565
- ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v12
561
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e16, m2 , ta, ma
562
+ ; ZVKB-ZVE32X-NEXT: vle8.v v10 , (a0)
563
+ ; ZVKB-ZVE32X-NEXT: vsext.vf2 v12, v10
564
+ ; ZVKB-ZVE32X-NEXT: vrgather.vv v10 , v8, v12
565
+ ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v10
566
566
; ZVKB-ZVE32X-NEXT: ret
567
567
%shuffle = shufflevector <8 x i16 > %v , <8 x i16 > poison, <8 x i32 > <i32 2 , i32 3 , i32 0 , i32 1 , i32 6 , i32 7 , i32 4 , i32 5 >
568
568
ret <8 x i16 > %shuffle
@@ -604,11 +604,11 @@ define <8 x i16> @shuffle_v8i16_as_i64_48(<8 x i16> %v) {
604
604
; ZVKB-ZVE32X: # %bb.0:
605
605
; ZVKB-ZVE32X-NEXT: lui a0, %hi(.LCPI21_0)
606
606
; ZVKB-ZVE32X-NEXT: addi a0, a0, %lo(.LCPI21_0)
607
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e16, m4 , ta, ma
608
- ; ZVKB-ZVE32X-NEXT: vle8.v v12 , (a0)
609
- ; ZVKB-ZVE32X-NEXT: vsext.vf2 v16, v12
610
- ; ZVKB-ZVE32X-NEXT: vrgather.vv v12 , v8, v16
611
- ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v12
607
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e16, m2 , ta, ma
608
+ ; ZVKB-ZVE32X-NEXT: vle8.v v10 , (a0)
609
+ ; ZVKB-ZVE32X-NEXT: vsext.vf2 v12, v10
610
+ ; ZVKB-ZVE32X-NEXT: vrgather.vv v10 , v8, v12
611
+ ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v10
612
612
; ZVKB-ZVE32X-NEXT: ret
613
613
%shuffle = shufflevector <8 x i16 > %v , <8 x i16 > poison, <8 x i32 > <i32 3 , i32 0 , i32 1 , i32 2 , i32 7 , i32 4 , i32 5 , i32 6 >
614
614
ret <8 x i16 > %shuffle
@@ -650,12 +650,12 @@ define <8 x i32> @shuffle_v8i32_as_i64(<8 x i32> %v) {
650
650
; ZVKB-ZVE32X: # %bb.0:
651
651
; ZVKB-ZVE32X-NEXT: lui a0, %hi(.LCPI22_0)
652
652
; ZVKB-ZVE32X-NEXT: addi a0, a0, %lo(.LCPI22_0)
653
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e16, m4 , ta, ma
654
- ; ZVKB-ZVE32X-NEXT: vle8.v v16 , (a0)
655
- ; ZVKB-ZVE32X-NEXT: vsext.vf2 v24, v16
656
- ; ZVKB-ZVE32X-NEXT: vsetvli zero, zero, e32, m8 , ta, ma
657
- ; ZVKB-ZVE32X-NEXT: vrgatherei16.vv v16 , v8, v24
658
- ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v16
653
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e16, m2 , ta, ma
654
+ ; ZVKB-ZVE32X-NEXT: vle8.v v12 , (a0)
655
+ ; ZVKB-ZVE32X-NEXT: vsext.vf2 v16, v12
656
+ ; ZVKB-ZVE32X-NEXT: vsetvli zero, zero, e32, m4 , ta, ma
657
+ ; ZVKB-ZVE32X-NEXT: vrgatherei16.vv v12 , v8, v16
658
+ ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v12
659
659
; ZVKB-ZVE32X-NEXT: ret
660
660
%shuffle = shufflevector <8 x i32 > %v , <8 x i32 > poison, <8 x i32 > <i32 1 , i32 0 , i32 3 , i32 2 , i32 5 , i32 4 , i32 7 , i32 6 >
661
661
ret <8 x i32 > %shuffle
@@ -678,7 +678,7 @@ define <8 x half> @shuffle_v8f16_as_i32(<8 x half> %v) {
678
678
;
679
679
; ZVKB-ZVE32X-LABEL: shuffle_v8f16_as_i32:
680
680
; ZVKB-ZVE32X: # %bb.0:
681
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 4, e32, m4 , ta, ma
681
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 4, e32, m2 , ta, ma
682
682
; ZVKB-ZVE32X-NEXT: vror.vi v8, v8, 16
683
683
; ZVKB-ZVE32X-NEXT: ret
684
684
%shuffle = shufflevector <8 x half > %v , <8 x half > poison, <8 x i32 > <i32 1 , i32 0 , i32 3 , i32 2 , i32 5 , i32 4 , i32 7 , i32 6 >
@@ -721,11 +721,11 @@ define <8 x half> @shuffle_v8f16_as_i64_16(<8 x half> %v) {
721
721
; ZVKB-ZVE32X: # %bb.0:
722
722
; ZVKB-ZVE32X-NEXT: lui a0, %hi(.LCPI24_0)
723
723
; ZVKB-ZVE32X-NEXT: addi a0, a0, %lo(.LCPI24_0)
724
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e16, m4 , ta, ma
725
- ; ZVKB-ZVE32X-NEXT: vle8.v v12 , (a0)
726
- ; ZVKB-ZVE32X-NEXT: vsext.vf2 v16, v12
727
- ; ZVKB-ZVE32X-NEXT: vrgather.vv v12 , v8, v16
728
- ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v12
724
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e16, m2 , ta, ma
725
+ ; ZVKB-ZVE32X-NEXT: vle8.v v10 , (a0)
726
+ ; ZVKB-ZVE32X-NEXT: vsext.vf2 v12, v10
727
+ ; ZVKB-ZVE32X-NEXT: vrgather.vv v10 , v8, v12
728
+ ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v10
729
729
; ZVKB-ZVE32X-NEXT: ret
730
730
%shuffle = shufflevector <8 x half > %v , <8 x half > poison, <8 x i32 > <i32 1 , i32 2 , i32 3 , i32 0 , i32 5 , i32 6 , i32 7 , i32 4 >
731
731
ret <8 x half > %shuffle
@@ -767,11 +767,11 @@ define <8 x half> @shuffle_v8f16_as_i64_32(<8 x half> %v) {
767
767
; ZVKB-ZVE32X: # %bb.0:
768
768
; ZVKB-ZVE32X-NEXT: lui a0, %hi(.LCPI25_0)
769
769
; ZVKB-ZVE32X-NEXT: addi a0, a0, %lo(.LCPI25_0)
770
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e16, m4 , ta, ma
771
- ; ZVKB-ZVE32X-NEXT: vle8.v v12 , (a0)
772
- ; ZVKB-ZVE32X-NEXT: vsext.vf2 v16, v12
773
- ; ZVKB-ZVE32X-NEXT: vrgather.vv v12 , v8, v16
774
- ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v12
770
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e16, m2 , ta, ma
771
+ ; ZVKB-ZVE32X-NEXT: vle8.v v10 , (a0)
772
+ ; ZVKB-ZVE32X-NEXT: vsext.vf2 v12, v10
773
+ ; ZVKB-ZVE32X-NEXT: vrgather.vv v10 , v8, v12
774
+ ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v10
775
775
; ZVKB-ZVE32X-NEXT: ret
776
776
%shuffle = shufflevector <8 x half > %v , <8 x half > poison, <8 x i32 > <i32 2 , i32 3 , i32 0 , i32 1 , i32 6 , i32 7 , i32 4 , i32 5 >
777
777
ret <8 x half > %shuffle
@@ -813,11 +813,11 @@ define <8 x half> @shuffle_v8f16_as_i64_48(<8 x half> %v) {
813
813
; ZVKB-ZVE32X: # %bb.0:
814
814
; ZVKB-ZVE32X-NEXT: lui a0, %hi(.LCPI26_0)
815
815
; ZVKB-ZVE32X-NEXT: addi a0, a0, %lo(.LCPI26_0)
816
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e16, m4 , ta, ma
817
- ; ZVKB-ZVE32X-NEXT: vle8.v v12 , (a0)
818
- ; ZVKB-ZVE32X-NEXT: vsext.vf2 v16, v12
819
- ; ZVKB-ZVE32X-NEXT: vrgather.vv v12 , v8, v16
820
- ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v12
816
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e16, m2 , ta, ma
817
+ ; ZVKB-ZVE32X-NEXT: vle8.v v10 , (a0)
818
+ ; ZVKB-ZVE32X-NEXT: vsext.vf2 v12, v10
819
+ ; ZVKB-ZVE32X-NEXT: vrgather.vv v10 , v8, v12
820
+ ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v10
821
821
; ZVKB-ZVE32X-NEXT: ret
822
822
%shuffle = shufflevector <8 x half > %v , <8 x half > poison, <8 x i32 > <i32 3 , i32 0 , i32 1 , i32 2 , i32 7 , i32 4 , i32 5 , i32 6 >
823
823
ret <8 x half > %shuffle
@@ -859,12 +859,12 @@ define <8 x float> @shuffle_v8f32_as_i64(<8 x float> %v) {
859
859
; ZVKB-ZVE32X: # %bb.0:
860
860
; ZVKB-ZVE32X-NEXT: lui a0, %hi(.LCPI27_0)
861
861
; ZVKB-ZVE32X-NEXT: addi a0, a0, %lo(.LCPI27_0)
862
- ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e16, m4 , ta, ma
863
- ; ZVKB-ZVE32X-NEXT: vle8.v v16 , (a0)
864
- ; ZVKB-ZVE32X-NEXT: vsext.vf2 v24, v16
865
- ; ZVKB-ZVE32X-NEXT: vsetvli zero, zero, e32, m8 , ta, ma
866
- ; ZVKB-ZVE32X-NEXT: vrgatherei16.vv v16 , v8, v24
867
- ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v16
862
+ ; ZVKB-ZVE32X-NEXT: vsetivli zero, 8, e16, m2 , ta, ma
863
+ ; ZVKB-ZVE32X-NEXT: vle8.v v12 , (a0)
864
+ ; ZVKB-ZVE32X-NEXT: vsext.vf2 v16, v12
865
+ ; ZVKB-ZVE32X-NEXT: vsetvli zero, zero, e32, m4 , ta, ma
866
+ ; ZVKB-ZVE32X-NEXT: vrgatherei16.vv v12 , v8, v16
867
+ ; ZVKB-ZVE32X-NEXT: vmv.v.v v8, v12
868
868
; ZVKB-ZVE32X-NEXT: ret
869
869
%shuffle = shufflevector <8 x float > %v , <8 x float > poison, <8 x i32 > <i32 1 , i32 0 , i32 3 , i32 2 , i32 5 , i32 4 , i32 7 , i32 6 >
870
870
ret <8 x float > %shuffle
0 commit comments