@@ -1716,21 +1716,19 @@ define <8 x i16> @mgather_baseidx_sext_v8i8_v8i16(ptr %base, <8 x i8> %idxs, <8
17161716define <8 x i16> @mgather_baseidx_zext_v8i8_v8i16(ptr %base, <8 x i8> %idxs, <8 x i1> %m, <8 x i16> %passthru) {
17171717; RV32-LABEL: mgather_baseidx_zext_v8i8_v8i16:
17181718; RV32: # %bb.0:
1719- ; RV32-NEXT: vsetivli zero, 8, e32, m2, ta, ma
1720- ; RV32-NEXT: vzext.vf4 v10, v8
1721- ; RV32-NEXT: vadd.vv v10, v10, v10
1719+ ; RV32-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
1720+ ; RV32-NEXT: vwaddu.vv v10, v8, v8
17221721; RV32-NEXT: vsetvli zero, zero, e16, m1, ta, mu
1723- ; RV32-NEXT: vluxei32 .v v9, (a0), v10, v0.t
1722+ ; RV32-NEXT: vluxei16 .v v9, (a0), v10, v0.t
17241723; RV32-NEXT: vmv.v.v v8, v9
17251724; RV32-NEXT: ret
17261725;
17271726; RV64V-LABEL: mgather_baseidx_zext_v8i8_v8i16:
17281727; RV64V: # %bb.0:
1729- ; RV64V-NEXT: vsetivli zero, 8, e64, m4, ta, ma
1730- ; RV64V-NEXT: vzext.vf8 v12, v8
1731- ; RV64V-NEXT: vadd.vv v12, v12, v12
1728+ ; RV64V-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
1729+ ; RV64V-NEXT: vwaddu.vv v10, v8, v8
17321730; RV64V-NEXT: vsetvli zero, zero, e16, m1, ta, mu
1733- ; RV64V-NEXT: vluxei64 .v v9, (a0), v12 , v0.t
1731+ ; RV64V-NEXT: vluxei16 .v v9, (a0), v10 , v0.t
17341732; RV64V-NEXT: vmv.v.v v8, v9
17351733; RV64V-NEXT: ret
17361734;
@@ -2793,20 +2791,21 @@ define <8 x i32> @mgather_baseidx_sext_v8i8_v8i32(ptr %base, <8 x i8> %idxs, <8
27932791define <8 x i32> @mgather_baseidx_zext_v8i8_v8i32(ptr %base, <8 x i8> %idxs, <8 x i1> %m, <8 x i32> %passthru) {
27942792; RV32-LABEL: mgather_baseidx_zext_v8i8_v8i32:
27952793; RV32: # %bb.0:
2796- ; RV32-NEXT: vsetivli zero, 8, e32, m2, ta, mu
2797- ; RV32-NEXT: vzext.vf4 v12, v8
2798- ; RV32-NEXT: vsll.vi v8, v12, 2
2799- ; RV32-NEXT: vluxei32.v v10, (a0), v8, v0.t
2794+ ; RV32-NEXT: vsetivli zero, 8, e16, m1, ta, ma
2795+ ; RV32-NEXT: vzext.vf2 v9, v8
2796+ ; RV32-NEXT: vsll.vi v8, v9, 2
2797+ ; RV32-NEXT: vsetvli zero, zero, e32, m2, ta, mu
2798+ ; RV32-NEXT: vluxei16.v v10, (a0), v8, v0.t
28002799; RV32-NEXT: vmv.v.v v8, v10
28012800; RV32-NEXT: ret
28022801;
28032802; RV64V-LABEL: mgather_baseidx_zext_v8i8_v8i32:
28042803; RV64V: # %bb.0:
2805- ; RV64V-NEXT: vsetivli zero, 8, e64, m4 , ta, ma
2806- ; RV64V-NEXT: vzext.vf8 v12 , v8
2807- ; RV64V-NEXT: vsll.vi v12, v12 , 2
2804+ ; RV64V-NEXT: vsetivli zero, 8, e16, m1 , ta, ma
2805+ ; RV64V-NEXT: vzext.vf2 v9 , v8
2806+ ; RV64V-NEXT: vsll.vi v8, v9 , 2
28082807; RV64V-NEXT: vsetvli zero, zero, e32, m2, ta, mu
2809- ; RV64V-NEXT: vluxei64 .v v10, (a0), v12 , v0.t
2808+ ; RV64V-NEXT: vluxei16 .v v10, (a0), v8 , v0.t
28102809; RV64V-NEXT: vmv.v.v v8, v10
28112810; RV64V-NEXT: ret
28122811;
@@ -3264,11 +3263,10 @@ define <8 x i32> @mgather_baseidx_zext_v8i16_v8i32(ptr %base, <8 x i16> %idxs, <
32643263;
32653264; RV64V-LABEL: mgather_baseidx_zext_v8i16_v8i32:
32663265; RV64V: # %bb.0:
3267- ; RV64V-NEXT: vsetivli zero, 8, e64, m4, ta, ma
3268- ; RV64V-NEXT: vzext.vf4 v12, v8
3269- ; RV64V-NEXT: vsll.vi v12, v12, 2
3270- ; RV64V-NEXT: vsetvli zero, zero, e32, m2, ta, mu
3271- ; RV64V-NEXT: vluxei64.v v10, (a0), v12, v0.t
3266+ ; RV64V-NEXT: vsetivli zero, 8, e32, m2, ta, mu
3267+ ; RV64V-NEXT: vzext.vf2 v12, v8
3268+ ; RV64V-NEXT: vsll.vi v8, v12, 2
3269+ ; RV64V-NEXT: vluxei32.v v10, (a0), v8, v0.t
32723270; RV64V-NEXT: vmv.v.v v8, v10
32733271; RV64V-NEXT: ret
32743272;
@@ -4772,20 +4770,21 @@ define <8 x i64> @mgather_baseidx_sext_v8i8_v8i64(ptr %base, <8 x i8> %idxs, <8
47724770define <8 x i64> @mgather_baseidx_zext_v8i8_v8i64(ptr %base, <8 x i8> %idxs, <8 x i1> %m, <8 x i64> %passthru) {
47734771; RV32V-LABEL: mgather_baseidx_zext_v8i8_v8i64:
47744772; RV32V: # %bb.0:
4775- ; RV32V-NEXT: vsetivli zero, 8, e32, m2 , ta, ma
4776- ; RV32V-NEXT: vzext.vf4 v10 , v8
4777- ; RV32V-NEXT: vsll.vi v8, v10 , 3
4773+ ; RV32V-NEXT: vsetivli zero, 8, e16, m1 , ta, ma
4774+ ; RV32V-NEXT: vzext.vf2 v9 , v8
4775+ ; RV32V-NEXT: vsll.vi v8, v9 , 3
47784776; RV32V-NEXT: vsetvli zero, zero, e64, m4, ta, mu
4779- ; RV32V-NEXT: vluxei32 .v v12, (a0), v8, v0.t
4777+ ; RV32V-NEXT: vluxei16 .v v12, (a0), v8, v0.t
47804778; RV32V-NEXT: vmv.v.v v8, v12
47814779; RV32V-NEXT: ret
47824780;
47834781; RV64V-LABEL: mgather_baseidx_zext_v8i8_v8i64:
47844782; RV64V: # %bb.0:
4785- ; RV64V-NEXT: vsetivli zero, 8, e64, m4, ta, mu
4786- ; RV64V-NEXT: vzext.vf8 v16, v8
4787- ; RV64V-NEXT: vsll.vi v8, v16, 3
4788- ; RV64V-NEXT: vluxei64.v v12, (a0), v8, v0.t
4783+ ; RV64V-NEXT: vsetivli zero, 8, e16, m1, ta, ma
4784+ ; RV64V-NEXT: vzext.vf2 v9, v8
4785+ ; RV64V-NEXT: vsll.vi v8, v9, 3
4786+ ; RV64V-NEXT: vsetvli zero, zero, e64, m4, ta, mu
4787+ ; RV64V-NEXT: vluxei16.v v12, (a0), v8, v0.t
47894788; RV64V-NEXT: vmv.v.v v8, v12
47904789; RV64V-NEXT: ret
47914790;
@@ -5616,10 +5615,11 @@ define <8 x i64> @mgather_baseidx_zext_v8i16_v8i64(ptr %base, <8 x i16> %idxs, <
56165615;
56175616; RV64V-LABEL: mgather_baseidx_zext_v8i16_v8i64:
56185617; RV64V: # %bb.0:
5619- ; RV64V-NEXT: vsetivli zero, 8, e64, m4, ta, mu
5620- ; RV64V-NEXT: vzext.vf4 v16, v8
5621- ; RV64V-NEXT: vsll.vi v8, v16, 3
5622- ; RV64V-NEXT: vluxei64.v v12, (a0), v8, v0.t
5618+ ; RV64V-NEXT: vsetivli zero, 8, e32, m2, ta, ma
5619+ ; RV64V-NEXT: vzext.vf2 v10, v8
5620+ ; RV64V-NEXT: vsll.vi v8, v10, 3
5621+ ; RV64V-NEXT: vsetvli zero, zero, e64, m4, ta, mu
5622+ ; RV64V-NEXT: vluxei32.v v12, (a0), v8, v0.t
56235623; RV64V-NEXT: vmv.v.v v8, v12
56245624; RV64V-NEXT: ret
56255625;
@@ -7645,21 +7645,19 @@ define <8 x half> @mgather_baseidx_sext_v8i8_v8f16(ptr %base, <8 x i8> %idxs, <8
76457645define <8 x half> @mgather_baseidx_zext_v8i8_v8f16(ptr %base, <8 x i8> %idxs, <8 x i1> %m, <8 x half> %passthru) {
76467646; RV32-LABEL: mgather_baseidx_zext_v8i8_v8f16:
76477647; RV32: # %bb.0:
7648- ; RV32-NEXT: vsetivli zero, 8, e32, m2, ta, ma
7649- ; RV32-NEXT: vzext.vf4 v10, v8
7650- ; RV32-NEXT: vadd.vv v10, v10, v10
7648+ ; RV32-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
7649+ ; RV32-NEXT: vwaddu.vv v10, v8, v8
76517650; RV32-NEXT: vsetvli zero, zero, e16, m1, ta, mu
7652- ; RV32-NEXT: vluxei32 .v v9, (a0), v10, v0.t
7651+ ; RV32-NEXT: vluxei16 .v v9, (a0), v10, v0.t
76537652; RV32-NEXT: vmv.v.v v8, v9
76547653; RV32-NEXT: ret
76557654;
76567655; RV64V-LABEL: mgather_baseidx_zext_v8i8_v8f16:
76577656; RV64V: # %bb.0:
7658- ; RV64V-NEXT: vsetivli zero, 8, e64, m4, ta, ma
7659- ; RV64V-NEXT: vzext.vf8 v12, v8
7660- ; RV64V-NEXT: vadd.vv v12, v12, v12
7657+ ; RV64V-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
7658+ ; RV64V-NEXT: vwaddu.vv v10, v8, v8
76617659; RV64V-NEXT: vsetvli zero, zero, e16, m1, ta, mu
7662- ; RV64V-NEXT: vluxei64 .v v9, (a0), v12 , v0.t
7660+ ; RV64V-NEXT: vluxei16 .v v9, (a0), v10 , v0.t
76637661; RV64V-NEXT: vmv.v.v v8, v9
76647662; RV64V-NEXT: ret
76657663;
@@ -8596,20 +8594,21 @@ define <8 x float> @mgather_baseidx_sext_v8i8_v8f32(ptr %base, <8 x i8> %idxs, <
85968594define <8 x float> @mgather_baseidx_zext_v8i8_v8f32(ptr %base, <8 x i8> %idxs, <8 x i1> %m, <8 x float> %passthru) {
85978595; RV32-LABEL: mgather_baseidx_zext_v8i8_v8f32:
85988596; RV32: # %bb.0:
8599- ; RV32-NEXT: vsetivli zero, 8, e32, m2, ta, mu
8600- ; RV32-NEXT: vzext.vf4 v12, v8
8601- ; RV32-NEXT: vsll.vi v8, v12, 2
8602- ; RV32-NEXT: vluxei32.v v10, (a0), v8, v0.t
8597+ ; RV32-NEXT: vsetivli zero, 8, e16, m1, ta, ma
8598+ ; RV32-NEXT: vzext.vf2 v9, v8
8599+ ; RV32-NEXT: vsll.vi v8, v9, 2
8600+ ; RV32-NEXT: vsetvli zero, zero, e32, m2, ta, mu
8601+ ; RV32-NEXT: vluxei16.v v10, (a0), v8, v0.t
86038602; RV32-NEXT: vmv.v.v v8, v10
86048603; RV32-NEXT: ret
86058604;
86068605; RV64V-LABEL: mgather_baseidx_zext_v8i8_v8f32:
86078606; RV64V: # %bb.0:
8608- ; RV64V-NEXT: vsetivli zero, 8, e64, m4 , ta, ma
8609- ; RV64V-NEXT: vzext.vf8 v12 , v8
8610- ; RV64V-NEXT: vsll.vi v12, v12 , 2
8607+ ; RV64V-NEXT: vsetivli zero, 8, e16, m1 , ta, ma
8608+ ; RV64V-NEXT: vzext.vf2 v9 , v8
8609+ ; RV64V-NEXT: vsll.vi v8, v9 , 2
86118610; RV64V-NEXT: vsetvli zero, zero, e32, m2, ta, mu
8612- ; RV64V-NEXT: vluxei64 .v v10, (a0), v12 , v0.t
8611+ ; RV64V-NEXT: vluxei16 .v v10, (a0), v8 , v0.t
86138612; RV64V-NEXT: vmv.v.v v8, v10
86148613; RV64V-NEXT: ret
86158614;
@@ -9067,11 +9066,10 @@ define <8 x float> @mgather_baseidx_zext_v8i16_v8f32(ptr %base, <8 x i16> %idxs,
90679066;
90689067; RV64V-LABEL: mgather_baseidx_zext_v8i16_v8f32:
90699068; RV64V: # %bb.0:
9070- ; RV64V-NEXT: vsetivli zero, 8, e64, m4, ta, ma
9071- ; RV64V-NEXT: vzext.vf4 v12, v8
9072- ; RV64V-NEXT: vsll.vi v12, v12, 2
9073- ; RV64V-NEXT: vsetvli zero, zero, e32, m2, ta, mu
9074- ; RV64V-NEXT: vluxei64.v v10, (a0), v12, v0.t
9069+ ; RV64V-NEXT: vsetivli zero, 8, e32, m2, ta, mu
9070+ ; RV64V-NEXT: vzext.vf2 v12, v8
9071+ ; RV64V-NEXT: vsll.vi v8, v12, 2
9072+ ; RV64V-NEXT: vluxei32.v v10, (a0), v8, v0.t
90759073; RV64V-NEXT: vmv.v.v v8, v10
90769074; RV64V-NEXT: ret
90779075;
@@ -10334,20 +10332,21 @@ define <8 x double> @mgather_baseidx_sext_v8i8_v8f64(ptr %base, <8 x i8> %idxs,
1033410332define <8 x double> @mgather_baseidx_zext_v8i8_v8f64(ptr %base, <8 x i8> %idxs, <8 x i1> %m, <8 x double> %passthru) {
1033510333; RV32V-LABEL: mgather_baseidx_zext_v8i8_v8f64:
1033610334; RV32V: # %bb.0:
10337- ; RV32V-NEXT: vsetivli zero, 8, e32, m2 , ta, ma
10338- ; RV32V-NEXT: vzext.vf4 v10 , v8
10339- ; RV32V-NEXT: vsll.vi v8, v10 , 3
10335+ ; RV32V-NEXT: vsetivli zero, 8, e16, m1 , ta, ma
10336+ ; RV32V-NEXT: vzext.vf2 v9 , v8
10337+ ; RV32V-NEXT: vsll.vi v8, v9 , 3
1034010338; RV32V-NEXT: vsetvli zero, zero, e64, m4, ta, mu
10341- ; RV32V-NEXT: vluxei32 .v v12, (a0), v8, v0.t
10339+ ; RV32V-NEXT: vluxei16 .v v12, (a0), v8, v0.t
1034210340; RV32V-NEXT: vmv.v.v v8, v12
1034310341; RV32V-NEXT: ret
1034410342;
1034510343; RV64V-LABEL: mgather_baseidx_zext_v8i8_v8f64:
1034610344; RV64V: # %bb.0:
10347- ; RV64V-NEXT: vsetivli zero, 8, e64, m4, ta, mu
10348- ; RV64V-NEXT: vzext.vf8 v16, v8
10349- ; RV64V-NEXT: vsll.vi v8, v16, 3
10350- ; RV64V-NEXT: vluxei64.v v12, (a0), v8, v0.t
10345+ ; RV64V-NEXT: vsetivli zero, 8, e16, m1, ta, ma
10346+ ; RV64V-NEXT: vzext.vf2 v9, v8
10347+ ; RV64V-NEXT: vsll.vi v8, v9, 3
10348+ ; RV64V-NEXT: vsetvli zero, zero, e64, m4, ta, mu
10349+ ; RV64V-NEXT: vluxei16.v v12, (a0), v8, v0.t
1035110350; RV64V-NEXT: vmv.v.v v8, v12
1035210351; RV64V-NEXT: ret
1035310352;
@@ -11001,10 +11000,11 @@ define <8 x double> @mgather_baseidx_zext_v8i16_v8f64(ptr %base, <8 x i16> %idxs
1100111000;
1100211001; RV64V-LABEL: mgather_baseidx_zext_v8i16_v8f64:
1100311002; RV64V: # %bb.0:
11004- ; RV64V-NEXT: vsetivli zero, 8, e64, m4, ta, mu
11005- ; RV64V-NEXT: vzext.vf4 v16, v8
11006- ; RV64V-NEXT: vsll.vi v8, v16, 3
11007- ; RV64V-NEXT: vluxei64.v v12, (a0), v8, v0.t
11003+ ; RV64V-NEXT: vsetivli zero, 8, e32, m2, ta, ma
11004+ ; RV64V-NEXT: vzext.vf2 v10, v8
11005+ ; RV64V-NEXT: vsll.vi v8, v10, 3
11006+ ; RV64V-NEXT: vsetvli zero, zero, e64, m4, ta, mu
11007+ ; RV64V-NEXT: vluxei32.v v12, (a0), v8, v0.t
1100811008; RV64V-NEXT: vmv.v.v v8, v12
1100911009; RV64V-NEXT: ret
1101011010;
0 commit comments