@@ -205,6 +205,23 @@ define {<4 x i32>, <4 x i32>} @vpload_factor2_interleaved_mask_intrinsic(ptr %pt
205
205
ret {<4 x i32 >, <4 x i32 >} %res1
206
206
}
207
207
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
+
208
225
define {<4 x i32 >, <4 x i32 >} @vpload_factor2_interleaved_mask_shuffle (ptr %ptr , <4 x i1 > %m ) {
209
226
; CHECK-LABEL: vpload_factor2_interleaved_mask_shuffle:
210
227
; 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_
532
549
; RV32-NEXT: li a2, 32
533
550
; RV32-NEXT: lui a3, 12
534
551
; 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 )
537
554
; RV32-NEXT: vsetvli zero, a2, e32, m8, ta, ma
538
555
; RV32-NEXT: vle32.v v24, (a5)
539
556
; 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_
618
635
; RV32-NEXT: addi a1, a1, 16
619
636
; RV32-NEXT: vs4r.v v8, (a1) # vscale x 32-byte Folded Spill
620
637
; 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 )
623
640
; RV32-NEXT: lui t2, 3
624
641
; 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 )
627
644
; RV32-NEXT: lui t0, 786624
628
645
; RV32-NEXT: li a5, 48
629
646
; 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_
802
819
; RV32-NEXT: vl8r.v v8, (a1) # vscale x 64-byte Folded Reload
803
820
; RV32-NEXT: vsetvli zero, zero, e64, m8, ta, ma
804
821
; 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 )
807
824
; RV32-NEXT: lui a3, 3073
808
825
; RV32-NEXT: addi a3, a3, -1024
809
826
; 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_
867
884
; RV32-NEXT: vrgatherei16.vv v28, v8, v3
868
885
; RV32-NEXT: vsetivli zero, 10, e32, m4, tu, ma
869
886
; 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 )
874
891
; RV32-NEXT: vsetivli zero, 16, e16, m2, ta, ma
875
892
; RV32-NEXT: vle16.v v24, (a2)
876
893
; RV32-NEXT: vsetivli zero, 8, e16, m1, ta, ma
877
894
; 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 )
880
897
; RV32-NEXT: vsetivli zero, 16, e64, m8, ta, ma
881
898
; RV32-NEXT: vle16.v v10, (a1)
882
899
; 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_
904
921
; RV32-NEXT: vl8r.v v0, (a1) # vscale x 64-byte Folded Reload
905
922
; RV32-NEXT: vsetivli zero, 16, e64, m8, ta, ma
906
923
; 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 )
911
928
; RV32-NEXT: vsetivli zero, 8, e16, m1, ta, ma
912
929
; 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 )
915
932
; RV32-NEXT: vsetivli zero, 16, e16, m2, ta, ma
916
933
; RV32-NEXT: vle16.v v6, (a1)
917
934
; 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_
998
1015
; RV64-NEXT: li a4, 128
999
1016
; RV64-NEXT: lui a1, 1
1000
1017
; 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 )
1003
1020
; RV64-NEXT: vmv.s.x v0, a4
1004
1021
; RV64-NEXT: csrr a4, vlenb
1005
1022
; 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_
1187
1204
; RV64-NEXT: vl8r.v v16, (a2) # vscale x 64-byte Folded Reload
1188
1205
; RV64-NEXT: vsetivli zero, 8, e64, m4, ta, mu
1189
1206
; 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 )
1192
1209
; RV64-NEXT: li a3, 192
1193
1210
; RV64-NEXT: vsetivli zero, 16, e16, m2, ta, ma
1194
1211
; 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_
1222
1239
; RV64-NEXT: vrgatherei16.vv v24, v16, v6
1223
1240
; RV64-NEXT: addi a2, sp, 16
1224
1241
; 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 )
1227
1244
; RV64-NEXT: li a3, 1040
1228
1245
; RV64-NEXT: vmv.s.x v0, a3
1229
1246
; 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_
1307
1324
; RV64-NEXT: add a1, sp, a1
1308
1325
; RV64-NEXT: addi a1, a1, 16
1309
1326
; 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 )
1312
1329
; RV64-NEXT: vsetivli zero, 16, e16, m2, ta, ma
1313
1330
; 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 )
1316
1333
; RV64-NEXT: vle16.v v8, (a1)
1317
1334
; RV64-NEXT: csrr a1, vlenb
1318
1335
; 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_
1363
1380
; RV64-NEXT: vl2r.v v8, (a1) # vscale x 16-byte Folded Reload
1364
1381
; RV64-NEXT: vsetivli zero, 16, e64, m8, ta, ma
1365
1382
; 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 )
1368
1385
; RV64-NEXT: vle16.v v20, (a1)
1369
1386
; RV64-NEXT: csrr a1, vlenb
1370
1387
; RV64-NEXT: li a2, 61
@@ -1981,8 +1998,8 @@ define {<4 x i32>, <4 x i32>, <4 x i32>} @invalid_vp_mask(ptr %ptr) {
1981
1998
; RV32-NEXT: vle32.v v12, (a0), v0.t
1982
1999
; RV32-NEXT: li a0, 36
1983
2000
; 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 )
1986
2003
; RV32-NEXT: vsetivli zero, 8, e32, m2, ta, ma
1987
2004
; RV32-NEXT: vle16.v v21, (a1)
1988
2005
; 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) {
2057
2074
; RV32-NEXT: vmv.s.x v10, a0
2058
2075
; RV32-NEXT: li a0, 146
2059
2076
; 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 )
2062
2079
; RV32-NEXT: vsetivli zero, 8, e32, m2, ta, ma
2063
2080
; RV32-NEXT: vle16.v v20, (a0)
2064
2081
; RV32-NEXT: li a0, 36
@@ -2277,8 +2294,8 @@ define {<4 x i32>, <4 x i32>, <4 x i32>} @maskedload_factor3_invalid_skip_field(
2277
2294
; RV32-NEXT: vle32.v v12, (a0), v0.t
2278
2295
; RV32-NEXT: li a0, 36
2279
2296
; 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 )
2282
2299
; RV32-NEXT: vsetivli zero, 8, e32, m2, ta, ma
2283
2300
; RV32-NEXT: vle16.v v21, (a1)
2284
2301
; RV32-NEXT: vcompress.vm v8, v12, v11
0 commit comments