@@ -205,6 +205,23 @@ define {<4 x i32>, <4 x i32>} @vpload_factor2_interleaved_mask_intrinsic(ptr %pt
205205  ret  {<4  x i32 >, <4  x i32 >} %res1 
206206}
207207
208+ ; mask = %m, skip the last two fields. 
209+ define  {<2  x i32 >, <2  x i32 >} @vpload_factor4_interleaved_mask_intrinsic_skip_fields (ptr  %ptr , <2  x i1 > %m ) {
210+ ; CHECK-LABEL: vpload_factor4_interleaved_mask_intrinsic_skip_fields: 
211+ ; CHECK:       # %bb.0: 
212+ ; CHECK-NEXT:    li a1, 16 
213+ ; CHECK-NEXT:    vsetivli zero, 4, e32, mf2, ta, ma 
214+ ; CHECK-NEXT:    vlsseg2e32.v v8, (a0), a1, v0.t 
215+ ; CHECK-NEXT:    ret 
216+   %interleaved.mask  = call  <8  x i1 > @llvm.vector.interleave4 (<2  x i1 > %m , <2  x i1 > %m , <2  x i1 > splat (i1  false ), <2  x i1 > splat (i1  false ))
217+   %interleaved.vec  = tail  call  <8  x i32 > @llvm.vp.load.v8i32.p0 (ptr  %ptr , <8  x i1 > %interleaved.mask , i32  8 )
218+   %v0  = shufflevector  <8  x i32 > %interleaved.vec , <8  x i32 > poison, <2  x i32 > <i32  0 , i32  4 >
219+   %v1  = shufflevector  <8  x i32 > %interleaved.vec , <8  x i32 > poison, <2  x i32 > <i32  1 , i32  5 >
220+   %res0  = insertvalue  {<2  x i32 >, <2  x i32 >} undef , <2  x i32 > %v0 , 0 
221+   %res1  = insertvalue  {<2  x i32 >, <2  x i32 >} %res0 , <2  x i32 > %v1 , 1 
222+   ret  {<2  x i32 >, <2  x i32 >} %res1 
223+ }
224+ 
208225define  {<4  x i32 >, <4  x i32 >} @vpload_factor2_interleaved_mask_shuffle (ptr  %ptr , <4  x i1 > %m ) {
209226; CHECK-LABEL: vpload_factor2_interleaved_mask_shuffle: 
210227; CHECK:       # %bb.0: 
@@ -532,8 +549,8 @@ define {<8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>} @load_
532549; RV32-NEXT:    li a2, 32 
533550; RV32-NEXT:    lui a3, 12 
534551; RV32-NEXT:    lui a6, 12291 
535- ; RV32-NEXT:    lui a7, %hi(.LCPI26_0 ) 
536- ; RV32-NEXT:    addi a7, a7, %lo(.LCPI26_0 ) 
552+ ; RV32-NEXT:    lui a7, %hi(.LCPI27_0 ) 
553+ ; RV32-NEXT:    addi a7, a7, %lo(.LCPI27_0 ) 
537554; RV32-NEXT:    vsetvli zero, a2, e32, m8, ta, ma 
538555; RV32-NEXT:    vle32.v v24, (a5) 
539556; RV32-NEXT:    vmv.s.x v0, a3 
@@ -618,12 +635,12 @@ define {<8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>} @load_
618635; RV32-NEXT:    addi a1, a1, 16 
619636; RV32-NEXT:    vs4r.v v8, (a1) # vscale x 32-byte Folded Spill 
620637; RV32-NEXT:    lui a7, 49164 
621- ; RV32-NEXT:    lui a1, %hi(.LCPI26_1 ) 
622- ; RV32-NEXT:    addi a1, a1, %lo(.LCPI26_1 ) 
638+ ; RV32-NEXT:    lui a1, %hi(.LCPI27_1 ) 
639+ ; RV32-NEXT:    addi a1, a1, %lo(.LCPI27_1 ) 
623640; RV32-NEXT:    lui t2, 3 
624641; RV32-NEXT:    lui t1, 196656 
625- ; RV32-NEXT:    lui a4, %hi(.LCPI26_3 ) 
626- ; RV32-NEXT:    addi a4, a4, %lo(.LCPI26_3 ) 
642+ ; RV32-NEXT:    lui a4, %hi(.LCPI27_3 ) 
643+ ; RV32-NEXT:    addi a4, a4, %lo(.LCPI27_3 ) 
627644; RV32-NEXT:    lui t0, 786624 
628645; RV32-NEXT:    li a5, 48 
629646; RV32-NEXT:    lui a6, 768 
@@ -802,8 +819,8 @@ define {<8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>} @load_
802819; RV32-NEXT:    vl8r.v v8, (a1) # vscale x 64-byte Folded Reload 
803820; RV32-NEXT:    vsetvli zero, zero, e64, m8, ta, ma 
804821; RV32-NEXT:    vrgatherei16.vv v24, v8, v2 
805- ; RV32-NEXT:    lui a1, %hi(.LCPI26_2 ) 
806- ; RV32-NEXT:    addi a1, a1, %lo(.LCPI26_2 ) 
822+ ; RV32-NEXT:    lui a1, %hi(.LCPI27_2 ) 
823+ ; RV32-NEXT:    addi a1, a1, %lo(.LCPI27_2 ) 
807824; RV32-NEXT:    lui a3, 3073 
808825; RV32-NEXT:    addi a3, a3, -1024 
809826; RV32-NEXT:    vmv.s.x v0, a3 
@@ -867,16 +884,16 @@ define {<8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>} @load_
867884; RV32-NEXT:    vrgatherei16.vv v28, v8, v3 
868885; RV32-NEXT:    vsetivli zero, 10, e32, m4, tu, ma 
869886; RV32-NEXT:    vmv.v.v v28, v24 
870- ; RV32-NEXT:    lui a1, %hi(.LCPI26_4 ) 
871- ; RV32-NEXT:    addi a1, a1, %lo(.LCPI26_4 ) 
872- ; RV32-NEXT:    lui a2, %hi(.LCPI26_5 ) 
873- ; RV32-NEXT:    addi a2, a2, %lo(.LCPI26_5 ) 
887+ ; RV32-NEXT:    lui a1, %hi(.LCPI27_4 ) 
888+ ; RV32-NEXT:    addi a1, a1, %lo(.LCPI27_4 ) 
889+ ; RV32-NEXT:    lui a2, %hi(.LCPI27_5 ) 
890+ ; RV32-NEXT:    addi a2, a2, %lo(.LCPI27_5 ) 
874891; RV32-NEXT:    vsetivli zero, 16, e16, m2, ta, ma 
875892; RV32-NEXT:    vle16.v v24, (a2) 
876893; RV32-NEXT:    vsetivli zero, 8, e16, m1, ta, ma 
877894; RV32-NEXT:    vle16.v v8, (a1) 
878- ; RV32-NEXT:    lui a1, %hi(.LCPI26_7 ) 
879- ; RV32-NEXT:    addi a1, a1, %lo(.LCPI26_7 ) 
895+ ; RV32-NEXT:    lui a1, %hi(.LCPI27_7 ) 
896+ ; RV32-NEXT:    addi a1, a1, %lo(.LCPI27_7 ) 
880897; RV32-NEXT:    vsetivli zero, 16, e64, m8, ta, ma 
881898; RV32-NEXT:    vle16.v v10, (a1) 
882899; RV32-NEXT:    csrr a1, vlenb 
@@ -904,14 +921,14 @@ define {<8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>} @load_
904921; RV32-NEXT:    vl8r.v v0, (a1) # vscale x 64-byte Folded Reload 
905922; RV32-NEXT:    vsetivli zero, 16, e64, m8, ta, ma 
906923; RV32-NEXT:    vrgatherei16.vv v16, v0, v10 
907- ; RV32-NEXT:    lui a1, %hi(.LCPI26_6 ) 
908- ; RV32-NEXT:    addi a1, a1, %lo(.LCPI26_6 ) 
909- ; RV32-NEXT:    lui a2, %hi(.LCPI26_8 ) 
910- ; RV32-NEXT:    addi a2, a2, %lo(.LCPI26_8 ) 
924+ ; RV32-NEXT:    lui a1, %hi(.LCPI27_6 ) 
925+ ; RV32-NEXT:    addi a1, a1, %lo(.LCPI27_6 ) 
926+ ; RV32-NEXT:    lui a2, %hi(.LCPI27_8 ) 
927+ ; RV32-NEXT:    addi a2, a2, %lo(.LCPI27_8 ) 
911928; RV32-NEXT:    vsetivli zero, 8, e16, m1, ta, ma 
912929; RV32-NEXT:    vle16.v v4, (a1) 
913- ; RV32-NEXT:    lui a1, %hi(.LCPI26_9 ) 
914- ; RV32-NEXT:    addi a1, a1, %lo(.LCPI26_9 ) 
930+ ; RV32-NEXT:    lui a1, %hi(.LCPI27_9 ) 
931+ ; RV32-NEXT:    addi a1, a1, %lo(.LCPI27_9 ) 
915932; RV32-NEXT:    vsetivli zero, 16, e16, m2, ta, ma 
916933; RV32-NEXT:    vle16.v v6, (a1) 
917934; RV32-NEXT:    vsetivli zero, 8, e64, m4, ta, ma 
@@ -998,8 +1015,8 @@ define {<8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>} @load_
9981015; RV64-NEXT:    li a4, 128 
9991016; RV64-NEXT:    lui a1, 1 
10001017; RV64-NEXT:    vle64.v v8, (a3) 
1001- ; RV64-NEXT:    lui a3, %hi(.LCPI26_0 ) 
1002- ; RV64-NEXT:    addi a3, a3, %lo(.LCPI26_0 ) 
1018+ ; RV64-NEXT:    lui a3, %hi(.LCPI27_0 ) 
1019+ ; RV64-NEXT:    addi a3, a3, %lo(.LCPI27_0 ) 
10031020; RV64-NEXT:    vmv.s.x v0, a4 
10041021; RV64-NEXT:    csrr a4, vlenb 
10051022; RV64-NEXT:    li a5, 61 
@@ -1187,8 +1204,8 @@ define {<8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>} @load_
11871204; RV64-NEXT:    vl8r.v v16, (a2) # vscale x 64-byte Folded Reload 
11881205; RV64-NEXT:    vsetivli zero, 8, e64, m4, ta, mu 
11891206; RV64-NEXT:    vslideup.vi v12, v16, 1, v0.t 
1190- ; RV64-NEXT:    lui a2, %hi(.LCPI26_1 ) 
1191- ; RV64-NEXT:    addi a2, a2, %lo(.LCPI26_1 ) 
1207+ ; RV64-NEXT:    lui a2, %hi(.LCPI27_1 ) 
1208+ ; RV64-NEXT:    addi a2, a2, %lo(.LCPI27_1 ) 
11921209; RV64-NEXT:    li a3, 192 
11931210; RV64-NEXT:    vsetivli zero, 16, e16, m2, ta, ma 
11941211; RV64-NEXT:    vle16.v v6, (a2) 
@@ -1222,8 +1239,8 @@ define {<8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>} @load_
12221239; RV64-NEXT:    vrgatherei16.vv v24, v16, v6 
12231240; RV64-NEXT:    addi a2, sp, 16 
12241241; RV64-NEXT:    vs8r.v v24, (a2) # vscale x 64-byte Folded Spill 
1225- ; RV64-NEXT:    lui a2, %hi(.LCPI26_2 ) 
1226- ; RV64-NEXT:    addi a2, a2, %lo(.LCPI26_2 ) 
1242+ ; RV64-NEXT:    lui a2, %hi(.LCPI27_2 ) 
1243+ ; RV64-NEXT:    addi a2, a2, %lo(.LCPI27_2 ) 
12271244; RV64-NEXT:    li a3, 1040 
12281245; RV64-NEXT:    vmv.s.x v0, a3 
12291246; RV64-NEXT:    addi a1, a1, -2016 
@@ -1307,12 +1324,12 @@ define {<8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>} @load_
13071324; RV64-NEXT:    add a1, sp, a1 
13081325; RV64-NEXT:    addi a1, a1, 16 
13091326; RV64-NEXT:    vs4r.v v8, (a1) # vscale x 32-byte Folded Spill 
1310- ; RV64-NEXT:    lui a1, %hi(.LCPI26_3 ) 
1311- ; RV64-NEXT:    addi a1, a1, %lo(.LCPI26_3 ) 
1327+ ; RV64-NEXT:    lui a1, %hi(.LCPI27_3 ) 
1328+ ; RV64-NEXT:    addi a1, a1, %lo(.LCPI27_3 ) 
13121329; RV64-NEXT:    vsetivli zero, 16, e16, m2, ta, ma 
13131330; RV64-NEXT:    vle16.v v20, (a1) 
1314- ; RV64-NEXT:    lui a1, %hi(.LCPI26_4 ) 
1315- ; RV64-NEXT:    addi a1, a1, %lo(.LCPI26_4 ) 
1331+ ; RV64-NEXT:    lui a1, %hi(.LCPI27_4 ) 
1332+ ; RV64-NEXT:    addi a1, a1, %lo(.LCPI27_4 ) 
13161333; RV64-NEXT:    vle16.v v8, (a1) 
13171334; RV64-NEXT:    csrr a1, vlenb 
13181335; RV64-NEXT:    li a2, 77 
@@ -1363,8 +1380,8 @@ define {<8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>} @load_
13631380; RV64-NEXT:    vl2r.v v8, (a1) # vscale x 16-byte Folded Reload 
13641381; RV64-NEXT:    vsetivli zero, 16, e64, m8, ta, ma 
13651382; RV64-NEXT:    vrgatherei16.vv v0, v16, v8 
1366- ; RV64-NEXT:    lui a1, %hi(.LCPI26_5 ) 
1367- ; RV64-NEXT:    addi a1, a1, %lo(.LCPI26_5 ) 
1383+ ; RV64-NEXT:    lui a1, %hi(.LCPI27_5 ) 
1384+ ; RV64-NEXT:    addi a1, a1, %lo(.LCPI27_5 ) 
13681385; RV64-NEXT:    vle16.v v20, (a1) 
13691386; RV64-NEXT:    csrr a1, vlenb 
13701387; RV64-NEXT:    li a2, 61 
@@ -1981,8 +1998,8 @@ define {<4 x i32>, <4 x i32>, <4 x i32>} @invalid_vp_mask(ptr %ptr) {
19811998; RV32-NEXT:    vle32.v v12, (a0), v0.t 
19821999; RV32-NEXT:    li a0, 36 
19832000; RV32-NEXT:    vmv.s.x v20, a1 
1984- ; RV32-NEXT:    lui a1, %hi(.LCPI62_0 ) 
1985- ; RV32-NEXT:    addi a1, a1, %lo(.LCPI62_0 ) 
2001+ ; RV32-NEXT:    lui a1, %hi(.LCPI63_0 ) 
2002+ ; RV32-NEXT:    addi a1, a1, %lo(.LCPI63_0 ) 
19862003; RV32-NEXT:    vsetivli zero, 8, e32, m2, ta, ma 
19872004; RV32-NEXT:    vle16.v v21, (a1) 
19882005; RV32-NEXT:    vcompress.vm v8, v12, v11 
@@ -2057,8 +2074,8 @@ define {<4 x i32>, <4 x i32>, <4 x i32>} @invalid_vp_evl(ptr %ptr) {
20572074; RV32-NEXT:    vmv.s.x v10, a0 
20582075; RV32-NEXT:    li a0, 146 
20592076; RV32-NEXT:    vmv.s.x v11, a0 
2060- ; RV32-NEXT:    lui a0, %hi(.LCPI63_0 ) 
2061- ; RV32-NEXT:    addi a0, a0, %lo(.LCPI63_0 ) 
2077+ ; RV32-NEXT:    lui a0, %hi(.LCPI64_0 ) 
2078+ ; RV32-NEXT:    addi a0, a0, %lo(.LCPI64_0 ) 
20622079; RV32-NEXT:    vsetivli zero, 8, e32, m2, ta, ma 
20632080; RV32-NEXT:    vle16.v v20, (a0) 
20642081; RV32-NEXT:    li a0, 36 
@@ -2277,8 +2294,8 @@ define {<4 x i32>, <4 x i32>, <4 x i32>} @maskedload_factor3_invalid_skip_field(
22772294; RV32-NEXT:    vle32.v v12, (a0), v0.t 
22782295; RV32-NEXT:    li a0, 36 
22792296; RV32-NEXT:    vmv.s.x v20, a1 
2280- ; RV32-NEXT:    lui a1, %hi(.LCPI72_0 ) 
2281- ; RV32-NEXT:    addi a1, a1, %lo(.LCPI72_0 ) 
2297+ ; RV32-NEXT:    lui a1, %hi(.LCPI73_0 ) 
2298+ ; RV32-NEXT:    addi a1, a1, %lo(.LCPI73_0 ) 
22822299; RV32-NEXT:    vsetivli zero, 8, e32, m2, ta, ma 
22832300; RV32-NEXT:    vle16.v v21, (a1) 
22842301; RV32-NEXT:    vcompress.vm v8, v12, v11 
0 commit comments