Skip to content

Commit 4dd9c2e

Browse files
authored
[RISCV] Use NewVL in splatPartsI64WithVL. (#83690)
In 7b5cf52, I added this NewVL and checked that it had been set, but I didn't use it for the VL of the splat.
1 parent 8b26e60 commit 4dd9c2e

9 files changed

+185
-186
lines changed

llvm/lib/Target/RISCV/RISCVISelLowering.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4057,8 +4057,7 @@ static SDValue splatPartsI64WithVL(const SDLoc &DL, MVT VT, SDValue Passthru,
40574057
MVT InterVT =
40584058
MVT::getVectorVT(MVT::i32, VT.getVectorElementCount() * 2);
40594059
auto InterVec = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, InterVT,
4060-
DAG.getUNDEF(InterVT), Lo,
4061-
DAG.getRegister(RISCV::X0, MVT::i32));
4060+
DAG.getUNDEF(InterVT), Lo, NewVL);
40624061
return DAG.getNode(ISD::BITCAST, DL, VT, InterVec);
40634062
}
40644063
}

llvm/test/CodeGen/RISCV/rvv/fixed-vectors-bitreverse-vp.ll

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -896,7 +896,7 @@ define <2 x i64> @vp_bitreverse_v2i64(<2 x i64> %va, <2 x i1> %m, i32 zeroext %e
896896
; RV32-NEXT: vsrl.vi v9, v8, 4, v0.t
897897
; RV32-NEXT: lui a1, 61681
898898
; RV32-NEXT: addi a1, a1, -241
899-
; RV32-NEXT: vsetvli a2, zero, e32, m1, ta, ma
899+
; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma
900900
; RV32-NEXT: vmv.v.x v10, a1
901901
; RV32-NEXT: vsetvli zero, a0, e64, m1, ta, ma
902902
; RV32-NEXT: vand.vv v9, v9, v10, v0.t
@@ -906,7 +906,7 @@ define <2 x i64> @vp_bitreverse_v2i64(<2 x i64> %va, <2 x i1> %m, i32 zeroext %e
906906
; RV32-NEXT: vsrl.vi v9, v8, 2, v0.t
907907
; RV32-NEXT: lui a1, 209715
908908
; RV32-NEXT: addi a1, a1, 819
909-
; RV32-NEXT: vsetvli a2, zero, e32, m1, ta, ma
909+
; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma
910910
; RV32-NEXT: vmv.v.x v10, a1
911911
; RV32-NEXT: vsetvli zero, a0, e64, m1, ta, ma
912912
; RV32-NEXT: vand.vv v9, v9, v10, v0.t
@@ -916,7 +916,7 @@ define <2 x i64> @vp_bitreverse_v2i64(<2 x i64> %va, <2 x i1> %m, i32 zeroext %e
916916
; RV32-NEXT: vsrl.vi v9, v8, 1, v0.t
917917
; RV32-NEXT: lui a1, 349525
918918
; RV32-NEXT: addi a1, a1, 1365
919-
; RV32-NEXT: vsetvli a2, zero, e32, m1, ta, ma
919+
; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma
920920
; RV32-NEXT: vmv.v.x v10, a1
921921
; RV32-NEXT: vsetvli zero, a0, e64, m1, ta, ma
922922
; RV32-NEXT: vand.vv v9, v9, v10, v0.t
@@ -1031,7 +1031,7 @@ define <2 x i64> @vp_bitreverse_v2i64_unmasked(<2 x i64> %va, i32 zeroext %evl)
10311031
; RV32-NEXT: vsrl.vi v9, v8, 4
10321032
; RV32-NEXT: lui a1, 61681
10331033
; RV32-NEXT: addi a1, a1, -241
1034-
; RV32-NEXT: vsetvli a2, zero, e32, m1, ta, ma
1034+
; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma
10351035
; RV32-NEXT: vmv.v.x v10, a1
10361036
; RV32-NEXT: vsetvli zero, a0, e64, m1, ta, ma
10371037
; RV32-NEXT: vand.vv v9, v9, v10
@@ -1041,7 +1041,7 @@ define <2 x i64> @vp_bitreverse_v2i64_unmasked(<2 x i64> %va, i32 zeroext %evl)
10411041
; RV32-NEXT: vsrl.vi v9, v8, 2
10421042
; RV32-NEXT: lui a1, 209715
10431043
; RV32-NEXT: addi a1, a1, 819
1044-
; RV32-NEXT: vsetvli a2, zero, e32, m1, ta, ma
1044+
; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma
10451045
; RV32-NEXT: vmv.v.x v10, a1
10461046
; RV32-NEXT: vsetvli zero, a0, e64, m1, ta, ma
10471047
; RV32-NEXT: vand.vv v9, v9, v10
@@ -1051,7 +1051,7 @@ define <2 x i64> @vp_bitreverse_v2i64_unmasked(<2 x i64> %va, i32 zeroext %evl)
10511051
; RV32-NEXT: vsrl.vi v9, v8, 1
10521052
; RV32-NEXT: lui a1, 349525
10531053
; RV32-NEXT: addi a1, a1, 1365
1054-
; RV32-NEXT: vsetvli a2, zero, e32, m1, ta, ma
1054+
; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma
10551055
; RV32-NEXT: vmv.v.x v10, a1
10561056
; RV32-NEXT: vsetvli zero, a0, e64, m1, ta, ma
10571057
; RV32-NEXT: vand.vv v9, v9, v10
@@ -1170,7 +1170,7 @@ define <4 x i64> @vp_bitreverse_v4i64(<4 x i64> %va, <4 x i1> %m, i32 zeroext %e
11701170
; RV32-NEXT: vsrl.vi v10, v8, 4, v0.t
11711171
; RV32-NEXT: lui a1, 61681
11721172
; RV32-NEXT: addi a1, a1, -241
1173-
; RV32-NEXT: vsetvli a2, zero, e32, m2, ta, ma
1173+
; RV32-NEXT: vsetivli zero, 8, e32, m2, ta, ma
11741174
; RV32-NEXT: vmv.v.x v12, a1
11751175
; RV32-NEXT: vsetvli zero, a0, e64, m2, ta, ma
11761176
; RV32-NEXT: vand.vv v10, v10, v12, v0.t
@@ -1180,7 +1180,7 @@ define <4 x i64> @vp_bitreverse_v4i64(<4 x i64> %va, <4 x i1> %m, i32 zeroext %e
11801180
; RV32-NEXT: vsrl.vi v10, v8, 2, v0.t
11811181
; RV32-NEXT: lui a1, 209715
11821182
; RV32-NEXT: addi a1, a1, 819
1183-
; RV32-NEXT: vsetvli a2, zero, e32, m2, ta, ma
1183+
; RV32-NEXT: vsetivli zero, 8, e32, m2, ta, ma
11841184
; RV32-NEXT: vmv.v.x v12, a1
11851185
; RV32-NEXT: vsetvli zero, a0, e64, m2, ta, ma
11861186
; RV32-NEXT: vand.vv v10, v10, v12, v0.t
@@ -1190,7 +1190,7 @@ define <4 x i64> @vp_bitreverse_v4i64(<4 x i64> %va, <4 x i1> %m, i32 zeroext %e
11901190
; RV32-NEXT: vsrl.vi v10, v8, 1, v0.t
11911191
; RV32-NEXT: lui a1, 349525
11921192
; RV32-NEXT: addi a1, a1, 1365
1193-
; RV32-NEXT: vsetvli a2, zero, e32, m2, ta, ma
1193+
; RV32-NEXT: vsetivli zero, 8, e32, m2, ta, ma
11941194
; RV32-NEXT: vmv.v.x v12, a1
11951195
; RV32-NEXT: vsetvli zero, a0, e64, m2, ta, ma
11961196
; RV32-NEXT: vand.vv v10, v10, v12, v0.t
@@ -1305,7 +1305,7 @@ define <4 x i64> @vp_bitreverse_v4i64_unmasked(<4 x i64> %va, i32 zeroext %evl)
13051305
; RV32-NEXT: vsrl.vi v10, v8, 4
13061306
; RV32-NEXT: lui a1, 61681
13071307
; RV32-NEXT: addi a1, a1, -241
1308-
; RV32-NEXT: vsetvli a2, zero, e32, m2, ta, ma
1308+
; RV32-NEXT: vsetivli zero, 8, e32, m2, ta, ma
13091309
; RV32-NEXT: vmv.v.x v12, a1
13101310
; RV32-NEXT: vsetvli zero, a0, e64, m2, ta, ma
13111311
; RV32-NEXT: vand.vv v10, v10, v12
@@ -1315,7 +1315,7 @@ define <4 x i64> @vp_bitreverse_v4i64_unmasked(<4 x i64> %va, i32 zeroext %evl)
13151315
; RV32-NEXT: vsrl.vi v10, v8, 2
13161316
; RV32-NEXT: lui a1, 209715
13171317
; RV32-NEXT: addi a1, a1, 819
1318-
; RV32-NEXT: vsetvli a2, zero, e32, m2, ta, ma
1318+
; RV32-NEXT: vsetivli zero, 8, e32, m2, ta, ma
13191319
; RV32-NEXT: vmv.v.x v12, a1
13201320
; RV32-NEXT: vsetvli zero, a0, e64, m2, ta, ma
13211321
; RV32-NEXT: vand.vv v10, v10, v12
@@ -1325,7 +1325,7 @@ define <4 x i64> @vp_bitreverse_v4i64_unmasked(<4 x i64> %va, i32 zeroext %evl)
13251325
; RV32-NEXT: vsrl.vi v10, v8, 1
13261326
; RV32-NEXT: lui a1, 349525
13271327
; RV32-NEXT: addi a1, a1, 1365
1328-
; RV32-NEXT: vsetvli a2, zero, e32, m2, ta, ma
1328+
; RV32-NEXT: vsetivli zero, 8, e32, m2, ta, ma
13291329
; RV32-NEXT: vmv.v.x v12, a1
13301330
; RV32-NEXT: vsetvli zero, a0, e64, m2, ta, ma
13311331
; RV32-NEXT: vand.vv v10, v10, v12
@@ -1444,7 +1444,7 @@ define <8 x i64> @vp_bitreverse_v8i64(<8 x i64> %va, <8 x i1> %m, i32 zeroext %e
14441444
; RV32-NEXT: vsrl.vi v12, v8, 4, v0.t
14451445
; RV32-NEXT: lui a1, 61681
14461446
; RV32-NEXT: addi a1, a1, -241
1447-
; RV32-NEXT: vsetvli a2, zero, e32, m4, ta, ma
1447+
; RV32-NEXT: vsetivli zero, 16, e32, m4, ta, ma
14481448
; RV32-NEXT: vmv.v.x v16, a1
14491449
; RV32-NEXT: vsetvli zero, a0, e64, m4, ta, ma
14501450
; RV32-NEXT: vand.vv v12, v12, v16, v0.t
@@ -1454,7 +1454,7 @@ define <8 x i64> @vp_bitreverse_v8i64(<8 x i64> %va, <8 x i1> %m, i32 zeroext %e
14541454
; RV32-NEXT: vsrl.vi v12, v8, 2, v0.t
14551455
; RV32-NEXT: lui a1, 209715
14561456
; RV32-NEXT: addi a1, a1, 819
1457-
; RV32-NEXT: vsetvli a2, zero, e32, m4, ta, ma
1457+
; RV32-NEXT: vsetivli zero, 16, e32, m4, ta, ma
14581458
; RV32-NEXT: vmv.v.x v16, a1
14591459
; RV32-NEXT: vsetvli zero, a0, e64, m4, ta, ma
14601460
; RV32-NEXT: vand.vv v12, v12, v16, v0.t
@@ -1464,7 +1464,7 @@ define <8 x i64> @vp_bitreverse_v8i64(<8 x i64> %va, <8 x i1> %m, i32 zeroext %e
14641464
; RV32-NEXT: vsrl.vi v12, v8, 1, v0.t
14651465
; RV32-NEXT: lui a1, 349525
14661466
; RV32-NEXT: addi a1, a1, 1365
1467-
; RV32-NEXT: vsetvli a2, zero, e32, m4, ta, ma
1467+
; RV32-NEXT: vsetivli zero, 16, e32, m4, ta, ma
14681468
; RV32-NEXT: vmv.v.x v16, a1
14691469
; RV32-NEXT: vsetvli zero, a0, e64, m4, ta, ma
14701470
; RV32-NEXT: vand.vv v12, v12, v16, v0.t
@@ -1579,7 +1579,7 @@ define <8 x i64> @vp_bitreverse_v8i64_unmasked(<8 x i64> %va, i32 zeroext %evl)
15791579
; RV32-NEXT: vsrl.vi v12, v8, 4
15801580
; RV32-NEXT: lui a1, 61681
15811581
; RV32-NEXT: addi a1, a1, -241
1582-
; RV32-NEXT: vsetvli a2, zero, e32, m4, ta, ma
1582+
; RV32-NEXT: vsetivli zero, 16, e32, m4, ta, ma
15831583
; RV32-NEXT: vmv.v.x v16, a1
15841584
; RV32-NEXT: vsetvli zero, a0, e64, m4, ta, ma
15851585
; RV32-NEXT: vand.vv v12, v12, v16
@@ -1589,7 +1589,7 @@ define <8 x i64> @vp_bitreverse_v8i64_unmasked(<8 x i64> %va, i32 zeroext %evl)
15891589
; RV32-NEXT: vsrl.vi v12, v8, 2
15901590
; RV32-NEXT: lui a1, 209715
15911591
; RV32-NEXT: addi a1, a1, 819
1592-
; RV32-NEXT: vsetvli a2, zero, e32, m4, ta, ma
1592+
; RV32-NEXT: vsetivli zero, 16, e32, m4, ta, ma
15931593
; RV32-NEXT: vmv.v.x v16, a1
15941594
; RV32-NEXT: vsetvli zero, a0, e64, m4, ta, ma
15951595
; RV32-NEXT: vand.vv v12, v12, v16
@@ -1599,7 +1599,7 @@ define <8 x i64> @vp_bitreverse_v8i64_unmasked(<8 x i64> %va, i32 zeroext %evl)
15991599
; RV32-NEXT: vsrl.vi v12, v8, 1
16001600
; RV32-NEXT: lui a1, 349525
16011601
; RV32-NEXT: addi a1, a1, 1365
1602-
; RV32-NEXT: vsetvli a2, zero, e32, m4, ta, ma
1602+
; RV32-NEXT: vsetivli zero, 16, e32, m4, ta, ma
16031603
; RV32-NEXT: vmv.v.x v16, a1
16041604
; RV32-NEXT: vsetvli zero, a0, e64, m4, ta, ma
16051605
; RV32-NEXT: vand.vv v12, v12, v16

llvm/test/CodeGen/RISCV/rvv/fixed-vectors-bitreverse.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ define void @bitreverse_v2i64(ptr %x, ptr %y) {
147147
; RV32-NEXT: vsrl.vi v9, v8, 4
148148
; RV32-NEXT: lui a1, 61681
149149
; RV32-NEXT: addi a1, a1, -241
150-
; RV32-NEXT: vsetvli a2, zero, e32, m1, ta, ma
150+
; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma
151151
; RV32-NEXT: vmv.v.x v10, a1
152152
; RV32-NEXT: vsetivli zero, 2, e64, m1, ta, ma
153153
; RV32-NEXT: vand.vv v9, v9, v10
@@ -157,7 +157,7 @@ define void @bitreverse_v2i64(ptr %x, ptr %y) {
157157
; RV32-NEXT: vsrl.vi v9, v8, 2
158158
; RV32-NEXT: lui a1, 209715
159159
; RV32-NEXT: addi a1, a1, 819
160-
; RV32-NEXT: vsetvli a2, zero, e32, m1, ta, ma
160+
; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma
161161
; RV32-NEXT: vmv.v.x v10, a1
162162
; RV32-NEXT: vsetivli zero, 2, e64, m1, ta, ma
163163
; RV32-NEXT: vand.vv v9, v9, v10
@@ -167,7 +167,7 @@ define void @bitreverse_v2i64(ptr %x, ptr %y) {
167167
; RV32-NEXT: vsrl.vi v9, v8, 1
168168
; RV32-NEXT: lui a1, 349525
169169
; RV32-NEXT: addi a1, a1, 1365
170-
; RV32-NEXT: vsetvli a2, zero, e32, m1, ta, ma
170+
; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma
171171
; RV32-NEXT: vmv.v.x v10, a1
172172
; RV32-NEXT: vsetivli zero, 2, e64, m1, ta, ma
173173
; RV32-NEXT: vand.vv v9, v9, v10
@@ -398,7 +398,7 @@ define void @bitreverse_v4i64(ptr %x, ptr %y) {
398398
; RV32-NEXT: vsrl.vi v10, v8, 4
399399
; RV32-NEXT: lui a1, 61681
400400
; RV32-NEXT: addi a1, a1, -241
401-
; RV32-NEXT: vsetvli a2, zero, e32, m2, ta, ma
401+
; RV32-NEXT: vsetivli zero, 8, e32, m2, ta, ma
402402
; RV32-NEXT: vmv.v.x v12, a1
403403
; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, ma
404404
; RV32-NEXT: vand.vv v10, v10, v12
@@ -408,7 +408,7 @@ define void @bitreverse_v4i64(ptr %x, ptr %y) {
408408
; RV32-NEXT: vsrl.vi v10, v8, 2
409409
; RV32-NEXT: lui a1, 209715
410410
; RV32-NEXT: addi a1, a1, 819
411-
; RV32-NEXT: vsetvli a2, zero, e32, m2, ta, ma
411+
; RV32-NEXT: vsetivli zero, 8, e32, m2, ta, ma
412412
; RV32-NEXT: vmv.v.x v12, a1
413413
; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, ma
414414
; RV32-NEXT: vand.vv v10, v10, v12
@@ -418,7 +418,7 @@ define void @bitreverse_v4i64(ptr %x, ptr %y) {
418418
; RV32-NEXT: vsrl.vi v10, v8, 1
419419
; RV32-NEXT: lui a1, 349525
420420
; RV32-NEXT: addi a1, a1, 1365
421-
; RV32-NEXT: vsetvli a2, zero, e32, m2, ta, ma
421+
; RV32-NEXT: vsetivli zero, 8, e32, m2, ta, ma
422422
; RV32-NEXT: vmv.v.x v12, a1
423423
; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, ma
424424
; RV32-NEXT: vand.vv v10, v10, v12

0 commit comments

Comments
 (0)