Skip to content

Commit c6abab2

Browse files
authored
[RISCV][VLOPT] Add support for vfmerge.vfm and vfmv.v.f (#146692)
I noticed these were missing when seeing some extra vl toggles with EVL tail folding. This helps remove quite a few vsetvlis in llvm-test-suite
1 parent 6ab7e52 commit c6abab2

File tree

5 files changed

+79
-70
lines changed

5 files changed

+79
-70
lines changed

llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1119,6 +1119,10 @@ static bool isSupportedInstr(const MachineInstr &MI) {
11191119
case RISCV::VMFLE_VV:
11201120
case RISCV::VMFGT_VF:
11211121
case RISCV::VMFGE_VF:
1122+
// Vector Floating-Point Merge Instruction
1123+
case RISCV::VFMERGE_VFM:
1124+
// Vector Floating-Point Move Instruction
1125+
case RISCV::VFMV_V_F:
11221126
// Single-Width Floating-Point/Integer Type-Convert Instructions
11231127
case RISCV::VFCVT_XU_F_V:
11241128
case RISCV::VFCVT_X_F_V:

llvm/test/CodeGen/RISCV/rvv/setcc-fp-vp.ll

Lines changed: 32 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -299,9 +299,8 @@ define <vscale x 1 x i1> @fcmp_ord_vf_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat
299299
; CHECK-NEXT: fcvt.s.bf16 fa5, fa0
300300
; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
301301
; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
302-
; CHECK-NEXT: vsetvli a1, zero, e32, mf2, ta, ma
302+
; CHECK-NEXT: vsetvli zero, zero, e32, mf2, ta, ma
303303
; CHECK-NEXT: vfmv.v.f v8, fa5
304-
; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
305304
; CHECK-NEXT: vmfeq.vf v8, v8, fa5, v0.t
306305
; CHECK-NEXT: vmfeq.vv v9, v9, v9, v0.t
307306
; CHECK-NEXT: vmand.mm v0, v9, v8
@@ -318,9 +317,8 @@ define <vscale x 1 x i1> @fcmp_ord_vf_swap_nxv1bf16(<vscale x 1 x bfloat> %va, b
318317
; CHECK-NEXT: fcvt.s.bf16 fa5, fa0
319318
; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
320319
; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
321-
; CHECK-NEXT: vsetvli a1, zero, e32, mf2, ta, ma
320+
; CHECK-NEXT: vsetvli zero, zero, e32, mf2, ta, ma
322321
; CHECK-NEXT: vfmv.v.f v8, fa5
323-
; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
324322
; CHECK-NEXT: vmfeq.vf v8, v8, fa5, v0.t
325323
; CHECK-NEXT: vmfeq.vv v9, v9, v9, v0.t
326324
; CHECK-NEXT: vmand.mm v0, v8, v9
@@ -628,9 +626,8 @@ define <vscale x 1 x i1> @fcmp_uno_vf_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat
628626
; CHECK-NEXT: fcvt.s.bf16 fa5, fa0
629627
; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
630628
; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
631-
; CHECK-NEXT: vsetvli a1, zero, e32, mf2, ta, ma
629+
; CHECK-NEXT: vsetvli zero, zero, e32, mf2, ta, ma
632630
; CHECK-NEXT: vfmv.v.f v8, fa5
633-
; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
634631
; CHECK-NEXT: vmfne.vf v8, v8, fa5, v0.t
635632
; CHECK-NEXT: vmfne.vv v9, v9, v9, v0.t
636633
; CHECK-NEXT: vmor.mm v0, v9, v8
@@ -647,9 +644,8 @@ define <vscale x 1 x i1> @fcmp_uno_vf_swap_nxv1bf16(<vscale x 1 x bfloat> %va, b
647644
; CHECK-NEXT: fcvt.s.bf16 fa5, fa0
648645
; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
649646
; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
650-
; CHECK-NEXT: vsetvli a1, zero, e32, mf2, ta, ma
647+
; CHECK-NEXT: vsetvli zero, zero, e32, mf2, ta, ma
651648
; CHECK-NEXT: vfmv.v.f v8, fa5
652-
; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
653649
; CHECK-NEXT: vmfne.vf v8, v8, fa5, v0.t
654650
; CHECK-NEXT: vmfne.vv v9, v9, v9, v0.t
655651
; CHECK-NEXT: vmor.mm v0, v8, v9
@@ -978,9 +974,8 @@ define <vscale x 8 x i1> @fcmp_ord_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat
978974
; CHECK-LABEL: fcmp_ord_vf_nxv8bf16:
979975
; CHECK: # %bb.0:
980976
; CHECK-NEXT: fcvt.s.bf16 fa5, fa0
981-
; CHECK-NEXT: vsetvli a1, zero, e32, m4, ta, ma
982-
; CHECK-NEXT: vfmv.v.f v12, fa5
983977
; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
978+
; CHECK-NEXT: vfmv.v.f v12, fa5
984979
; CHECK-NEXT: vmfeq.vf v10, v12, fa5, v0.t
985980
; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma
986981
; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
@@ -998,9 +993,8 @@ define <vscale x 8 x i1> @fcmp_ord_vf_swap_nxv8bf16(<vscale x 8 x bfloat> %va, b
998993
; CHECK-LABEL: fcmp_ord_vf_swap_nxv8bf16:
999994
; CHECK: # %bb.0:
1000995
; CHECK-NEXT: fcvt.s.bf16 fa5, fa0
1001-
; CHECK-NEXT: vsetvli a1, zero, e32, m4, ta, ma
1002-
; CHECK-NEXT: vfmv.v.f v12, fa5
1003996
; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
997+
; CHECK-NEXT: vfmv.v.f v12, fa5
1004998
; CHECK-NEXT: vmfeq.vf v10, v12, fa5, v0.t
1005999
; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma
10061000
; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
@@ -1314,9 +1308,8 @@ define <vscale x 8 x i1> @fcmp_uno_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat
13141308
; CHECK-LABEL: fcmp_uno_vf_nxv8bf16:
13151309
; CHECK: # %bb.0:
13161310
; CHECK-NEXT: fcvt.s.bf16 fa5, fa0
1317-
; CHECK-NEXT: vsetvli a1, zero, e32, m4, ta, ma
1318-
; CHECK-NEXT: vfmv.v.f v12, fa5
13191311
; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1312+
; CHECK-NEXT: vfmv.v.f v12, fa5
13201313
; CHECK-NEXT: vmfne.vf v10, v12, fa5, v0.t
13211314
; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma
13221315
; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
@@ -1334,9 +1327,8 @@ define <vscale x 8 x i1> @fcmp_uno_vf_swap_nxv8bf16(<vscale x 8 x bfloat> %va, b
13341327
; CHECK-LABEL: fcmp_uno_vf_swap_nxv8bf16:
13351328
; CHECK: # %bb.0:
13361329
; CHECK-NEXT: fcvt.s.bf16 fa5, fa0
1337-
; CHECK-NEXT: vsetvli a1, zero, e32, m4, ta, ma
1338-
; CHECK-NEXT: vfmv.v.f v12, fa5
13391330
; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1331+
; CHECK-NEXT: vfmv.v.f v12, fa5
13401332
; CHECK-NEXT: vmfne.vf v10, v12, fa5, v0.t
13411333
; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma
13421334
; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
@@ -1968,9 +1960,8 @@ define <vscale x 1 x i1> @fcmp_ord_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x
19681960
define <vscale x 1 x i1> @fcmp_ord_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
19691961
; ZVFH-LABEL: fcmp_ord_vf_nxv1f16:
19701962
; ZVFH: # %bb.0:
1971-
; ZVFH-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
1972-
; ZVFH-NEXT: vfmv.v.f v9, fa0
19731963
; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1964+
; ZVFH-NEXT: vfmv.v.f v9, fa0
19741965
; ZVFH-NEXT: vmfeq.vf v9, v9, fa0, v0.t
19751966
; ZVFH-NEXT: vmfeq.vv v8, v8, v8, v0.t
19761967
; ZVFH-NEXT: vmand.mm v0, v8, v9
@@ -1981,9 +1972,8 @@ define <vscale x 1 x i1> @fcmp_ord_vf_nxv1f16(<vscale x 1 x half> %va, half %b,
19811972
; ZVFHMIN-NEXT: fcvt.s.h fa5, fa0
19821973
; ZVFHMIN-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
19831974
; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
1984-
; ZVFHMIN-NEXT: vsetvli a1, zero, e32, mf2, ta, ma
1975+
; ZVFHMIN-NEXT: vsetvli zero, zero, e32, mf2, ta, ma
19851976
; ZVFHMIN-NEXT: vfmv.v.f v8, fa5
1986-
; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
19871977
; ZVFHMIN-NEXT: vmfeq.vf v8, v8, fa5, v0.t
19881978
; ZVFHMIN-NEXT: vmfeq.vv v9, v9, v9, v0.t
19891979
; ZVFHMIN-NEXT: vmand.mm v0, v9, v8
@@ -1997,9 +1987,8 @@ define <vscale x 1 x i1> @fcmp_ord_vf_nxv1f16(<vscale x 1 x half> %va, half %b,
19971987
define <vscale x 1 x i1> @fcmp_ord_vf_swap_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
19981988
; ZVFH-LABEL: fcmp_ord_vf_swap_nxv1f16:
19991989
; ZVFH: # %bb.0:
2000-
; ZVFH-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
2001-
; ZVFH-NEXT: vfmv.v.f v9, fa0
20021990
; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1991+
; ZVFH-NEXT: vfmv.v.f v9, fa0
20031992
; ZVFH-NEXT: vmfeq.vf v9, v9, fa0, v0.t
20041993
; ZVFH-NEXT: vmfeq.vv v8, v8, v8, v0.t
20051994
; ZVFH-NEXT: vmand.mm v0, v9, v8
@@ -2010,9 +1999,8 @@ define <vscale x 1 x i1> @fcmp_ord_vf_swap_nxv1f16(<vscale x 1 x half> %va, half
20101999
; ZVFHMIN-NEXT: fcvt.s.h fa5, fa0
20112000
; ZVFHMIN-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
20122001
; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
2013-
; ZVFHMIN-NEXT: vsetvli a1, zero, e32, mf2, ta, ma
2002+
; ZVFHMIN-NEXT: vsetvli zero, zero, e32, mf2, ta, ma
20142003
; ZVFHMIN-NEXT: vfmv.v.f v8, fa5
2015-
; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
20162004
; ZVFHMIN-NEXT: vmfeq.vf v8, v8, fa5, v0.t
20172005
; ZVFHMIN-NEXT: vmfeq.vv v9, v9, v9, v0.t
20182006
; ZVFHMIN-NEXT: vmand.mm v0, v8, v9
@@ -2451,9 +2439,8 @@ define <vscale x 1 x i1> @fcmp_uno_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x
24512439
define <vscale x 1 x i1> @fcmp_uno_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
24522440
; ZVFH-LABEL: fcmp_uno_vf_nxv1f16:
24532441
; ZVFH: # %bb.0:
2454-
; ZVFH-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
2455-
; ZVFH-NEXT: vfmv.v.f v9, fa0
24562442
; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2443+
; ZVFH-NEXT: vfmv.v.f v9, fa0
24572444
; ZVFH-NEXT: vmfne.vf v9, v9, fa0, v0.t
24582445
; ZVFH-NEXT: vmfne.vv v8, v8, v8, v0.t
24592446
; ZVFH-NEXT: vmor.mm v0, v8, v9
@@ -2464,9 +2451,8 @@ define <vscale x 1 x i1> @fcmp_uno_vf_nxv1f16(<vscale x 1 x half> %va, half %b,
24642451
; ZVFHMIN-NEXT: fcvt.s.h fa5, fa0
24652452
; ZVFHMIN-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
24662453
; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
2467-
; ZVFHMIN-NEXT: vsetvli a1, zero, e32, mf2, ta, ma
2454+
; ZVFHMIN-NEXT: vsetvli zero, zero, e32, mf2, ta, ma
24682455
; ZVFHMIN-NEXT: vfmv.v.f v8, fa5
2469-
; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
24702456
; ZVFHMIN-NEXT: vmfne.vf v8, v8, fa5, v0.t
24712457
; ZVFHMIN-NEXT: vmfne.vv v9, v9, v9, v0.t
24722458
; ZVFHMIN-NEXT: vmor.mm v0, v9, v8
@@ -2480,9 +2466,8 @@ define <vscale x 1 x i1> @fcmp_uno_vf_nxv1f16(<vscale x 1 x half> %va, half %b,
24802466
define <vscale x 1 x i1> @fcmp_uno_vf_swap_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
24812467
; ZVFH-LABEL: fcmp_uno_vf_swap_nxv1f16:
24822468
; ZVFH: # %bb.0:
2483-
; ZVFH-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
2484-
; ZVFH-NEXT: vfmv.v.f v9, fa0
24852469
; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2470+
; ZVFH-NEXT: vfmv.v.f v9, fa0
24862471
; ZVFH-NEXT: vmfne.vf v9, v9, fa0, v0.t
24872472
; ZVFH-NEXT: vmfne.vv v8, v8, v8, v0.t
24882473
; ZVFH-NEXT: vmor.mm v0, v9, v8
@@ -2493,9 +2478,8 @@ define <vscale x 1 x i1> @fcmp_uno_vf_swap_nxv1f16(<vscale x 1 x half> %va, half
24932478
; ZVFHMIN-NEXT: fcvt.s.h fa5, fa0
24942479
; ZVFHMIN-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
24952480
; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
2496-
; ZVFHMIN-NEXT: vsetvli a1, zero, e32, mf2, ta, ma
2481+
; ZVFHMIN-NEXT: vsetvli zero, zero, e32, mf2, ta, ma
24972482
; ZVFHMIN-NEXT: vfmv.v.f v8, fa5
2498-
; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
24992483
; ZVFHMIN-NEXT: vmfne.vf v8, v8, fa5, v0.t
25002484
; ZVFHMIN-NEXT: vmfne.vv v9, v9, v9, v0.t
25012485
; ZVFHMIN-NEXT: vmor.mm v0, v8, v9
@@ -2966,9 +2950,8 @@ define <vscale x 8 x i1> @fcmp_ord_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x
29662950
define <vscale x 8 x i1> @fcmp_ord_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
29672951
; ZVFH-LABEL: fcmp_ord_vf_nxv8f16:
29682952
; ZVFH: # %bb.0:
2969-
; ZVFH-NEXT: vsetvli a1, zero, e16, m2, ta, ma
2970-
; ZVFH-NEXT: vfmv.v.f v10, fa0
29712953
; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2954+
; ZVFH-NEXT: vfmv.v.f v10, fa0
29722955
; ZVFH-NEXT: vmfeq.vf v12, v10, fa0, v0.t
29732956
; ZVFH-NEXT: vmfeq.vv v10, v8, v8, v0.t
29742957
; ZVFH-NEXT: vmand.mm v0, v10, v12
@@ -2977,9 +2960,8 @@ define <vscale x 8 x i1> @fcmp_ord_vf_nxv8f16(<vscale x 8 x half> %va, half %b,
29772960
; ZVFHMIN-LABEL: fcmp_ord_vf_nxv8f16:
29782961
; ZVFHMIN: # %bb.0:
29792962
; ZVFHMIN-NEXT: fcvt.s.h fa5, fa0
2980-
; ZVFHMIN-NEXT: vsetvli a1, zero, e32, m4, ta, ma
2981-
; ZVFHMIN-NEXT: vfmv.v.f v12, fa5
29822963
; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
2964+
; ZVFHMIN-NEXT: vfmv.v.f v12, fa5
29832965
; ZVFHMIN-NEXT: vmfeq.vf v10, v12, fa5, v0.t
29842966
; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m2, ta, ma
29852967
; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
@@ -2996,9 +2978,8 @@ define <vscale x 8 x i1> @fcmp_ord_vf_nxv8f16(<vscale x 8 x half> %va, half %b,
29962978
define <vscale x 8 x i1> @fcmp_ord_vf_swap_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
29972979
; ZVFH-LABEL: fcmp_ord_vf_swap_nxv8f16:
29982980
; ZVFH: # %bb.0:
2999-
; ZVFH-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3000-
; ZVFH-NEXT: vfmv.v.f v10, fa0
30012981
; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2982+
; ZVFH-NEXT: vfmv.v.f v10, fa0
30022983
; ZVFH-NEXT: vmfeq.vf v12, v10, fa0, v0.t
30032984
; ZVFH-NEXT: vmfeq.vv v10, v8, v8, v0.t
30042985
; ZVFH-NEXT: vmand.mm v0, v12, v10
@@ -3007,9 +2988,8 @@ define <vscale x 8 x i1> @fcmp_ord_vf_swap_nxv8f16(<vscale x 8 x half> %va, half
30072988
; ZVFHMIN-LABEL: fcmp_ord_vf_swap_nxv8f16:
30082989
; ZVFHMIN: # %bb.0:
30092990
; ZVFHMIN-NEXT: fcvt.s.h fa5, fa0
3010-
; ZVFHMIN-NEXT: vsetvli a1, zero, e32, m4, ta, ma
3011-
; ZVFHMIN-NEXT: vfmv.v.f v12, fa5
30122991
; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
2992+
; ZVFHMIN-NEXT: vfmv.v.f v12, fa5
30132993
; ZVFHMIN-NEXT: vmfeq.vf v10, v12, fa5, v0.t
30142994
; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m2, ta, ma
30152995
; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
@@ -3459,9 +3439,8 @@ define <vscale x 8 x i1> @fcmp_uno_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x
34593439
define <vscale x 8 x i1> @fcmp_uno_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
34603440
; ZVFH-LABEL: fcmp_uno_vf_nxv8f16:
34613441
; ZVFH: # %bb.0:
3462-
; ZVFH-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3463-
; ZVFH-NEXT: vfmv.v.f v10, fa0
34643442
; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3443+
; ZVFH-NEXT: vfmv.v.f v10, fa0
34653444
; ZVFH-NEXT: vmfne.vf v12, v10, fa0, v0.t
34663445
; ZVFH-NEXT: vmfne.vv v10, v8, v8, v0.t
34673446
; ZVFH-NEXT: vmor.mm v0, v10, v12
@@ -3470,9 +3449,8 @@ define <vscale x 8 x i1> @fcmp_uno_vf_nxv8f16(<vscale x 8 x half> %va, half %b,
34703449
; ZVFHMIN-LABEL: fcmp_uno_vf_nxv8f16:
34713450
; ZVFHMIN: # %bb.0:
34723451
; ZVFHMIN-NEXT: fcvt.s.h fa5, fa0
3473-
; ZVFHMIN-NEXT: vsetvli a1, zero, e32, m4, ta, ma
3474-
; ZVFHMIN-NEXT: vfmv.v.f v12, fa5
34753452
; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3453+
; ZVFHMIN-NEXT: vfmv.v.f v12, fa5
34763454
; ZVFHMIN-NEXT: vmfne.vf v10, v12, fa5, v0.t
34773455
; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m2, ta, ma
34783456
; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
@@ -3489,9 +3467,8 @@ define <vscale x 8 x i1> @fcmp_uno_vf_nxv8f16(<vscale x 8 x half> %va, half %b,
34893467
define <vscale x 8 x i1> @fcmp_uno_vf_swap_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
34903468
; ZVFH-LABEL: fcmp_uno_vf_swap_nxv8f16:
34913469
; ZVFH: # %bb.0:
3492-
; ZVFH-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3493-
; ZVFH-NEXT: vfmv.v.f v10, fa0
34943470
; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3471+
; ZVFH-NEXT: vfmv.v.f v10, fa0
34953472
; ZVFH-NEXT: vmfne.vf v12, v10, fa0, v0.t
34963473
; ZVFH-NEXT: vmfne.vv v10, v8, v8, v0.t
34973474
; ZVFH-NEXT: vmor.mm v0, v12, v10
@@ -3500,9 +3477,8 @@ define <vscale x 8 x i1> @fcmp_uno_vf_swap_nxv8f16(<vscale x 8 x half> %va, half
35003477
; ZVFHMIN-LABEL: fcmp_uno_vf_swap_nxv8f16:
35013478
; ZVFHMIN: # %bb.0:
35023479
; ZVFHMIN-NEXT: fcvt.s.h fa5, fa0
3503-
; ZVFHMIN-NEXT: vsetvli a1, zero, e32, m4, ta, ma
3504-
; ZVFHMIN-NEXT: vfmv.v.f v12, fa5
35053480
; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3481+
; ZVFHMIN-NEXT: vfmv.v.f v12, fa5
35063482
; ZVFHMIN-NEXT: vmfne.vf v10, v12, fa5, v0.t
35073483
; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m2, ta, ma
35083484
; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
@@ -4001,9 +3977,8 @@ define <vscale x 1 x i1> @fcmp_ord_vv_nxv1f64(<vscale x 1 x double> %va, <vscale
40013977
define <vscale x 1 x i1> @fcmp_ord_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
40023978
; CHECK-LABEL: fcmp_ord_vf_nxv1f64:
40033979
; CHECK: # %bb.0:
4004-
; CHECK-NEXT: vsetvli a1, zero, e64, m1, ta, ma
4005-
; CHECK-NEXT: vfmv.v.f v9, fa0
40063980
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
3981+
; CHECK-NEXT: vfmv.v.f v9, fa0
40073982
; CHECK-NEXT: vmfeq.vf v9, v9, fa0, v0.t
40083983
; CHECK-NEXT: vmfeq.vv v8, v8, v8, v0.t
40093984
; CHECK-NEXT: vmand.mm v0, v8, v9
@@ -4017,9 +3992,8 @@ define <vscale x 1 x i1> @fcmp_ord_vf_nxv1f64(<vscale x 1 x double> %va, double
40173992
define <vscale x 1 x i1> @fcmp_ord_vf_swap_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
40183993
; CHECK-LABEL: fcmp_ord_vf_swap_nxv1f64:
40193994
; CHECK: # %bb.0:
4020-
; CHECK-NEXT: vsetvli a1, zero, e64, m1, ta, ma
4021-
; CHECK-NEXT: vfmv.v.f v9, fa0
40223995
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
3996+
; CHECK-NEXT: vfmv.v.f v9, fa0
40233997
; CHECK-NEXT: vmfeq.vf v9, v9, fa0, v0.t
40243998
; CHECK-NEXT: vmfeq.vv v8, v8, v8, v0.t
40253999
; CHECK-NEXT: vmand.mm v0, v9, v8
@@ -4267,9 +4241,8 @@ define <vscale x 1 x i1> @fcmp_uno_vv_nxv1f64(<vscale x 1 x double> %va, <vscale
42674241
define <vscale x 1 x i1> @fcmp_uno_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
42684242
; CHECK-LABEL: fcmp_uno_vf_nxv1f64:
42694243
; CHECK: # %bb.0:
4270-
; CHECK-NEXT: vsetvli a1, zero, e64, m1, ta, ma
4271-
; CHECK-NEXT: vfmv.v.f v9, fa0
42724244
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4245+
; CHECK-NEXT: vfmv.v.f v9, fa0
42734246
; CHECK-NEXT: vmfne.vf v9, v9, fa0, v0.t
42744247
; CHECK-NEXT: vmfne.vv v8, v8, v8, v0.t
42754248
; CHECK-NEXT: vmor.mm v0, v8, v9
@@ -4283,9 +4256,8 @@ define <vscale x 1 x i1> @fcmp_uno_vf_nxv1f64(<vscale x 1 x double> %va, double
42834256
define <vscale x 1 x i1> @fcmp_uno_vf_swap_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
42844257
; CHECK-LABEL: fcmp_uno_vf_swap_nxv1f64:
42854258
; CHECK: # %bb.0:
4286-
; CHECK-NEXT: vsetvli a1, zero, e64, m1, ta, ma
4287-
; CHECK-NEXT: vfmv.v.f v9, fa0
42884259
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4260+
; CHECK-NEXT: vfmv.v.f v9, fa0
42894261
; CHECK-NEXT: vmfne.vf v9, v9, fa0, v0.t
42904262
; CHECK-NEXT: vmfne.vv v8, v8, v8, v0.t
42914263
; CHECK-NEXT: vmor.mm v0, v9, v8
@@ -4551,9 +4523,8 @@ define <vscale x 8 x i1> @fcmp_ord_vv_nxv8f64(<vscale x 8 x double> %va, <vscale
45514523
define <vscale x 8 x i1> @fcmp_ord_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
45524524
; CHECK-LABEL: fcmp_ord_vf_nxv8f64:
45534525
; CHECK: # %bb.0:
4554-
; CHECK-NEXT: vsetvli a1, zero, e64, m8, ta, ma
4555-
; CHECK-NEXT: vfmv.v.f v16, fa0
45564526
; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4527+
; CHECK-NEXT: vfmv.v.f v16, fa0
45574528
; CHECK-NEXT: vmfeq.vf v24, v16, fa0, v0.t
45584529
; CHECK-NEXT: vmfeq.vv v16, v8, v8, v0.t
45594530
; CHECK-NEXT: vmand.mm v0, v16, v24
@@ -4567,9 +4538,8 @@ define <vscale x 8 x i1> @fcmp_ord_vf_nxv8f64(<vscale x 8 x double> %va, double
45674538
define <vscale x 8 x i1> @fcmp_ord_vf_swap_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
45684539
; CHECK-LABEL: fcmp_ord_vf_swap_nxv8f64:
45694540
; CHECK: # %bb.0:
4570-
; CHECK-NEXT: vsetvli a1, zero, e64, m8, ta, ma
4571-
; CHECK-NEXT: vfmv.v.f v16, fa0
45724541
; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4542+
; CHECK-NEXT: vfmv.v.f v16, fa0
45734543
; CHECK-NEXT: vmfeq.vf v24, v16, fa0, v0.t
45744544
; CHECK-NEXT: vmfeq.vv v16, v8, v8, v0.t
45754545
; CHECK-NEXT: vmand.mm v0, v24, v16
@@ -4820,9 +4790,8 @@ define <vscale x 8 x i1> @fcmp_uno_vv_nxv8f64(<vscale x 8 x double> %va, <vscale
48204790
define <vscale x 8 x i1> @fcmp_uno_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
48214791
; CHECK-LABEL: fcmp_uno_vf_nxv8f64:
48224792
; CHECK: # %bb.0:
4823-
; CHECK-NEXT: vsetvli a1, zero, e64, m8, ta, ma
4824-
; CHECK-NEXT: vfmv.v.f v16, fa0
48254793
; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4794+
; CHECK-NEXT: vfmv.v.f v16, fa0
48264795
; CHECK-NEXT: vmfne.vf v24, v16, fa0, v0.t
48274796
; CHECK-NEXT: vmfne.vv v16, v8, v8, v0.t
48284797
; CHECK-NEXT: vmor.mm v0, v16, v24
@@ -4836,9 +4805,8 @@ define <vscale x 8 x i1> @fcmp_uno_vf_nxv8f64(<vscale x 8 x double> %va, double
48364805
define <vscale x 8 x i1> @fcmp_uno_vf_swap_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
48374806
; CHECK-LABEL: fcmp_uno_vf_swap_nxv8f64:
48384807
; CHECK: # %bb.0:
4839-
; CHECK-NEXT: vsetvli a1, zero, e64, m8, ta, ma
4840-
; CHECK-NEXT: vfmv.v.f v16, fa0
48414808
; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4809+
; CHECK-NEXT: vfmv.v.f v16, fa0
48424810
; CHECK-NEXT: vmfne.vf v24, v16, fa0, v0.t
48434811
; CHECK-NEXT: vmfne.vv v16, v8, v8, v0.t
48444812
; CHECK-NEXT: vmor.mm v0, v24, v16

llvm/test/CodeGen/RISCV/rvv/vfma-vp-combine.ll

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,8 @@ define <vscale x 1 x double> @test2(<vscale x 1 x double> %a, <vscale x 1 x i1>
3030
; CHECK-NEXT: fld fa5, %lo(.LCPI1_0)(a1)
3131
; CHECK-NEXT: lui a1, %hi(.LCPI1_1)
3232
; CHECK-NEXT: fld fa4, %lo(.LCPI1_1)(a1)
33-
; CHECK-NEXT: vsetvli a1, zero, e64, m1, ta, ma
34-
; CHECK-NEXT: vfmv.v.f v9, fa5
3533
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
34+
; CHECK-NEXT: vfmv.v.f v9, fa5
3635
; CHECK-NEXT: vfadd.vf v9, v9, fa4, v0.t
3736
; CHECK-NEXT: vfmul.vv v8, v8, v9, v0.t
3837
; CHECK-NEXT: ret
@@ -49,9 +48,8 @@ define <vscale x 1 x double> @test3(<vscale x 1 x double> %a, <vscale x 1 x doub
4948
; CHECK-NEXT: fld fa5, %lo(.LCPI2_0)(a1)
5049
; CHECK-NEXT: lui a1, %hi(.LCPI2_1)
5150
; CHECK-NEXT: fld fa4, %lo(.LCPI2_1)(a1)
52-
; CHECK-NEXT: vsetvli a1, zero, e64, m1, ta, ma
53-
; CHECK-NEXT: vfmv.v.f v10, fa5
5451
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
52+
; CHECK-NEXT: vfmv.v.f v10, fa5
5553
; CHECK-NEXT: vfmul.vf v10, v10, fa4, v0.t
5654
; CHECK-NEXT: vfmadd.vv v10, v8, v9, v0.t
5755
; CHECK-NEXT: vmv.v.v v8, v10

0 commit comments

Comments
 (0)