@@ -879,10 +879,8 @@ define <8 x i32> @shuffle_spread4_singlesrc_e32(<8 x i32> %v) {
879
879
define <16 x i8 > @shuffle_spread4_singlesrc_e8_idx0 (<16 x i8 > %v ) {
880
880
; CHECK-LABEL: shuffle_spread4_singlesrc_e8_idx0:
881
881
; CHECK: # %bb.0:
882
- ; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma
883
- ; CHECK-NEXT: vid.v v9
884
- ; CHECK-NEXT: vsrl.vi v10, v9, 2
885
- ; CHECK-NEXT: vrgather.vv v9, v8, v10
882
+ ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
883
+ ; CHECK-NEXT: vzext.vf4 v9, v8
886
884
; CHECK-NEXT: vmv.v.v v8, v9
887
885
; CHECK-NEXT: ret
888
886
%out = shufflevector <16 x i8 > %v , <16 x i8 > poison, <16 x i32 > <i32 0 , i32 undef , i32 undef , i32 undef , i32 1 , i32 undef , i32 undef , i32 undef , i32 2 , i32 undef , i32 undef , i32 undef , i32 3 , i32 undef , i32 undef , i32 undef >
@@ -892,11 +890,9 @@ define <16 x i8> @shuffle_spread4_singlesrc_e8_idx0(<16 x i8> %v) {
892
890
define <16 x i8 > @shuffle_spread4_singlesrc_e8_idx1 (<16 x i8 > %v ) {
893
891
; CHECK-LABEL: shuffle_spread4_singlesrc_e8_idx1:
894
892
; CHECK: # %bb.0:
895
- ; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma
896
- ; CHECK-NEXT: vid.v v9
897
- ; CHECK-NEXT: vsrl.vi v10, v9, 2
898
- ; CHECK-NEXT: vrgather.vv v9, v8, v10
899
- ; CHECK-NEXT: vmv.v.v v8, v9
893
+ ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
894
+ ; CHECK-NEXT: vzext.vf4 v9, v8
895
+ ; CHECK-NEXT: vsll.vi v8, v9, 8
900
896
; CHECK-NEXT: ret
901
897
%out = shufflevector <16 x i8 > %v , <16 x i8 > poison, <16 x i32 > <i32 undef , i32 0 , i32 undef , i32 undef , i32 undef , i32 1 , i32 undef , i32 undef , i32 undef , i32 2 , i32 undef , i32 undef , i32 undef , i32 3 , i32 undef , i32 undef >
902
898
ret <16 x i8 > %out
@@ -905,11 +901,9 @@ define <16 x i8> @shuffle_spread4_singlesrc_e8_idx1(<16 x i8> %v) {
905
901
define <16 x i8 > @shuffle_spread4_singlesrc_e8_idx2 (<16 x i8 > %v ) {
906
902
; CHECK-LABEL: shuffle_spread4_singlesrc_e8_idx2:
907
903
; CHECK: # %bb.0:
908
- ; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma
909
- ; CHECK-NEXT: vid.v v9
910
- ; CHECK-NEXT: vsrl.vi v10, v9, 2
911
- ; CHECK-NEXT: vrgather.vv v9, v8, v10
912
- ; CHECK-NEXT: vmv.v.v v8, v9
904
+ ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
905
+ ; CHECK-NEXT: vzext.vf4 v9, v8
906
+ ; CHECK-NEXT: vsll.vi v8, v9, 16
913
907
; CHECK-NEXT: ret
914
908
%out = shufflevector <16 x i8 > %v , <16 x i8 > poison, <16 x i32 > <i32 undef , i32 undef , i32 0 , i32 undef , i32 undef , i32 undef , i32 1 , i32 undef , i32 undef , i32 undef , i32 2 , i32 undef , i32 undef , i32 undef , i32 3 , i32 undef >
915
909
ret <16 x i8 > %out
@@ -918,11 +912,9 @@ define <16 x i8> @shuffle_spread4_singlesrc_e8_idx2(<16 x i8> %v) {
918
912
define <16 x i8 > @shuffle_spread4_singlesrc_e8_idx3 (<16 x i8 > %v ) {
919
913
; CHECK-LABEL: shuffle_spread4_singlesrc_e8_idx3:
920
914
; CHECK: # %bb.0:
921
- ; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma
922
- ; CHECK-NEXT: vid.v v9
923
- ; CHECK-NEXT: vsrl.vi v10, v9, 2
924
- ; CHECK-NEXT: vrgather.vv v9, v8, v10
925
- ; CHECK-NEXT: vmv.v.v v8, v9
915
+ ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
916
+ ; CHECK-NEXT: vzext.vf4 v9, v8
917
+ ; CHECK-NEXT: vsll.vi v8, v9, 24
926
918
; CHECK-NEXT: ret
927
919
%out = shufflevector <16 x i8 > %v , <16 x i8 > poison, <16 x i32 > <i32 undef , i32 undef , i32 undef , i32 0 , i32 undef , i32 undef , i32 undef , i32 1 , i32 undef , i32 undef , i32 undef , i32 2 , i32 undef , i32 undef , i32 undef , i32 3 >
928
920
ret <16 x i8 > %out
@@ -946,11 +938,8 @@ define <16 x i8> @shuffle_spread4_singlesrc_e8_idx4(<16 x i8> %v) {
946
938
define <32 x i8 > @shuffle_spread8_singlesrc_e8 (<32 x i8 > %v ) {
947
939
; CHECK-LABEL: shuffle_spread8_singlesrc_e8:
948
940
; CHECK: # %bb.0:
949
- ; CHECK-NEXT: li a0, 32
950
- ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
951
- ; CHECK-NEXT: vid.v v10
952
- ; CHECK-NEXT: vsrl.vi v12, v10, 3
953
- ; CHECK-NEXT: vrgather.vv v10, v8, v12
941
+ ; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma
942
+ ; CHECK-NEXT: vzext.vf8 v10, v8
954
943
; CHECK-NEXT: vmv.v.v v8, v10
955
944
; CHECK-NEXT: ret
956
945
%out = shufflevector <32 x i8 > %v , <32 x i8 > poison, <32 x i32 > <i32 0 , i32 undef , i32 undef , i32 undef , i32 undef , i32 undef , i32 undef , i32 undef , i32 1 , i32 undef , i32 undef , i32 undef , i32 undef , i32 undef , i32 undef , i32 undef , i32 2 , i32 undef , i32 undef , i32 undef , i32 undef , i32 undef , i32 undef , i32 undef , i32 3 , i32 undef , i32 undef , i32 undef , i32 undef , i32 undef , i32 undef , i32 undef >
0 commit comments