@@ -879,10 +879,8 @@ define <8 x i32> @shuffle_spread4_singlesrc_e32(<8 x i32> %v) {
879879define <16 x i8 > @shuffle_spread4_singlesrc_e8_idx0 (<16 x i8 > %v ) {
880880; CHECK-LABEL: shuffle_spread4_singlesrc_e8_idx0:
881881; 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
886884; CHECK-NEXT: vmv.v.v v8, v9
887885; CHECK-NEXT: ret
888886 %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) {
892890define <16 x i8 > @shuffle_spread4_singlesrc_e8_idx1 (<16 x i8 > %v ) {
893891; CHECK-LABEL: shuffle_spread4_singlesrc_e8_idx1:
894892; 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
900896; CHECK-NEXT: ret
901897 %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 >
902898 ret <16 x i8 > %out
@@ -905,11 +901,9 @@ define <16 x i8> @shuffle_spread4_singlesrc_e8_idx1(<16 x i8> %v) {
905901define <16 x i8 > @shuffle_spread4_singlesrc_e8_idx2 (<16 x i8 > %v ) {
906902; CHECK-LABEL: shuffle_spread4_singlesrc_e8_idx2:
907903; 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
913907; CHECK-NEXT: ret
914908 %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 >
915909 ret <16 x i8 > %out
@@ -918,11 +912,9 @@ define <16 x i8> @shuffle_spread4_singlesrc_e8_idx2(<16 x i8> %v) {
918912define <16 x i8 > @shuffle_spread4_singlesrc_e8_idx3 (<16 x i8 > %v ) {
919913; CHECK-LABEL: shuffle_spread4_singlesrc_e8_idx3:
920914; 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
926918; CHECK-NEXT: ret
927919 %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 >
928920 ret <16 x i8 > %out
@@ -946,11 +938,8 @@ define <16 x i8> @shuffle_spread4_singlesrc_e8_idx4(<16 x i8> %v) {
946938define <32 x i8 > @shuffle_spread8_singlesrc_e8 (<32 x i8 > %v ) {
947939; CHECK-LABEL: shuffle_spread8_singlesrc_e8:
948940; 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
954943; CHECK-NEXT: vmv.v.v v8, v10
955944; CHECK-NEXT: ret
956945 %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