Coverage Report

Created: 2026-04-01 07:47

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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