@@ -447,7 +447,6 @@ define void @vnsrl_0_i8_single_src(ptr %in, ptr %out) {
447
447
; V-NEXT: vle8.v v8, (a0)
448
448
; V-NEXT: vsetivli zero, 4, e8, mf8, ta, ma
449
449
; V-NEXT: vnsrl.wi v8, v8, 0
450
- ; V-NEXT: vsetivli zero, 8, e8, mf4, ta, ma
451
450
; V-NEXT: vse8.v v8, (a1)
452
451
; V-NEXT: ret
453
452
;
@@ -457,18 +456,42 @@ define void @vnsrl_0_i8_single_src(ptr %in, ptr %out) {
457
456
; ZVE32F-NEXT: vle8.v v8, (a0)
458
457
; ZVE32F-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
459
458
; ZVE32F-NEXT: vnsrl.wi v8, v8, 0
459
+ ; ZVE32F-NEXT: vse8.v v8, (a1)
460
+ ; ZVE32F-NEXT: ret
461
+ entry:
462
+ %0 = load <8 x i8 >, ptr %in , align 1
463
+ %shuffle.i5 = shufflevector <8 x i8 > %0 , <8 x i8 > poison, <4 x i32 > <i32 0 , i32 2 , i32 4 , i32 6 >
464
+ store <4 x i8 > %shuffle.i5 , ptr %out , align 1
465
+ ret void
466
+ }
467
+
468
+ define void @vnsrl_8_i8_single_src (ptr %in , ptr %out ) {
469
+ ; V-LABEL: vnsrl_8_i8_single_src:
470
+ ; V: # %bb.0: # %entry
471
+ ; V-NEXT: vsetivli zero, 8, e8, mf4, ta, ma
472
+ ; V-NEXT: vle8.v v8, (a0)
473
+ ; V-NEXT: vsetivli zero, 4, e8, mf8, ta, ma
474
+ ; V-NEXT: vnsrl.wi v8, v8, 8
475
+ ; V-NEXT: vse8.v v8, (a1)
476
+ ; V-NEXT: ret
477
+ ;
478
+ ; ZVE32F-LABEL: vnsrl_8_i8_single_src:
479
+ ; ZVE32F: # %bb.0: # %entry
460
480
; ZVE32F-NEXT: vsetivli zero, 8, e8, mf4, ta, ma
481
+ ; ZVE32F-NEXT: vle8.v v8, (a0)
482
+ ; ZVE32F-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
483
+ ; ZVE32F-NEXT: vnsrl.wi v8, v8, 8
461
484
; ZVE32F-NEXT: vse8.v v8, (a1)
462
485
; ZVE32F-NEXT: ret
463
486
entry:
464
487
%0 = load <8 x i8 >, ptr %in , align 1
465
- %shuffle.i5 = shufflevector <8 x i8 > %0 , <8 x i8 > poison, <8 x i32 > <i32 0 , i32 2 , i32 4 , i32 6 , i32 8 , i32 10 , i32 12 , i32 14 >
466
- store <8 x i8 > %shuffle.i5 , ptr %out , align 1
488
+ %shuffle.i5 = shufflevector <8 x i8 > %0 , <8 x i8 > poison, <4 x i32 > <i32 1 , i32 3 , i32 5 , i32 7 >
489
+ store <4 x i8 > %shuffle.i5 , ptr %out , align 1
467
490
ret void
468
491
}
469
492
470
- define void @vnsrl_0_i8_single_src2 (ptr %in , ptr %out ) {
471
- ; V-LABEL: vnsrl_0_i8_single_src2 :
493
+ define void @vnsrl_0_i8_single_wideuse (ptr %in , ptr %out ) {
494
+ ; V-LABEL: vnsrl_0_i8_single_wideuse :
472
495
; V: # %bb.0: # %entry
473
496
; V-NEXT: vsetivli zero, 8, e8, mf4, ta, ma
474
497
; V-NEXT: vle8.v v8, (a0)
@@ -478,7 +501,7 @@ define void @vnsrl_0_i8_single_src2(ptr %in, ptr %out) {
478
501
; V-NEXT: vse8.v v8, (a1)
479
502
; V-NEXT: ret
480
503
;
481
- ; ZVE32F-LABEL: vnsrl_0_i8_single_src2 :
504
+ ; ZVE32F-LABEL: vnsrl_0_i8_single_wideuse :
482
505
; ZVE32F: # %bb.0: # %entry
483
506
; ZVE32F-NEXT: vsetivli zero, 8, e8, mf4, ta, ma
484
507
; ZVE32F-NEXT: vle8.v v8, (a0)
0 commit comments