Skip to content

Commit 6b877f6

Browse files
committed
[RISCV] Add Option for Printing Architectural Register Names
Summary: This is an option primarily to use during testing. Instead of always printing registers using their ABI names, this allows a user to request they are printed with their architectural name. This is then used in the register constraint tests to ensure the mapping between architectural and abi names is correct. Reviewers: asb, luismarques Reviewed By: asb Subscribers: pzheng, hiraditya, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, kito-cheng, shiva0217, jrtc27, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, Jim, s.egerton, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D65950 llvm-svn: 371531
1 parent f987f56 commit 6b877f6

File tree

5 files changed

+510
-2
lines changed

5 files changed

+510
-2
lines changed

llvm/lib/Target/RISCV/MCTargetDesc/RISCVInstPrinter.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ static cl::opt<bool>
3939
cl::desc("Disable the emission of assembler pseudo instructions"),
4040
cl::init(false), cl::Hidden);
4141

42+
static cl::opt<bool>
43+
ArchRegNames("riscv-arch-reg-names",
44+
cl::desc("Print architectural register names rather than the "
45+
"ABI names (such as x2 instead of sp)"),
46+
cl::init(false), cl::Hidden);
47+
4248
void RISCVInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
4349
StringRef Annot, const MCSubtargetInfo &STI) {
4450
bool Res = false;
@@ -124,3 +130,8 @@ void RISCVInstPrinter::printAtomicMemOp(const MCInst *MI, unsigned OpNo,
124130
O << ")";
125131
return;
126132
}
133+
134+
const char *RISCVInstPrinter::getRegisterName(unsigned RegNo) {
135+
return getRegisterName(RegNo, ArchRegNames ? RISCV::NoRegAltName
136+
: RISCV::ABIRegAltName);
137+
}

llvm/lib/Target/RISCV/MCTargetDesc/RISCVInstPrinter.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ class RISCVInstPrinter : public MCInstPrinter {
4848
void printCustomAliasOperand(const MCInst *MI, unsigned OpIdx,
4949
unsigned PrintMethodIdx,
5050
const MCSubtargetInfo &STI, raw_ostream &O);
51-
static const char *getRegisterName(unsigned RegNo,
52-
unsigned AltIdx = RISCV::ABIRegAltName);
51+
static const char *getRegisterName(unsigned RegNo);
52+
static const char *getRegisterName(unsigned RegNo, unsigned AltIdx);
5353
};
5454
} // namespace llvm
5555

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
# RUN: llvm-mc -triple riscv32 -mattr=+f,+d < %s -riscv-arch-reg-names \
2+
# RUN: | FileCheck -check-prefix=CHECK-NUMERIC %s
3+
# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+f,+d < %s \
4+
# RUN: | llvm-objdump -mattr=+f,+d -d -riscv-arch-reg-names - \
5+
# RUN: | FileCheck -check-prefix=CHECK-NUMERIC %s
6+
7+
# CHECK-NUMERIC: fsqrt.d f10, f0
8+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f0
9+
fsqrt.d fa0, f0
10+
fsqrt.d fa0, ft0
11+
12+
# CHECK-NUMERIC: fsqrt.d f10, f1
13+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f1
14+
fsqrt.d fa0, f1
15+
fsqrt.d fa0, ft1
16+
17+
# CHECK-NUMERIC: fsqrt.d f10, f2
18+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f2
19+
fsqrt.d fa0, f2
20+
fsqrt.d fa0, ft2
21+
22+
# CHECK-NUMERIC: fsqrt.d f10, f3
23+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f3
24+
fsqrt.d fa0, f3
25+
fsqrt.d fa0, ft3
26+
27+
# CHECK-NUMERIC: fsqrt.d f10, f4
28+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f4
29+
fsqrt.d fa0, f4
30+
fsqrt.d fa0, ft4
31+
32+
# CHECK-NUMERIC: fsqrt.d f10, f5
33+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f5
34+
fsqrt.d fa0, f5
35+
fsqrt.d fa0, ft5
36+
37+
# CHECK-NUMERIC: fsqrt.d f10, f6
38+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f6
39+
fsqrt.d fa0, f6
40+
fsqrt.d fa0, ft6
41+
42+
# CHECK-NUMERIC: fsqrt.d f10, f7
43+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f7
44+
fsqrt.d fa0, f7
45+
fsqrt.d fa0, ft7
46+
47+
# CHECK-NUMERIC: fsqrt.d f10, f8
48+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f8
49+
fsqrt.d fa0, f8
50+
fsqrt.d fa0, fs0
51+
52+
# CHECK-NUMERIC: fsqrt.d f10, f9
53+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f9
54+
fsqrt.d fa0, f9
55+
fsqrt.d fa0, fs1
56+
57+
# CHECK-NUMERIC: fsqrt.d f10, f10
58+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f10
59+
fsqrt.d fa0, f10
60+
fsqrt.d fa0, fa0
61+
62+
# CHECK-NUMERIC: fsqrt.d f10, f11
63+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f11
64+
fsqrt.d fa0, f11
65+
fsqrt.d fa0, fa1
66+
67+
# CHECK-NUMERIC: fsqrt.d f10, f12
68+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f12
69+
fsqrt.d fa0, f12
70+
fsqrt.d fa0, fa2
71+
72+
# CHECK-NUMERIC: fsqrt.d f10, f13
73+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f13
74+
fsqrt.d fa0, f13
75+
fsqrt.d fa0, fa3
76+
77+
# CHECK-NUMERIC: fsqrt.d f10, f14
78+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f14
79+
fsqrt.d fa0, f14
80+
fsqrt.d fa0, fa4
81+
82+
# CHECK-NUMERIC: fsqrt.d f10, f15
83+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f15
84+
fsqrt.d fa0, f15
85+
fsqrt.d fa0, fa5
86+
87+
# CHECK-NUMERIC: fsqrt.d f10, f16
88+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f16
89+
fsqrt.d fa0, f16
90+
fsqrt.d fa0, fa6
91+
92+
# CHECK-NUMERIC: fsqrt.d f10, f17
93+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f17
94+
fsqrt.d fa0, f17
95+
fsqrt.d fa0, fa7
96+
97+
# CHECK-NUMERIC: fsqrt.d f10, f18
98+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f18
99+
fsqrt.d fa0, f18
100+
fsqrt.d fa0, fs2
101+
102+
# CHECK-NUMERIC: fsqrt.d f10, f19
103+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f19
104+
fsqrt.d fa0, f19
105+
fsqrt.d fa0, fs3
106+
107+
# CHECK-NUMERIC: fsqrt.d f10, f20
108+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f20
109+
fsqrt.d fa0, f20
110+
fsqrt.d fa0, fs4
111+
112+
# CHECK-NUMERIC: fsqrt.d f10, f21
113+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f21
114+
fsqrt.d fa0, f21
115+
fsqrt.d fa0, fs5
116+
117+
# CHECK-NUMERIC: fsqrt.d f10, f22
118+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f22
119+
fsqrt.d fa0, f22
120+
fsqrt.d fa0, fs6
121+
122+
# CHECK-NUMERIC: fsqrt.d f10, f23
123+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f23
124+
fsqrt.d fa0, f23
125+
fsqrt.d fa0, fs7
126+
127+
# CHECK-NUMERIC: fsqrt.d f10, f24
128+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f24
129+
fsqrt.d fa0, f24
130+
fsqrt.d fa0, fs8
131+
132+
# CHECK-NUMERIC: fsqrt.d f10, f25
133+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f25
134+
fsqrt.d fa0, f25
135+
fsqrt.d fa0, fs9
136+
137+
# CHECK-NUMERIC: fsqrt.d f10, f26
138+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f26
139+
fsqrt.d fa0, f26
140+
fsqrt.d fa0, fs10
141+
142+
# CHECK-NUMERIC: fsqrt.d f10, f27
143+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f27
144+
fsqrt.d fa0, f27
145+
fsqrt.d fa0, fs11
146+
147+
# CHECK-NUMERIC: fsqrt.d f10, f28
148+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f28
149+
fsqrt.d fa0, f28
150+
fsqrt.d fa0, ft8
151+
152+
# CHECK-NUMERIC: fsqrt.d f10, f29
153+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f29
154+
fsqrt.d fa0, f29
155+
fsqrt.d fa0, ft9
156+
157+
# CHECK-NUMERIC: fsqrt.d f10, f30
158+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f30
159+
fsqrt.d fa0, f30
160+
fsqrt.d fa0, ft10
161+
162+
# CHECK-NUMERIC: fsqrt.d f10, f31
163+
# CHECK-NUMERIC-NEXT: fsqrt.d f10, f31
164+
fsqrt.d fa0, f31
165+
fsqrt.d fa0, ft11
Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
# RUN: llvm-mc -triple riscv32 -mattr=+f < %s -riscv-arch-reg-names \
2+
# RUN: | FileCheck -check-prefix=CHECK-NUMERIC %s
3+
# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+f < %s \
4+
# RUN: | llvm-objdump -mattr=+f -d -riscv-arch-reg-names - \
5+
# RUN: | FileCheck -check-prefix=CHECK-NUMERIC %s
6+
7+
# CHECK-NUMERIC: fsqrt.s f10, f0
8+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f0
9+
fsqrt.s fa0, f0
10+
fsqrt.s fa0, ft0
11+
12+
# CHECK-NUMERIC: fsqrt.s f10, f1
13+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f1
14+
fsqrt.s fa0, f1
15+
fsqrt.s fa0, ft1
16+
17+
# CHECK-NUMERIC: fsqrt.s f10, f2
18+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f2
19+
fsqrt.s fa0, f2
20+
fsqrt.s fa0, ft2
21+
22+
# CHECK-NUMERIC: fsqrt.s f10, f3
23+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f3
24+
fsqrt.s fa0, f3
25+
fsqrt.s fa0, ft3
26+
27+
# CHECK-NUMERIC: fsqrt.s f10, f4
28+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f4
29+
fsqrt.s fa0, f4
30+
fsqrt.s fa0, ft4
31+
32+
# CHECK-NUMERIC: fsqrt.s f10, f5
33+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f5
34+
fsqrt.s fa0, f5
35+
fsqrt.s fa0, ft5
36+
37+
# CHECK-NUMERIC: fsqrt.s f10, f6
38+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f6
39+
fsqrt.s fa0, f6
40+
fsqrt.s fa0, ft6
41+
42+
# CHECK-NUMERIC: fsqrt.s f10, f7
43+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f7
44+
fsqrt.s fa0, f7
45+
fsqrt.s fa0, ft7
46+
47+
# CHECK-NUMERIC: fsqrt.s f10, f8
48+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f8
49+
fsqrt.s fa0, f8
50+
fsqrt.s fa0, fs0
51+
52+
# CHECK-NUMERIC: fsqrt.s f10, f9
53+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f9
54+
fsqrt.s fa0, f9
55+
fsqrt.s fa0, fs1
56+
57+
# CHECK-NUMERIC: fsqrt.s f10, f10
58+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f10
59+
fsqrt.s fa0, f10
60+
fsqrt.s fa0, fa0
61+
62+
# CHECK-NUMERIC: fsqrt.s f10, f11
63+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f11
64+
fsqrt.s fa0, f11
65+
fsqrt.s fa0, fa1
66+
67+
# CHECK-NUMERIC: fsqrt.s f10, f12
68+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f12
69+
fsqrt.s fa0, f12
70+
fsqrt.s fa0, fa2
71+
72+
# CHECK-NUMERIC: fsqrt.s f10, f13
73+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f13
74+
fsqrt.s fa0, f13
75+
fsqrt.s fa0, fa3
76+
77+
# CHECK-NUMERIC: fsqrt.s f10, f14
78+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f14
79+
fsqrt.s fa0, f14
80+
fsqrt.s fa0, fa4
81+
82+
# CHECK-NUMERIC: fsqrt.s f10, f15
83+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f15
84+
fsqrt.s fa0, f15
85+
fsqrt.s fa0, fa5
86+
87+
# CHECK-NUMERIC: fsqrt.s f10, f16
88+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f16
89+
fsqrt.s fa0, f16
90+
fsqrt.s fa0, fa6
91+
92+
# CHECK-NUMERIC: fsqrt.s f10, f17
93+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f17
94+
fsqrt.s fa0, f17
95+
fsqrt.s fa0, fa7
96+
97+
# CHECK-NUMERIC: fsqrt.s f10, f18
98+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f18
99+
fsqrt.s fa0, f18
100+
fsqrt.s fa0, fs2
101+
102+
# CHECK-NUMERIC: fsqrt.s f10, f19
103+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f19
104+
fsqrt.s fa0, f19
105+
fsqrt.s fa0, fs3
106+
107+
# CHECK-NUMERIC: fsqrt.s f10, f20
108+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f20
109+
fsqrt.s fa0, f20
110+
fsqrt.s fa0, fs4
111+
112+
# CHECK-NUMERIC: fsqrt.s f10, f21
113+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f21
114+
fsqrt.s fa0, f21
115+
fsqrt.s fa0, fs5
116+
117+
# CHECK-NUMERIC: fsqrt.s f10, f22
118+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f22
119+
fsqrt.s fa0, f22
120+
fsqrt.s fa0, fs6
121+
122+
# CHECK-NUMERIC: fsqrt.s f10, f23
123+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f23
124+
fsqrt.s fa0, f23
125+
fsqrt.s fa0, fs7
126+
127+
# CHECK-NUMERIC: fsqrt.s f10, f24
128+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f24
129+
fsqrt.s fa0, f24
130+
fsqrt.s fa0, fs8
131+
132+
# CHECK-NUMERIC: fsqrt.s f10, f25
133+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f25
134+
fsqrt.s fa0, f25
135+
fsqrt.s fa0, fs9
136+
137+
# CHECK-NUMERIC: fsqrt.s f10, f26
138+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f26
139+
fsqrt.s fa0, f26
140+
fsqrt.s fa0, fs10
141+
142+
# CHECK-NUMERIC: fsqrt.s f10, f27
143+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f27
144+
fsqrt.s fa0, f27
145+
fsqrt.s fa0, fs11
146+
147+
# CHECK-NUMERIC: fsqrt.s f10, f28
148+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f28
149+
fsqrt.s fa0, f28
150+
fsqrt.s fa0, ft8
151+
152+
# CHECK-NUMERIC: fsqrt.s f10, f29
153+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f29
154+
fsqrt.s fa0, f29
155+
fsqrt.s fa0, ft9
156+
157+
# CHECK-NUMERIC: fsqrt.s f10, f30
158+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f30
159+
fsqrt.s fa0, f30
160+
fsqrt.s fa0, ft10
161+
162+
# CHECK-NUMERIC: fsqrt.s f10, f31
163+
# CHECK-NUMERIC-NEXT: fsqrt.s f10, f31
164+
fsqrt.s fa0, f31
165+
fsqrt.s fa0, ft11

0 commit comments

Comments
 (0)