Skip to content

Commit 03c8fbf

Browse files
authored
[RISCV] Add _RM pseudos to pseudos table (#70693)
1 parent 6086c27 commit 03c8fbf

File tree

2 files changed

+46
-47
lines changed

2 files changed

+46
-47
lines changed

Diff for: llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td

+6-3
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,8 @@ class PseudoToVInst<string PseudoInst> {
134134
["_M2", ""],
135135
["_M4", ""],
136136
["_M8", ""],
137-
["_SE", ""]
137+
["_SE", ""],
138+
["_RM", ""]
138139
];
139140
string VInst = !foldl(PseudoInst, AffixSubsts, Acc, AffixSubst,
140141
!subst(AffixSubst[0], AffixSubst[1], Acc));
@@ -1113,7 +1114,8 @@ class VPseudoUnaryNoMask_FRM<VReg RetClass,
11131114
string Constraint = ""> :
11141115
Pseudo<(outs RetClass:$rd),
11151116
(ins RetClass:$merge, OpClass:$rs2, ixlenimm:$frm,
1116-
AVL:$vl, ixlenimm:$sew, ixlenimm:$policy), []> {
1117+
AVL:$vl, ixlenimm:$sew, ixlenimm:$policy), []>,
1118+
RISCVVPseudo {
11171119
let mayLoad = 0;
11181120
let mayStore = 0;
11191121
let hasSideEffects = 0;
@@ -1131,7 +1133,8 @@ class VPseudoUnaryMask_FRM<VReg RetClass,
11311133
Pseudo<(outs GetVRegNoV0<RetClass>.R:$rd),
11321134
(ins GetVRegNoV0<RetClass>.R:$merge, OpClass:$rs2,
11331135
VMaskOp:$vm, ixlenimm:$frm,
1134-
AVL:$vl, ixlenimm:$sew, ixlenimm:$policy), []> {
1136+
AVL:$vl, ixlenimm:$sew, ixlenimm:$policy), []>,
1137+
RISCVVPseudo {
11351138
let mayLoad = 0;
11361139
let mayStore = 0;
11371140
let hasSideEffects = 0;

Diff for: llvm/test/CodeGen/RISCV/rvv/fixed-vectors-ctlz.ll

+40-44
Original file line numberDiff line numberDiff line change
@@ -529,16 +529,15 @@ define void @ctlz_v2i64(ptr %x, ptr %y) nounwind {
529529
;
530530
; LMULMAX2-RV32F-LABEL: ctlz_v2i64:
531531
; LMULMAX2-RV32F: # %bb.0:
532-
; LMULMAX2-RV32F-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
532+
; LMULMAX2-RV32F-NEXT: vsetivli zero, 2, e64, m1, ta, ma
533533
; LMULMAX2-RV32F-NEXT: vle64.v v8, (a0)
534-
; LMULMAX2-RV32F-NEXT: fsrmi a1, 1
535-
; LMULMAX2-RV32F-NEXT: vfncvt.f.xu.w v9, v8
536-
; LMULMAX2-RV32F-NEXT: fsrm a1
537-
; LMULMAX2-RV32F-NEXT: vsrl.vi v8, v9, 23
538534
; LMULMAX2-RV32F-NEXT: li a1, 190
539-
; LMULMAX2-RV32F-NEXT: vsetvli zero, zero, e64, m1, ta, ma
540535
; LMULMAX2-RV32F-NEXT: vmv.v.x v9, a1
536+
; LMULMAX2-RV32F-NEXT: fsrmi a1, 1
541537
; LMULMAX2-RV32F-NEXT: vsetvli zero, zero, e32, mf2, ta, ma
538+
; LMULMAX2-RV32F-NEXT: vfncvt.f.xu.w v10, v8
539+
; LMULMAX2-RV32F-NEXT: fsrm a1
540+
; LMULMAX2-RV32F-NEXT: vsrl.vi v8, v10, 23
542541
; LMULMAX2-RV32F-NEXT: vwsubu.wv v9, v9, v8
543542
; LMULMAX2-RV32F-NEXT: li a1, 64
544543
; LMULMAX2-RV32F-NEXT: vsetvli zero, zero, e64, m1, ta, ma
@@ -550,12 +549,12 @@ define void @ctlz_v2i64(ptr %x, ptr %y) nounwind {
550549
; LMULMAX2-RV64F: # %bb.0:
551550
; LMULMAX2-RV64F-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
552551
; LMULMAX2-RV64F-NEXT: vle64.v v8, (a0)
553-
; LMULMAX2-RV64F-NEXT: fsrmi a1, 1
554-
; LMULMAX2-RV64F-NEXT: vfncvt.f.xu.w v9, v8
555-
; LMULMAX2-RV64F-NEXT: fsrm a1
556-
; LMULMAX2-RV64F-NEXT: vsrl.vi v8, v9, 23
557552
; LMULMAX2-RV64F-NEXT: li a1, 190
558553
; LMULMAX2-RV64F-NEXT: vmv.v.x v9, a1
554+
; LMULMAX2-RV64F-NEXT: fsrmi a1, 1
555+
; LMULMAX2-RV64F-NEXT: vfncvt.f.xu.w v10, v8
556+
; LMULMAX2-RV64F-NEXT: fsrm a1
557+
; LMULMAX2-RV64F-NEXT: vsrl.vi v8, v10, 23
559558
; LMULMAX2-RV64F-NEXT: vwsubu.vv v10, v9, v8
560559
; LMULMAX2-RV64F-NEXT: li a1, 64
561560
; LMULMAX2-RV64F-NEXT: vsetvli zero, zero, e64, m1, ta, ma
@@ -1129,16 +1128,15 @@ define void @ctlz_v4i64(ptr %x, ptr %y) nounwind {
11291128
;
11301129
; LMULMAX2-RV32F-LABEL: ctlz_v4i64:
11311130
; LMULMAX2-RV32F: # %bb.0:
1132-
; LMULMAX2-RV32F-NEXT: vsetivli zero, 4, e32, m1, ta, ma
1131+
; LMULMAX2-RV32F-NEXT: vsetivli zero, 4, e64, m2, ta, ma
11331132
; LMULMAX2-RV32F-NEXT: vle64.v v8, (a0)
1134-
; LMULMAX2-RV32F-NEXT: fsrmi a1, 1
1135-
; LMULMAX2-RV32F-NEXT: vfncvt.f.xu.w v10, v8
1136-
; LMULMAX2-RV32F-NEXT: fsrm a1
1137-
; LMULMAX2-RV32F-NEXT: vsrl.vi v8, v10, 23
11381133
; LMULMAX2-RV32F-NEXT: li a1, 190
1139-
; LMULMAX2-RV32F-NEXT: vsetvli zero, zero, e64, m2, ta, ma
11401134
; LMULMAX2-RV32F-NEXT: vmv.v.x v10, a1
1135+
; LMULMAX2-RV32F-NEXT: fsrmi a1, 1
11411136
; LMULMAX2-RV32F-NEXT: vsetvli zero, zero, e32, m1, ta, ma
1137+
; LMULMAX2-RV32F-NEXT: vfncvt.f.xu.w v12, v8
1138+
; LMULMAX2-RV32F-NEXT: fsrm a1
1139+
; LMULMAX2-RV32F-NEXT: vsrl.vi v8, v12, 23
11421140
; LMULMAX2-RV32F-NEXT: vwsubu.wv v10, v10, v8
11431141
; LMULMAX2-RV32F-NEXT: li a1, 64
11441142
; LMULMAX2-RV32F-NEXT: vsetvli zero, zero, e64, m2, ta, ma
@@ -1150,16 +1148,16 @@ define void @ctlz_v4i64(ptr %x, ptr %y) nounwind {
11501148
; LMULMAX2-RV64F: # %bb.0:
11511149
; LMULMAX2-RV64F-NEXT: vsetivli zero, 4, e32, m1, ta, ma
11521150
; LMULMAX2-RV64F-NEXT: vle64.v v8, (a0)
1151+
; LMULMAX2-RV64F-NEXT: li a1, 190
1152+
; LMULMAX2-RV64F-NEXT: vmv.v.x v10, a1
11531153
; LMULMAX2-RV64F-NEXT: fsrmi a1, 1
1154-
; LMULMAX2-RV64F-NEXT: vfncvt.f.xu.w v10, v8
1154+
; LMULMAX2-RV64F-NEXT: vfncvt.f.xu.w v11, v8
11551155
; LMULMAX2-RV64F-NEXT: fsrm a1
1156-
; LMULMAX2-RV64F-NEXT: vsrl.vi v8, v10, 23
1157-
; LMULMAX2-RV64F-NEXT: li a1, 190
1158-
; LMULMAX2-RV64F-NEXT: vmv.v.x v9, a1
1159-
; LMULMAX2-RV64F-NEXT: vwsubu.vv v10, v9, v8
1156+
; LMULMAX2-RV64F-NEXT: vsrl.vi v8, v11, 23
1157+
; LMULMAX2-RV64F-NEXT: vwsubu.vv v12, v10, v8
11601158
; LMULMAX2-RV64F-NEXT: li a1, 64
11611159
; LMULMAX2-RV64F-NEXT: vsetvli zero, zero, e64, m2, ta, ma
1162-
; LMULMAX2-RV64F-NEXT: vminu.vx v8, v10, a1
1160+
; LMULMAX2-RV64F-NEXT: vminu.vx v8, v12, a1
11631161
; LMULMAX2-RV64F-NEXT: vse64.v v8, (a0)
11641162
; LMULMAX2-RV64F-NEXT: ret
11651163
;
@@ -1716,16 +1714,15 @@ define void @ctlz_zero_undef_v2i64(ptr %x, ptr %y) nounwind {
17161714
;
17171715
; LMULMAX2-RV32F-LABEL: ctlz_zero_undef_v2i64:
17181716
; LMULMAX2-RV32F: # %bb.0:
1719-
; LMULMAX2-RV32F-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
1717+
; LMULMAX2-RV32F-NEXT: vsetivli zero, 2, e64, m1, ta, ma
17201718
; LMULMAX2-RV32F-NEXT: vle64.v v8, (a0)
1721-
; LMULMAX2-RV32F-NEXT: fsrmi a1, 1
1722-
; LMULMAX2-RV32F-NEXT: vfncvt.f.xu.w v9, v8
1723-
; LMULMAX2-RV32F-NEXT: fsrm a1
1724-
; LMULMAX2-RV32F-NEXT: vsrl.vi v8, v9, 23
17251719
; LMULMAX2-RV32F-NEXT: li a1, 190
1726-
; LMULMAX2-RV32F-NEXT: vsetvli zero, zero, e64, m1, ta, ma
17271720
; LMULMAX2-RV32F-NEXT: vmv.v.x v9, a1
1721+
; LMULMAX2-RV32F-NEXT: fsrmi a1, 1
17281722
; LMULMAX2-RV32F-NEXT: vsetvli zero, zero, e32, mf2, ta, ma
1723+
; LMULMAX2-RV32F-NEXT: vfncvt.f.xu.w v10, v8
1724+
; LMULMAX2-RV32F-NEXT: fsrm a1
1725+
; LMULMAX2-RV32F-NEXT: vsrl.vi v8, v10, 23
17291726
; LMULMAX2-RV32F-NEXT: vwsubu.wv v9, v9, v8
17301727
; LMULMAX2-RV32F-NEXT: vse64.v v9, (a0)
17311728
; LMULMAX2-RV32F-NEXT: ret
@@ -1734,12 +1731,12 @@ define void @ctlz_zero_undef_v2i64(ptr %x, ptr %y) nounwind {
17341731
; LMULMAX2-RV64F: # %bb.0:
17351732
; LMULMAX2-RV64F-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
17361733
; LMULMAX2-RV64F-NEXT: vle64.v v8, (a0)
1737-
; LMULMAX2-RV64F-NEXT: fsrmi a1, 1
1738-
; LMULMAX2-RV64F-NEXT: vfncvt.f.xu.w v9, v8
1739-
; LMULMAX2-RV64F-NEXT: fsrm a1
1740-
; LMULMAX2-RV64F-NEXT: vsrl.vi v8, v9, 23
17411734
; LMULMAX2-RV64F-NEXT: li a1, 190
17421735
; LMULMAX2-RV64F-NEXT: vmv.v.x v9, a1
1736+
; LMULMAX2-RV64F-NEXT: fsrmi a1, 1
1737+
; LMULMAX2-RV64F-NEXT: vfncvt.f.xu.w v10, v8
1738+
; LMULMAX2-RV64F-NEXT: fsrm a1
1739+
; LMULMAX2-RV64F-NEXT: vsrl.vi v8, v10, 23
17431740
; LMULMAX2-RV64F-NEXT: vwsubu.vv v10, v9, v8
17441741
; LMULMAX2-RV64F-NEXT: vse64.v v10, (a0)
17451742
; LMULMAX2-RV64F-NEXT: ret
@@ -2286,16 +2283,15 @@ define void @ctlz_zero_undef_v4i64(ptr %x, ptr %y) nounwind {
22862283
;
22872284
; LMULMAX2-RV32F-LABEL: ctlz_zero_undef_v4i64:
22882285
; LMULMAX2-RV32F: # %bb.0:
2289-
; LMULMAX2-RV32F-NEXT: vsetivli zero, 4, e32, m1, ta, ma
2286+
; LMULMAX2-RV32F-NEXT: vsetivli zero, 4, e64, m2, ta, ma
22902287
; LMULMAX2-RV32F-NEXT: vle64.v v8, (a0)
2291-
; LMULMAX2-RV32F-NEXT: fsrmi a1, 1
2292-
; LMULMAX2-RV32F-NEXT: vfncvt.f.xu.w v10, v8
2293-
; LMULMAX2-RV32F-NEXT: fsrm a1
2294-
; LMULMAX2-RV32F-NEXT: vsrl.vi v8, v10, 23
22952288
; LMULMAX2-RV32F-NEXT: li a1, 190
2296-
; LMULMAX2-RV32F-NEXT: vsetvli zero, zero, e64, m2, ta, ma
22972289
; LMULMAX2-RV32F-NEXT: vmv.v.x v10, a1
2290+
; LMULMAX2-RV32F-NEXT: fsrmi a1, 1
22982291
; LMULMAX2-RV32F-NEXT: vsetvli zero, zero, e32, m1, ta, ma
2292+
; LMULMAX2-RV32F-NEXT: vfncvt.f.xu.w v12, v8
2293+
; LMULMAX2-RV32F-NEXT: fsrm a1
2294+
; LMULMAX2-RV32F-NEXT: vsrl.vi v8, v12, 23
22992295
; LMULMAX2-RV32F-NEXT: vwsubu.wv v10, v10, v8
23002296
; LMULMAX2-RV32F-NEXT: vse64.v v10, (a0)
23012297
; LMULMAX2-RV32F-NEXT: ret
@@ -2304,14 +2300,14 @@ define void @ctlz_zero_undef_v4i64(ptr %x, ptr %y) nounwind {
23042300
; LMULMAX2-RV64F: # %bb.0:
23052301
; LMULMAX2-RV64F-NEXT: vsetivli zero, 4, e32, m1, ta, ma
23062302
; LMULMAX2-RV64F-NEXT: vle64.v v8, (a0)
2303+
; LMULMAX2-RV64F-NEXT: li a1, 190
2304+
; LMULMAX2-RV64F-NEXT: vmv.v.x v10, a1
23072305
; LMULMAX2-RV64F-NEXT: fsrmi a1, 1
2308-
; LMULMAX2-RV64F-NEXT: vfncvt.f.xu.w v10, v8
2306+
; LMULMAX2-RV64F-NEXT: vfncvt.f.xu.w v11, v8
23092307
; LMULMAX2-RV64F-NEXT: fsrm a1
2310-
; LMULMAX2-RV64F-NEXT: vsrl.vi v8, v10, 23
2311-
; LMULMAX2-RV64F-NEXT: li a1, 190
2312-
; LMULMAX2-RV64F-NEXT: vmv.v.x v9, a1
2313-
; LMULMAX2-RV64F-NEXT: vwsubu.vv v10, v9, v8
2314-
; LMULMAX2-RV64F-NEXT: vse64.v v10, (a0)
2308+
; LMULMAX2-RV64F-NEXT: vsrl.vi v8, v11, 23
2309+
; LMULMAX2-RV64F-NEXT: vwsubu.vv v12, v10, v8
2310+
; LMULMAX2-RV64F-NEXT: vse64.v v12, (a0)
23152311
; LMULMAX2-RV64F-NEXT: ret
23162312
;
23172313
; LMULMAX2-RV32D-LABEL: ctlz_zero_undef_v4i64:

0 commit comments

Comments
 (0)