/src/keystone/llvm/lib/Target/RISCV/RISCVGenSystemOperands.inc
Line | Count | Source |
1 | | #ifdef GET_SysRegsList_DECL |
2 | | const SysReg *lookupSysRegByEncoding(uint16_t Encoding); |
3 | | const SysReg *lookupSysRegByName(StringRef Name); |
4 | | #endif |
5 | | |
6 | | #ifdef GET_SysRegsList_IMPL |
7 | | const SysReg SysRegsList[] = { |
8 | | { "ustatus", 0x0, {} , false }, // 0 |
9 | | { "fflags", 0x1, {} , false }, // 1 |
10 | | { "frm", 0x2, {} , false }, // 2 |
11 | | { "fcsr", 0x3, {} , false }, // 3 |
12 | | { "uie", 0x4, {} , false }, // 4 |
13 | | { "utvec", 0x5, {} , false }, // 5 |
14 | | { "uscratch", 0x40, {} , false }, // 6 |
15 | | { "uepc", 0x41, {} , false }, // 7 |
16 | | { "ucause", 0x42, {} , false }, // 8 |
17 | | { "utval", 0x43, {} , false }, // 9 |
18 | | { "uip", 0x44, {} , false }, // 10 |
19 | | { "sstatus", 0x100, {} , false }, // 11 |
20 | | { "sedeleg", 0x102, {} , false }, // 12 |
21 | | { "sideleg", 0x103, {} , false }, // 13 |
22 | | { "sie", 0x104, {} , false }, // 14 |
23 | | { "stvec", 0x105, {} , false }, // 15 |
24 | | { "scounteren", 0x106, {} , false }, // 16 |
25 | | { "sscratch", 0x140, {} , false }, // 17 |
26 | | { "sepc", 0x141, {} , false }, // 18 |
27 | | { "scause", 0x142, {} , false }, // 19 |
28 | | { "stval", 0x143, {} , false }, // 20 |
29 | | { "sip", 0x144, {} , false }, // 21 |
30 | | { "satp", 0x180, {} , false }, // 22 |
31 | | { "mstatus", 0x300, {} , false }, // 23 |
32 | | { "misa", 0x301, {} , false }, // 24 |
33 | | { "medeleg", 0x302, {} , false }, // 25 |
34 | | { "mideleg", 0x303, {} , false }, // 26 |
35 | | { "mie", 0x304, {} , false }, // 27 |
36 | | { "mtvec", 0x305, {} , false }, // 28 |
37 | | { "mcounteren", 0x306, {} , false }, // 29 |
38 | | { "mhpmevent3", 0x323, {} , false }, // 30 |
39 | | { "mhpmevent4", 0x324, {} , false }, // 31 |
40 | | { "mhpmevent5", 0x325, {} , false }, // 32 |
41 | | { "mhpmevent6", 0x326, {} , false }, // 33 |
42 | | { "mhpmevent7", 0x327, {} , false }, // 34 |
43 | | { "mhpmevent8", 0x328, {} , false }, // 35 |
44 | | { "mhpmevent9", 0x329, {} , false }, // 36 |
45 | | { "mhpmevent10", 0x32A, {} , false }, // 37 |
46 | | { "mhpmevent11", 0x32B, {} , false }, // 38 |
47 | | { "mhpmevent12", 0x32C, {} , false }, // 39 |
48 | | { "mhpmevent13", 0x32D, {} , false }, // 40 |
49 | | { "mhpmevent14", 0x32E, {} , false }, // 41 |
50 | | { "mhpmevent15", 0x32F, {} , false }, // 42 |
51 | | { "mhpmevent16", 0x330, {} , false }, // 43 |
52 | | { "mhpmevent17", 0x331, {} , false }, // 44 |
53 | | { "mhpmevent18", 0x332, {} , false }, // 45 |
54 | | { "mhpmevent19", 0x333, {} , false }, // 46 |
55 | | { "mhpmevent20", 0x334, {} , false }, // 47 |
56 | | { "mhpmevent21", 0x335, {} , false }, // 48 |
57 | | { "mhpmevent22", 0x336, {} , false }, // 49 |
58 | | { "mhpmevent23", 0x337, {} , false }, // 50 |
59 | | { "mhpmevent24", 0x338, {} , false }, // 51 |
60 | | { "mhpmevent25", 0x339, {} , false }, // 52 |
61 | | { "mhpmevent26", 0x33A, {} , false }, // 53 |
62 | | { "mhpmevent27", 0x33B, {} , false }, // 54 |
63 | | { "mhpmevent28", 0x33C, {} , false }, // 55 |
64 | | { "mhpmevent29", 0x33D, {} , false }, // 56 |
65 | | { "mhpmevent30", 0x33E, {} , false }, // 57 |
66 | | { "mhpmevent31", 0x33F, {} , false }, // 58 |
67 | | { "mscratch", 0x340, {} , false }, // 59 |
68 | | { "mepc", 0x341, {} , false }, // 60 |
69 | | { "mcause", 0x342, {} , false }, // 61 |
70 | | { "mtval", 0x343, {} , false }, // 62 |
71 | | { "mip", 0x344, {} , false }, // 63 |
72 | | { "pmpcfg0", 0x3A0, {} , false }, // 64 |
73 | | { "pmpcfg1", 0x3A1, {} , true }, // 65 |
74 | | { "pmpcfg2", 0x3A2, {} , false }, // 66 |
75 | | { "pmpcfg3", 0x3A3, {} , true }, // 67 |
76 | | { "pmpaddr0", 0x3B0, {} , false }, // 68 |
77 | | { "pmpaddr1", 0x3B1, {} , false }, // 69 |
78 | | { "pmpaddr2", 0x3B2, {} , false }, // 70 |
79 | | { "pmpaddr3", 0x3B3, {} , false }, // 71 |
80 | | { "pmpaddr4", 0x3B4, {} , false }, // 72 |
81 | | { "pmpaddr5", 0x3B5, {} , false }, // 73 |
82 | | { "pmpaddr6", 0x3B6, {} , false }, // 74 |
83 | | { "pmpaddr7", 0x3B7, {} , false }, // 75 |
84 | | { "pmpaddr8", 0x3B8, {} , false }, // 76 |
85 | | { "pmpaddr9", 0x3B9, {} , false }, // 77 |
86 | | { "pmpaddr10", 0x3BA, {} , false }, // 78 |
87 | | { "pmpaddr11", 0x3BB, {} , false }, // 79 |
88 | | { "pmpaddr12", 0x3BC, {} , false }, // 80 |
89 | | { "pmpaddr13", 0x3BD, {} , false }, // 81 |
90 | | { "pmpaddr14", 0x3BE, {} , false }, // 82 |
91 | | { "pmpaddr15", 0x3BF, {} , false }, // 83 |
92 | | { "tselect", 0x7A0, {} , false }, // 84 |
93 | | { "tdata1", 0x7A1, {} , false }, // 85 |
94 | | { "tdata2", 0x7A2, {} , false }, // 86 |
95 | | { "tdata3", 0x7A3, {} , false }, // 87 |
96 | | { "dcsr", 0x7B0, {} , false }, // 88 |
97 | | { "dpc", 0x7B1, {} , false }, // 89 |
98 | | { "dscratch", 0x7B2, {} , false }, // 90 |
99 | | { "mcycle", 0xB00, {} , false }, // 91 |
100 | | { "minstret", 0xB02, {} , false }, // 92 |
101 | | { "mhpmcounter3", 0xB03, {} , false }, // 93 |
102 | | { "mhpmcounter4", 0xB04, {} , false }, // 94 |
103 | | { "mhpmcounter5", 0xB05, {} , false }, // 95 |
104 | | { "mhpmcounter6", 0xB06, {} , false }, // 96 |
105 | | { "mhpmcounter7", 0xB07, {} , false }, // 97 |
106 | | { "mhpmcounter8", 0xB08, {} , false }, // 98 |
107 | | { "mhpmcounter9", 0xB09, {} , false }, // 99 |
108 | | { "mhpmcounter10", 0xB0A, {} , false }, // 100 |
109 | | { "mhpmcounter11", 0xB0B, {} , false }, // 101 |
110 | | { "mhpmcounter12", 0xB0C, {} , false }, // 102 |
111 | | { "mhpmcounter13", 0xB0D, {} , false }, // 103 |
112 | | { "mhpmcounter14", 0xB0E, {} , false }, // 104 |
113 | | { "mhpmcounter15", 0xB0F, {} , false }, // 105 |
114 | | { "mhpmcounter16", 0xB10, {} , false }, // 106 |
115 | | { "mhpmcounter17", 0xB11, {} , false }, // 107 |
116 | | { "mhpmcounter18", 0xB12, {} , false }, // 108 |
117 | | { "mhpmcounter19", 0xB13, {} , false }, // 109 |
118 | | { "mhpmcounter20", 0xB14, {} , false }, // 110 |
119 | | { "mhpmcounter21", 0xB15, {} , false }, // 111 |
120 | | { "mhpmcounter22", 0xB16, {} , false }, // 112 |
121 | | { "mhpmcounter23", 0xB17, {} , false }, // 113 |
122 | | { "mhpmcounter24", 0xB18, {} , false }, // 114 |
123 | | { "mhpmcounter25", 0xB19, {} , false }, // 115 |
124 | | { "mhpmcounter26", 0xB1A, {} , false }, // 116 |
125 | | { "mhpmcounter27", 0xB1B, {} , false }, // 117 |
126 | | { "mhpmcounter28", 0xB1C, {} , false }, // 118 |
127 | | { "mhpmcounter29", 0xB1D, {} , false }, // 119 |
128 | | { "mhpmcounter30", 0xB1E, {} , false }, // 120 |
129 | | { "mhpmcounter31", 0xB1F, {} , false }, // 121 |
130 | | { "mcycleh", 0xB80, {} , true }, // 122 |
131 | | { "minstreth", 0xB82, {} , true }, // 123 |
132 | | { "mhpmcounter3h", 0xB83, {} , true }, // 124 |
133 | | { "mhpmcounter4h", 0xB84, {} , true }, // 125 |
134 | | { "mhpmcounter5h", 0xB85, {} , true }, // 126 |
135 | | { "mhpmcounter6h", 0xB86, {} , true }, // 127 |
136 | | { "mhpmcounter7h", 0xB87, {} , true }, // 128 |
137 | | { "mhpmcounter8h", 0xB88, {} , true }, // 129 |
138 | | { "mhpmcounter9h", 0xB89, {} , true }, // 130 |
139 | | { "mhpmcounter10h", 0xB8A, {} , true }, // 131 |
140 | | { "mhpmcounter11h", 0xB8B, {} , true }, // 132 |
141 | | { "mhpmcounter12h", 0xB8C, {} , true }, // 133 |
142 | | { "mhpmcounter13h", 0xB8D, {} , true }, // 134 |
143 | | { "mhpmcounter14h", 0xB8E, {} , true }, // 135 |
144 | | { "mhpmcounter15h", 0xB8F, {} , true }, // 136 |
145 | | { "mhpmcounter16h", 0xB90, {} , true }, // 137 |
146 | | { "mhpmcounter17h", 0xB91, {} , true }, // 138 |
147 | | { "mhpmcounter18h", 0xB92, {} , true }, // 139 |
148 | | { "mhpmcounter19h", 0xB93, {} , true }, // 140 |
149 | | { "mhpmcounter20h", 0xB94, {} , true }, // 141 |
150 | | { "mhpmcounter21h", 0xB95, {} , true }, // 142 |
151 | | { "mhpmcounter22h", 0xB96, {} , true }, // 143 |
152 | | { "mhpmcounter23h", 0xB97, {} , true }, // 144 |
153 | | { "mhpmcounter24h", 0xB98, {} , true }, // 145 |
154 | | { "mhpmcounter25h", 0xB99, {} , true }, // 146 |
155 | | { "mhpmcounter26h", 0xB9A, {} , true }, // 147 |
156 | | { "mhpmcounter27h", 0xB9B, {} , true }, // 148 |
157 | | { "mhpmcounter28h", 0xB9C, {} , true }, // 149 |
158 | | { "mhpmcounter29h", 0xB9D, {} , true }, // 150 |
159 | | { "mhpmcounter30h", 0xB9E, {} , true }, // 151 |
160 | | { "mhpmcounter31h", 0xB9F, {} , true }, // 152 |
161 | | { "cycle", 0xC00, {} , false }, // 153 |
162 | | { "time", 0xC01, {} , false }, // 154 |
163 | | { "instret", 0xC02, {} , false }, // 155 |
164 | | { "hpmcounter3", 0xC03, {} , false }, // 156 |
165 | | { "hpmcounter4", 0xC04, {} , false }, // 157 |
166 | | { "hpmcounter5", 0xC05, {} , false }, // 158 |
167 | | { "hpmcounter6", 0xC06, {} , false }, // 159 |
168 | | { "hpmcounter7", 0xC07, {} , false }, // 160 |
169 | | { "hpmcounter8", 0xC08, {} , false }, // 161 |
170 | | { "hpmcounter9", 0xC09, {} , false }, // 162 |
171 | | { "hpmcounter10", 0xC0A, {} , false }, // 163 |
172 | | { "hpmcounter11", 0xC0B, {} , false }, // 164 |
173 | | { "hpmcounter12", 0xC0C, {} , false }, // 165 |
174 | | { "hpmcounter13", 0xC0D, {} , false }, // 166 |
175 | | { "hpmcounter14", 0xC0E, {} , false }, // 167 |
176 | | { "hpmcounter15", 0xC0F, {} , false }, // 168 |
177 | | { "hpmcounter16", 0xC10, {} , false }, // 169 |
178 | | { "hpmcounter17", 0xC11, {} , false }, // 170 |
179 | | { "hpmcounter18", 0xC12, {} , false }, // 171 |
180 | | { "hpmcounter19", 0xC13, {} , false }, // 172 |
181 | | { "hpmcounter20", 0xC14, {} , false }, // 173 |
182 | | { "hpmcounter21", 0xC15, {} , false }, // 174 |
183 | | { "hpmcounter22", 0xC16, {} , false }, // 175 |
184 | | { "hpmcounter23", 0xC17, {} , false }, // 176 |
185 | | { "hpmcounter24", 0xC18, {} , false }, // 177 |
186 | | { "hpmcounter25", 0xC19, {} , false }, // 178 |
187 | | { "hpmcounter26", 0xC1A, {} , false }, // 179 |
188 | | { "hpmcounter27", 0xC1B, {} , false }, // 180 |
189 | | { "hpmcounter28", 0xC1C, {} , false }, // 181 |
190 | | { "hpmcounter29", 0xC1D, {} , false }, // 182 |
191 | | { "hpmcounter30", 0xC1E, {} , false }, // 183 |
192 | | { "hpmcounter31", 0xC1F, {} , false }, // 184 |
193 | | { "cycleh", 0xC80, {} , true }, // 185 |
194 | | { "timeh", 0xC81, {} , true }, // 186 |
195 | | { "instreth", 0xC82, {} , true }, // 187 |
196 | | { "hpmcounter3h", 0xC83, {} , true }, // 188 |
197 | | { "hpmcounter4h", 0xC84, {} , true }, // 189 |
198 | | { "hpmcounter5h", 0xC85, {} , true }, // 190 |
199 | | { "hpmcounter6h", 0xC86, {} , true }, // 191 |
200 | | { "hpmcounter7h", 0xC87, {} , true }, // 192 |
201 | | { "hpmcounter8h", 0xC88, {} , true }, // 193 |
202 | | { "hpmcounter9h", 0xC89, {} , true }, // 194 |
203 | | { "hpmcounter10h", 0xC8A, {} , true }, // 195 |
204 | | { "hpmcounter11h", 0xC8B, {} , true }, // 196 |
205 | | { "hpmcounter12h", 0xC8C, {} , true }, // 197 |
206 | | { "hpmcounter13h", 0xC8D, {} , true }, // 198 |
207 | | { "hpmcounter14h", 0xC8E, {} , true }, // 199 |
208 | | { "hpmcounter15h", 0xC8F, {} , true }, // 200 |
209 | | { "hpmcounter16h", 0xC90, {} , true }, // 201 |
210 | | { "hpmcounter17h", 0xC91, {} , true }, // 202 |
211 | | { "hpmcounter18h", 0xC92, {} , true }, // 203 |
212 | | { "hpmcounter19h", 0xC93, {} , true }, // 204 |
213 | | { "hpmcounter20h", 0xC94, {} , true }, // 205 |
214 | | { "hpmcounter21h", 0xC95, {} , true }, // 206 |
215 | | { "hpmcounter22h", 0xC96, {} , true }, // 207 |
216 | | { "hpmcounter23h", 0xC97, {} , true }, // 208 |
217 | | { "hpmcounter24h", 0xC98, {} , true }, // 209 |
218 | | { "hpmcounter25h", 0xC99, {} , true }, // 210 |
219 | | { "hpmcounter26h", 0xC9A, {} , true }, // 211 |
220 | | { "hpmcounter27h", 0xC9B, {} , true }, // 212 |
221 | | { "hpmcounter28h", 0xC9C, {} , true }, // 213 |
222 | | { "hpmcounter29h", 0xC9D, {} , true }, // 214 |
223 | | { "hpmcounter30h", 0xC9E, {} , true }, // 215 |
224 | | { "hpmcounter31h", 0xC9F, {} , true }, // 216 |
225 | | { "mvendorid", 0xF11, {} , false }, // 217 |
226 | | { "marchid", 0xF12, {} , false }, // 218 |
227 | | { "mimpid", 0xF13, {} , false }, // 219 |
228 | | { "mhartid", 0xF14, {} , false }, // 220 |
229 | | }; |
230 | | |
231 | 38 | const SysReg *lookupSysRegByEncoding(uint16_t Encoding) { |
232 | 38 | struct KeyType { |
233 | 38 | uint16_t Encoding; |
234 | 38 | }; |
235 | 38 | KeyType Key = { Encoding }; |
236 | 38 | auto Table = makeArrayRef(SysRegsList); |
237 | 38 | auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, |
238 | 299 | [](const SysReg &LHS, const KeyType &RHS) { |
239 | 299 | if (LHS.Encoding < RHS.Encoding) |
240 | 55 | return true; |
241 | 244 | if (LHS.Encoding > RHS.Encoding) |
242 | 219 | return false; |
243 | 25 | return false; |
244 | 244 | }); |
245 | | |
246 | 38 | if (Idx == Table.end() || |
247 | 37 | Key.Encoding != Idx->Encoding) |
248 | 13 | return nullptr; |
249 | 25 | return &*Idx; |
250 | 38 | } |
251 | | |
252 | 111 | const SysReg *lookupSysRegByName(StringRef Name) { |
253 | 111 | struct IndexType { |
254 | 111 | const char * Name; |
255 | 111 | unsigned _index; |
256 | 111 | }; |
257 | 111 | static const struct IndexType Index[] = { |
258 | 111 | { "CYCLE", 153 }, |
259 | 111 | { "CYCLEH", 185 }, |
260 | 111 | { "DCSR", 88 }, |
261 | 111 | { "DPC", 89 }, |
262 | 111 | { "DSCRATCH", 90 }, |
263 | 111 | { "FCSR", 3 }, |
264 | 111 | { "FFLAGS", 1 }, |
265 | 111 | { "FRM", 2 }, |
266 | 111 | { "HPMCOUNTER10", 163 }, |
267 | 111 | { "HPMCOUNTER10H", 195 }, |
268 | 111 | { "HPMCOUNTER11", 164 }, |
269 | 111 | { "HPMCOUNTER11H", 196 }, |
270 | 111 | { "HPMCOUNTER12", 165 }, |
271 | 111 | { "HPMCOUNTER12H", 197 }, |
272 | 111 | { "HPMCOUNTER13", 166 }, |
273 | 111 | { "HPMCOUNTER13H", 198 }, |
274 | 111 | { "HPMCOUNTER14", 167 }, |
275 | 111 | { "HPMCOUNTER14H", 199 }, |
276 | 111 | { "HPMCOUNTER15", 168 }, |
277 | 111 | { "HPMCOUNTER15H", 200 }, |
278 | 111 | { "HPMCOUNTER16", 169 }, |
279 | 111 | { "HPMCOUNTER16H", 201 }, |
280 | 111 | { "HPMCOUNTER17", 170 }, |
281 | 111 | { "HPMCOUNTER17H", 202 }, |
282 | 111 | { "HPMCOUNTER18", 171 }, |
283 | 111 | { "HPMCOUNTER18H", 203 }, |
284 | 111 | { "HPMCOUNTER19", 172 }, |
285 | 111 | { "HPMCOUNTER19H", 204 }, |
286 | 111 | { "HPMCOUNTER20", 173 }, |
287 | 111 | { "HPMCOUNTER20H", 205 }, |
288 | 111 | { "HPMCOUNTER21", 174 }, |
289 | 111 | { "HPMCOUNTER21H", 206 }, |
290 | 111 | { "HPMCOUNTER22", 175 }, |
291 | 111 | { "HPMCOUNTER22H", 207 }, |
292 | 111 | { "HPMCOUNTER23", 176 }, |
293 | 111 | { "HPMCOUNTER23H", 208 }, |
294 | 111 | { "HPMCOUNTER24", 177 }, |
295 | 111 | { "HPMCOUNTER24H", 209 }, |
296 | 111 | { "HPMCOUNTER25", 178 }, |
297 | 111 | { "HPMCOUNTER25H", 210 }, |
298 | 111 | { "HPMCOUNTER26", 179 }, |
299 | 111 | { "HPMCOUNTER26H", 211 }, |
300 | 111 | { "HPMCOUNTER27", 180 }, |
301 | 111 | { "HPMCOUNTER27H", 212 }, |
302 | 111 | { "HPMCOUNTER28", 181 }, |
303 | 111 | { "HPMCOUNTER28H", 213 }, |
304 | 111 | { "HPMCOUNTER29", 182 }, |
305 | 111 | { "HPMCOUNTER29H", 214 }, |
306 | 111 | { "HPMCOUNTER3", 156 }, |
307 | 111 | { "HPMCOUNTER30", 183 }, |
308 | 111 | { "HPMCOUNTER30H", 215 }, |
309 | 111 | { "HPMCOUNTER31", 184 }, |
310 | 111 | { "HPMCOUNTER31H", 216 }, |
311 | 111 | { "HPMCOUNTER3H", 188 }, |
312 | 111 | { "HPMCOUNTER4", 157 }, |
313 | 111 | { "HPMCOUNTER4H", 189 }, |
314 | 111 | { "HPMCOUNTER5", 158 }, |
315 | 111 | { "HPMCOUNTER5H", 190 }, |
316 | 111 | { "HPMCOUNTER6", 159 }, |
317 | 111 | { "HPMCOUNTER6H", 191 }, |
318 | 111 | { "HPMCOUNTER7", 160 }, |
319 | 111 | { "HPMCOUNTER7H", 192 }, |
320 | 111 | { "HPMCOUNTER8", 161 }, |
321 | 111 | { "HPMCOUNTER8H", 193 }, |
322 | 111 | { "HPMCOUNTER9", 162 }, |
323 | 111 | { "HPMCOUNTER9H", 194 }, |
324 | 111 | { "INSTRET", 155 }, |
325 | 111 | { "INSTRETH", 187 }, |
326 | 111 | { "MARCHID", 218 }, |
327 | 111 | { "MCAUSE", 61 }, |
328 | 111 | { "MCOUNTEREN", 29 }, |
329 | 111 | { "MCYCLE", 91 }, |
330 | 111 | { "MCYCLEH", 122 }, |
331 | 111 | { "MEDELEG", 25 }, |
332 | 111 | { "MEPC", 60 }, |
333 | 111 | { "MHARTID", 220 }, |
334 | 111 | { "MHPMCOUNTER10", 100 }, |
335 | 111 | { "MHPMCOUNTER10H", 131 }, |
336 | 111 | { "MHPMCOUNTER11", 101 }, |
337 | 111 | { "MHPMCOUNTER11H", 132 }, |
338 | 111 | { "MHPMCOUNTER12", 102 }, |
339 | 111 | { "MHPMCOUNTER12H", 133 }, |
340 | 111 | { "MHPMCOUNTER13", 103 }, |
341 | 111 | { "MHPMCOUNTER13H", 134 }, |
342 | 111 | { "MHPMCOUNTER14", 104 }, |
343 | 111 | { "MHPMCOUNTER14H", 135 }, |
344 | 111 | { "MHPMCOUNTER15", 105 }, |
345 | 111 | { "MHPMCOUNTER15H", 136 }, |
346 | 111 | { "MHPMCOUNTER16", 106 }, |
347 | 111 | { "MHPMCOUNTER16H", 137 }, |
348 | 111 | { "MHPMCOUNTER17", 107 }, |
349 | 111 | { "MHPMCOUNTER17H", 138 }, |
350 | 111 | { "MHPMCOUNTER18", 108 }, |
351 | 111 | { "MHPMCOUNTER18H", 139 }, |
352 | 111 | { "MHPMCOUNTER19", 109 }, |
353 | 111 | { "MHPMCOUNTER19H", 140 }, |
354 | 111 | { "MHPMCOUNTER20", 110 }, |
355 | 111 | { "MHPMCOUNTER20H", 141 }, |
356 | 111 | { "MHPMCOUNTER21", 111 }, |
357 | 111 | { "MHPMCOUNTER21H", 142 }, |
358 | 111 | { "MHPMCOUNTER22", 112 }, |
359 | 111 | { "MHPMCOUNTER22H", 143 }, |
360 | 111 | { "MHPMCOUNTER23", 113 }, |
361 | 111 | { "MHPMCOUNTER23H", 144 }, |
362 | 111 | { "MHPMCOUNTER24", 114 }, |
363 | 111 | { "MHPMCOUNTER24H", 145 }, |
364 | 111 | { "MHPMCOUNTER25", 115 }, |
365 | 111 | { "MHPMCOUNTER25H", 146 }, |
366 | 111 | { "MHPMCOUNTER26", 116 }, |
367 | 111 | { "MHPMCOUNTER26H", 147 }, |
368 | 111 | { "MHPMCOUNTER27", 117 }, |
369 | 111 | { "MHPMCOUNTER27H", 148 }, |
370 | 111 | { "MHPMCOUNTER28", 118 }, |
371 | 111 | { "MHPMCOUNTER28H", 149 }, |
372 | 111 | { "MHPMCOUNTER29", 119 }, |
373 | 111 | { "MHPMCOUNTER29H", 150 }, |
374 | 111 | { "MHPMCOUNTER3", 93 }, |
375 | 111 | { "MHPMCOUNTER30", 120 }, |
376 | 111 | { "MHPMCOUNTER30H", 151 }, |
377 | 111 | { "MHPMCOUNTER31", 121 }, |
378 | 111 | { "MHPMCOUNTER31H", 152 }, |
379 | 111 | { "MHPMCOUNTER3H", 124 }, |
380 | 111 | { "MHPMCOUNTER4", 94 }, |
381 | 111 | { "MHPMCOUNTER4H", 125 }, |
382 | 111 | { "MHPMCOUNTER5", 95 }, |
383 | 111 | { "MHPMCOUNTER5H", 126 }, |
384 | 111 | { "MHPMCOUNTER6", 96 }, |
385 | 111 | { "MHPMCOUNTER6H", 127 }, |
386 | 111 | { "MHPMCOUNTER7", 97 }, |
387 | 111 | { "MHPMCOUNTER7H", 128 }, |
388 | 111 | { "MHPMCOUNTER8", 98 }, |
389 | 111 | { "MHPMCOUNTER8H", 129 }, |
390 | 111 | { "MHPMCOUNTER9", 99 }, |
391 | 111 | { "MHPMCOUNTER9H", 130 }, |
392 | 111 | { "MHPMEVENT10", 37 }, |
393 | 111 | { "MHPMEVENT11", 38 }, |
394 | 111 | { "MHPMEVENT12", 39 }, |
395 | 111 | { "MHPMEVENT13", 40 }, |
396 | 111 | { "MHPMEVENT14", 41 }, |
397 | 111 | { "MHPMEVENT15", 42 }, |
398 | 111 | { "MHPMEVENT16", 43 }, |
399 | 111 | { "MHPMEVENT17", 44 }, |
400 | 111 | { "MHPMEVENT18", 45 }, |
401 | 111 | { "MHPMEVENT19", 46 }, |
402 | 111 | { "MHPMEVENT20", 47 }, |
403 | 111 | { "MHPMEVENT21", 48 }, |
404 | 111 | { "MHPMEVENT22", 49 }, |
405 | 111 | { "MHPMEVENT23", 50 }, |
406 | 111 | { "MHPMEVENT24", 51 }, |
407 | 111 | { "MHPMEVENT25", 52 }, |
408 | 111 | { "MHPMEVENT26", 53 }, |
409 | 111 | { "MHPMEVENT27", 54 }, |
410 | 111 | { "MHPMEVENT28", 55 }, |
411 | 111 | { "MHPMEVENT29", 56 }, |
412 | 111 | { "MHPMEVENT3", 30 }, |
413 | 111 | { "MHPMEVENT30", 57 }, |
414 | 111 | { "MHPMEVENT31", 58 }, |
415 | 111 | { "MHPMEVENT4", 31 }, |
416 | 111 | { "MHPMEVENT5", 32 }, |
417 | 111 | { "MHPMEVENT6", 33 }, |
418 | 111 | { "MHPMEVENT7", 34 }, |
419 | 111 | { "MHPMEVENT8", 35 }, |
420 | 111 | { "MHPMEVENT9", 36 }, |
421 | 111 | { "MIDELEG", 26 }, |
422 | 111 | { "MIE", 27 }, |
423 | 111 | { "MIMPID", 219 }, |
424 | 111 | { "MINSTRET", 92 }, |
425 | 111 | { "MINSTRETH", 123 }, |
426 | 111 | { "MIP", 63 }, |
427 | 111 | { "MISA", 24 }, |
428 | 111 | { "MSCRATCH", 59 }, |
429 | 111 | { "MSTATUS", 23 }, |
430 | 111 | { "MTVAL", 62 }, |
431 | 111 | { "MTVEC", 28 }, |
432 | 111 | { "MVENDORID", 217 }, |
433 | 111 | { "PMPADDR0", 68 }, |
434 | 111 | { "PMPADDR1", 69 }, |
435 | 111 | { "PMPADDR10", 78 }, |
436 | 111 | { "PMPADDR11", 79 }, |
437 | 111 | { "PMPADDR12", 80 }, |
438 | 111 | { "PMPADDR13", 81 }, |
439 | 111 | { "PMPADDR14", 82 }, |
440 | 111 | { "PMPADDR15", 83 }, |
441 | 111 | { "PMPADDR2", 70 }, |
442 | 111 | { "PMPADDR3", 71 }, |
443 | 111 | { "PMPADDR4", 72 }, |
444 | 111 | { "PMPADDR5", 73 }, |
445 | 111 | { "PMPADDR6", 74 }, |
446 | 111 | { "PMPADDR7", 75 }, |
447 | 111 | { "PMPADDR8", 76 }, |
448 | 111 | { "PMPADDR9", 77 }, |
449 | 111 | { "PMPCFG0", 64 }, |
450 | 111 | { "PMPCFG1", 65 }, |
451 | 111 | { "PMPCFG2", 66 }, |
452 | 111 | { "PMPCFG3", 67 }, |
453 | 111 | { "SATP", 22 }, |
454 | 111 | { "SCAUSE", 19 }, |
455 | 111 | { "SCOUNTEREN", 16 }, |
456 | 111 | { "SEDELEG", 12 }, |
457 | 111 | { "SEPC", 18 }, |
458 | 111 | { "SIDELEG", 13 }, |
459 | 111 | { "SIE", 14 }, |
460 | 111 | { "SIP", 21 }, |
461 | 111 | { "SSCRATCH", 17 }, |
462 | 111 | { "SSTATUS", 11 }, |
463 | 111 | { "STVAL", 20 }, |
464 | 111 | { "STVEC", 15 }, |
465 | 111 | { "TDATA1", 85 }, |
466 | 111 | { "TDATA2", 86 }, |
467 | 111 | { "TDATA3", 87 }, |
468 | 111 | { "TIME", 154 }, |
469 | 111 | { "TIMEH", 186 }, |
470 | 111 | { "TSELECT", 84 }, |
471 | 111 | { "UCAUSE", 8 }, |
472 | 111 | { "UEPC", 7 }, |
473 | 111 | { "UIE", 4 }, |
474 | 111 | { "UIP", 10 }, |
475 | 111 | { "USCRATCH", 6 }, |
476 | 111 | { "USTATUS", 0 }, |
477 | 111 | { "UTVAL", 9 }, |
478 | 111 | { "UTVEC", 5 }, |
479 | 111 | }; |
480 | | |
481 | 111 | struct KeyType { |
482 | 111 | std::string Name; |
483 | 111 | }; |
484 | 111 | KeyType Key = { Name.upper() }; |
485 | 111 | auto Table = makeArrayRef(Index); |
486 | 111 | auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, |
487 | 867 | [](const IndexType &LHS, const KeyType &RHS) { |
488 | 867 | int CmpName = StringRef(LHS.Name).compare(RHS.Name); |
489 | 867 | if (CmpName < 0) return true; |
490 | 412 | if (CmpName > 0) return false; |
491 | 1 | return false; |
492 | 412 | }); |
493 | | |
494 | 111 | if (Idx == Table.end() || |
495 | 93 | Key.Name != Idx->Name) |
496 | 110 | return nullptr; |
497 | 1 | return &SysRegsList[Idx->_index]; |
498 | 111 | } |
499 | | #endif |
500 | | |
501 | | #undef GET_SysRegsList_DECL |
502 | | #undef GET_SysRegsList_IMPL |