Coverage Report

Created: 2023-09-25 06:27

/src/keystone/llvm/lib/Target/RISCV/RISCVGenRegisterInfo.inc
Line
Count
Source (jump to first uncovered line)
1
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2
|*                                                                            *|
3
|* Target Register Enum Values                                                *|
4
|*                                                                            *|
5
|* Automatically generated file, do not edit!                                 *|
6
|*                                                                            *|
7
\*===----------------------------------------------------------------------===*/
8
9
#ifdef GET_REGINFO_ENUM
10
#undef GET_REGINFO_ENUM
11
12
namespace llvm_ks {
13
14
class MCRegisterClass;
15
extern const MCRegisterClass RISCVMCRegisterClasses[];
16
17
namespace RISCV {
18
enum {
19
  NoRegister,
20
  X0 = 1,
21
  X1 = 2,
22
  X2 = 3,
23
  X3 = 4,
24
  X4 = 5,
25
  X5 = 6,
26
  X6 = 7,
27
  X7 = 8,
28
  X8 = 9,
29
  X9 = 10,
30
  X10 = 11,
31
  X11 = 12,
32
  X12 = 13,
33
  X13 = 14,
34
  X14 = 15,
35
  X15 = 16,
36
  X16 = 17,
37
  X17 = 18,
38
  X18 = 19,
39
  X19 = 20,
40
  X20 = 21,
41
  X21 = 22,
42
  X22 = 23,
43
  X23 = 24,
44
  X24 = 25,
45
  X25 = 26,
46
  X26 = 27,
47
  X27 = 28,
48
  X28 = 29,
49
  X29 = 30,
50
  X30 = 31,
51
  X31 = 32,
52
  F0_32 = 33,
53
  F0_64 = 34,
54
  F1_32 = 35,
55
  F1_64 = 36,
56
  F2_32 = 37,
57
  F2_64 = 38,
58
  F3_32 = 39,
59
  F3_64 = 40,
60
  F4_32 = 41,
61
  F4_64 = 42,
62
  F5_32 = 43,
63
  F5_64 = 44,
64
  F6_32 = 45,
65
  F6_64 = 46,
66
  F7_32 = 47,
67
  F7_64 = 48,
68
  F8_32 = 49,
69
  F8_64 = 50,
70
  F9_32 = 51,
71
  F9_64 = 52,
72
  F10_32 = 53,
73
  F10_64 = 54,
74
  F11_32 = 55,
75
  F11_64 = 56,
76
  F12_32 = 57,
77
  F12_64 = 58,
78
  F13_32 = 59,
79
  F13_64 = 60,
80
  F14_32 = 61,
81
  F14_64 = 62,
82
  F15_32 = 63,
83
  F15_64 = 64,
84
  F16_32 = 65,
85
  F16_64 = 66,
86
  F17_32 = 67,
87
  F17_64 = 68,
88
  F18_32 = 69,
89
  F18_64 = 70,
90
  F19_32 = 71,
91
  F19_64 = 72,
92
  F20_32 = 73,
93
  F20_64 = 74,
94
  F21_32 = 75,
95
  F21_64 = 76,
96
  F22_32 = 77,
97
  F22_64 = 78,
98
  F23_32 = 79,
99
  F23_64 = 80,
100
  F24_32 = 81,
101
  F24_64 = 82,
102
  F25_32 = 83,
103
  F25_64 = 84,
104
  F26_32 = 85,
105
  F26_64 = 86,
106
  F27_32 = 87,
107
  F27_64 = 88,
108
  F28_32 = 89,
109
  F28_64 = 90,
110
  F29_32 = 91,
111
  F29_64 = 92,
112
  F30_32 = 93,
113
  F30_64 = 94,
114
  F31_32 = 95,
115
  F31_64 = 96,
116
  NUM_TARGET_REGS   // 97
117
};
118
} // end namespace RISCV
119
120
// Register classes
121
122
namespace RISCV {
123
enum {
124
  FPR32RegClassID = 0,
125
  GPRRegClassID = 1,
126
  GPRNoX0RegClassID = 2,
127
  GPRNoX0X2RegClassID = 3,
128
  GPRTCRegClassID = 4,
129
  FPR32CRegClassID = 5,
130
  GPRCRegClassID = 6,
131
  GPRC_and_GPRTCRegClassID = 7,
132
  SPRegClassID = 8,
133
  FPR64RegClassID = 9,
134
  FPR64CRegClassID = 10,
135
136
  };
137
} // end namespace RISCV
138
139
140
// Register alternate name indices
141
142
namespace RISCV {
143
enum {
144
  ABIRegAltName,  // 0
145
  NoRegAltName, // 1
146
  NUM_TARGET_REG_ALT_NAMES = 2
147
};
148
} // end namespace RISCV
149
150
151
// Subregister indices
152
153
namespace RISCV {
154
enum {
155
  NoSubRegister,
156
  sub_32, // 1
157
  NUM_TARGET_SUBREGS
158
};
159
} // end namespace RISCV
160
161
} // end namespace llvm_ks
162
163
#endif // GET_REGINFO_ENUM
164
165
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
166
|*                                                                            *|
167
|* MC Register Information                                                    *|
168
|*                                                                            *|
169
|* Automatically generated file, do not edit!                                 *|
170
|*                                                                            *|
171
\*===----------------------------------------------------------------------===*/
172
173
174
#ifdef GET_REGINFO_MC_DESC
175
#undef GET_REGINFO_MC_DESC
176
177
namespace llvm_ks {
178
179
extern const MCPhysReg RISCVRegDiffLists[] = {
180
  /* 0 */ 1, 0,
181
  /* 2 */ 32, 0,
182
  /* 4 */ 33, 0,
183
  /* 6 */ 34, 0,
184
  /* 8 */ 35, 0,
185
  /* 10 */ 36, 0,
186
  /* 12 */ 37, 0,
187
  /* 14 */ 38, 0,
188
  /* 16 */ 39, 0,
189
  /* 18 */ 40, 0,
190
  /* 20 */ 41, 0,
191
  /* 22 */ 42, 0,
192
  /* 24 */ 43, 0,
193
  /* 26 */ 44, 0,
194
  /* 28 */ 45, 0,
195
  /* 30 */ 46, 0,
196
  /* 32 */ 47, 0,
197
  /* 34 */ 48, 0,
198
  /* 36 */ 49, 0,
199
  /* 38 */ 50, 0,
200
  /* 40 */ 51, 0,
201
  /* 42 */ 52, 0,
202
  /* 44 */ 53, 0,
203
  /* 46 */ 54, 0,
204
  /* 48 */ 55, 0,
205
  /* 50 */ 56, 0,
206
  /* 52 */ 57, 0,
207
  /* 54 */ 58, 0,
208
  /* 56 */ 59, 0,
209
  /* 58 */ 60, 0,
210
  /* 60 */ 61, 0,
211
  /* 62 */ 62, 0,
212
  /* 64 */ 63, 0,
213
  /* 66 */ 65535, 0,
214
};
215
216
extern const unsigned RISCVLaneMaskLists[] = {
217
  /* 0 */ 0x00000000, ~0u,
218
  /* 2 */ 0x00000001, ~0u,
219
};
220
221
extern const uint16_t RISCVSubRegIdxLists[] = {
222
  /* 0 */ 1, 0,
223
};
224
225
extern const MCRegisterInfo::SubRegCoveredBits RISCVSubRegIdxRanges[] = {
226
  { 65535, 65535 },
227
  { 0, 32 },  // sub_32
228
};
229
230
extern const char RISCVRegStrings[] = {
231
  /* 0 */ 'X', '1', '0', 0,
232
  /* 4 */ 'X', '2', '0', 0,
233
  /* 8 */ 'X', '3', '0', 0,
234
  /* 12 */ 'X', '0', 0,
235
  /* 15 */ 'X', '1', '1', 0,
236
  /* 19 */ 'X', '2', '1', 0,
237
  /* 23 */ 'X', '3', '1', 0,
238
  /* 27 */ 'X', '1', 0,
239
  /* 30 */ 'X', '1', '2', 0,
240
  /* 34 */ 'X', '2', '2', 0,
241
  /* 38 */ 'F', '1', '0', '_', '3', '2', 0,
242
  /* 45 */ 'F', '2', '0', '_', '3', '2', 0,
243
  /* 52 */ 'F', '3', '0', '_', '3', '2', 0,
244
  /* 59 */ 'F', '0', '_', '3', '2', 0,
245
  /* 65 */ 'F', '1', '1', '_', '3', '2', 0,
246
  /* 72 */ 'F', '2', '1', '_', '3', '2', 0,
247
  /* 79 */ 'F', '3', '1', '_', '3', '2', 0,
248
  /* 86 */ 'F', '1', '_', '3', '2', 0,
249
  /* 92 */ 'F', '1', '2', '_', '3', '2', 0,
250
  /* 99 */ 'F', '2', '2', '_', '3', '2', 0,
251
  /* 106 */ 'F', '2', '_', '3', '2', 0,
252
  /* 112 */ 'F', '1', '3', '_', '3', '2', 0,
253
  /* 119 */ 'F', '2', '3', '_', '3', '2', 0,
254
  /* 126 */ 'F', '3', '_', '3', '2', 0,
255
  /* 132 */ 'F', '1', '4', '_', '3', '2', 0,
256
  /* 139 */ 'F', '2', '4', '_', '3', '2', 0,
257
  /* 146 */ 'F', '4', '_', '3', '2', 0,
258
  /* 152 */ 'F', '1', '5', '_', '3', '2', 0,
259
  /* 159 */ 'F', '2', '5', '_', '3', '2', 0,
260
  /* 166 */ 'F', '5', '_', '3', '2', 0,
261
  /* 172 */ 'F', '1', '6', '_', '3', '2', 0,
262
  /* 179 */ 'F', '2', '6', '_', '3', '2', 0,
263
  /* 186 */ 'F', '6', '_', '3', '2', 0,
264
  /* 192 */ 'F', '1', '7', '_', '3', '2', 0,
265
  /* 199 */ 'F', '2', '7', '_', '3', '2', 0,
266
  /* 206 */ 'F', '7', '_', '3', '2', 0,
267
  /* 212 */ 'F', '1', '8', '_', '3', '2', 0,
268
  /* 219 */ 'F', '2', '8', '_', '3', '2', 0,
269
  /* 226 */ 'F', '8', '_', '3', '2', 0,
270
  /* 232 */ 'F', '1', '9', '_', '3', '2', 0,
271
  /* 239 */ 'F', '2', '9', '_', '3', '2', 0,
272
  /* 246 */ 'F', '9', '_', '3', '2', 0,
273
  /* 252 */ 'X', '2', 0,
274
  /* 255 */ 'X', '1', '3', 0,
275
  /* 259 */ 'X', '2', '3', 0,
276
  /* 263 */ 'X', '3', 0,
277
  /* 266 */ 'X', '1', '4', 0,
278
  /* 270 */ 'X', '2', '4', 0,
279
  /* 274 */ 'F', '1', '0', '_', '6', '4', 0,
280
  /* 281 */ 'F', '2', '0', '_', '6', '4', 0,
281
  /* 288 */ 'F', '3', '0', '_', '6', '4', 0,
282
  /* 295 */ 'F', '0', '_', '6', '4', 0,
283
  /* 301 */ 'F', '1', '1', '_', '6', '4', 0,
284
  /* 308 */ 'F', '2', '1', '_', '6', '4', 0,
285
  /* 315 */ 'F', '3', '1', '_', '6', '4', 0,
286
  /* 322 */ 'F', '1', '_', '6', '4', 0,
287
  /* 328 */ 'F', '1', '2', '_', '6', '4', 0,
288
  /* 335 */ 'F', '2', '2', '_', '6', '4', 0,
289
  /* 342 */ 'F', '2', '_', '6', '4', 0,
290
  /* 348 */ 'F', '1', '3', '_', '6', '4', 0,
291
  /* 355 */ 'F', '2', '3', '_', '6', '4', 0,
292
  /* 362 */ 'F', '3', '_', '6', '4', 0,
293
  /* 368 */ 'F', '1', '4', '_', '6', '4', 0,
294
  /* 375 */ 'F', '2', '4', '_', '6', '4', 0,
295
  /* 382 */ 'F', '4', '_', '6', '4', 0,
296
  /* 388 */ 'F', '1', '5', '_', '6', '4', 0,
297
  /* 395 */ 'F', '2', '5', '_', '6', '4', 0,
298
  /* 402 */ 'F', '5', '_', '6', '4', 0,
299
  /* 408 */ 'F', '1', '6', '_', '6', '4', 0,
300
  /* 415 */ 'F', '2', '6', '_', '6', '4', 0,
301
  /* 422 */ 'F', '6', '_', '6', '4', 0,
302
  /* 428 */ 'F', '1', '7', '_', '6', '4', 0,
303
  /* 435 */ 'F', '2', '7', '_', '6', '4', 0,
304
  /* 442 */ 'F', '7', '_', '6', '4', 0,
305
  /* 448 */ 'F', '1', '8', '_', '6', '4', 0,
306
  /* 455 */ 'F', '2', '8', '_', '6', '4', 0,
307
  /* 462 */ 'F', '8', '_', '6', '4', 0,
308
  /* 468 */ 'F', '1', '9', '_', '6', '4', 0,
309
  /* 475 */ 'F', '2', '9', '_', '6', '4', 0,
310
  /* 482 */ 'F', '9', '_', '6', '4', 0,
311
  /* 488 */ 'X', '4', 0,
312
  /* 491 */ 'X', '1', '5', 0,
313
  /* 495 */ 'X', '2', '5', 0,
314
  /* 499 */ 'X', '5', 0,
315
  /* 502 */ 'X', '1', '6', 0,
316
  /* 506 */ 'X', '2', '6', 0,
317
  /* 510 */ 'X', '6', 0,
318
  /* 513 */ 'X', '1', '7', 0,
319
  /* 517 */ 'X', '2', '7', 0,
320
  /* 521 */ 'X', '7', 0,
321
  /* 524 */ 'X', '1', '8', 0,
322
  /* 528 */ 'X', '2', '8', 0,
323
  /* 532 */ 'X', '8', 0,
324
  /* 535 */ 'X', '1', '9', 0,
325
  /* 539 */ 'X', '2', '9', 0,
326
  /* 543 */ 'X', '9', 0,
327
};
328
329
extern const MCRegisterDesc RISCVRegDesc[] = { // Descriptors
330
  { 3, 0, 0, 0, 0, 0 },
331
  { 12, 1, 1, 1, 1057, 0 },
332
  { 27, 1, 1, 1, 1057, 0 },
333
  { 252, 1, 1, 1, 1057, 0 },
334
  { 263, 1, 1, 1, 1057, 0 },
335
  { 488, 1, 1, 1, 1057, 0 },
336
  { 499, 1, 1, 1, 1057, 0 },
337
  { 510, 1, 1, 1, 1057, 0 },
338
  { 521, 1, 1, 1, 1057, 0 },
339
  { 532, 1, 1, 1, 1057, 0 },
340
  { 543, 1, 1, 1, 1057, 0 },
341
  { 0, 1, 1, 1, 1057, 0 },
342
  { 15, 1, 1, 1, 1057, 0 },
343
  { 30, 1, 1, 1, 1057, 0 },
344
  { 255, 1, 1, 1, 1057, 0 },
345
  { 266, 1, 1, 1, 1057, 0 },
346
  { 491, 1, 1, 1, 1057, 0 },
347
  { 502, 1, 1, 1, 1057, 0 },
348
  { 513, 1, 1, 1, 1057, 0 },
349
  { 524, 1, 1, 1, 1057, 0 },
350
  { 535, 1, 1, 1, 1057, 0 },
351
  { 4, 1, 1, 1, 1057, 0 },
352
  { 19, 1, 1, 1, 1057, 0 },
353
  { 34, 1, 1, 1, 1057, 0 },
354
  { 259, 1, 1, 1, 1057, 0 },
355
  { 270, 1, 1, 1, 1057, 0 },
356
  { 495, 1, 1, 1, 1057, 0 },
357
  { 506, 1, 1, 1, 1057, 0 },
358
  { 517, 1, 1, 1, 1057, 0 },
359
  { 528, 1, 1, 1, 1057, 0 },
360
  { 539, 1, 1, 1, 1057, 0 },
361
  { 8, 1, 1, 1, 1057, 0 },
362
  { 23, 1, 1, 1, 1057, 0 },
363
  { 59, 1, 0, 1, 32, 0 },
364
  { 295, 66, 1, 0, 32, 2 },
365
  { 86, 1, 0, 1, 64, 0 },
366
  { 322, 66, 1, 0, 64, 2 },
367
  { 106, 1, 0, 1, 96, 0 },
368
  { 342, 66, 1, 0, 96, 2 },
369
  { 126, 1, 0, 1, 128, 0 },
370
  { 362, 66, 1, 0, 128, 2 },
371
  { 146, 1, 0, 1, 160, 0 },
372
  { 382, 66, 1, 0, 160, 2 },
373
  { 166, 1, 0, 1, 192, 0 },
374
  { 402, 66, 1, 0, 192, 2 },
375
  { 186, 1, 0, 1, 224, 0 },
376
  { 422, 66, 1, 0, 224, 2 },
377
  { 206, 1, 0, 1, 256, 0 },
378
  { 442, 66, 1, 0, 256, 2 },
379
  { 226, 1, 0, 1, 288, 0 },
380
  { 462, 66, 1, 0, 288, 2 },
381
  { 246, 1, 0, 1, 320, 0 },
382
  { 482, 66, 1, 0, 320, 2 },
383
  { 38, 1, 0, 1, 352, 0 },
384
  { 274, 66, 1, 0, 352, 2 },
385
  { 65, 1, 0, 1, 384, 0 },
386
  { 301, 66, 1, 0, 384, 2 },
387
  { 92, 1, 0, 1, 416, 0 },
388
  { 328, 66, 1, 0, 416, 2 },
389
  { 112, 1, 0, 1, 448, 0 },
390
  { 348, 66, 1, 0, 448, 2 },
391
  { 132, 1, 0, 1, 480, 0 },
392
  { 368, 66, 1, 0, 480, 2 },
393
  { 152, 1, 0, 1, 512, 0 },
394
  { 388, 66, 1, 0, 512, 2 },
395
  { 172, 1, 0, 1, 544, 0 },
396
  { 408, 66, 1, 0, 544, 2 },
397
  { 192, 1, 0, 1, 576, 0 },
398
  { 428, 66, 1, 0, 576, 2 },
399
  { 212, 1, 0, 1, 608, 0 },
400
  { 448, 66, 1, 0, 608, 2 },
401
  { 232, 1, 0, 1, 640, 0 },
402
  { 468, 66, 1, 0, 640, 2 },
403
  { 45, 1, 0, 1, 672, 0 },
404
  { 281, 66, 1, 0, 672, 2 },
405
  { 72, 1, 0, 1, 704, 0 },
406
  { 308, 66, 1, 0, 704, 2 },
407
  { 99, 1, 0, 1, 736, 0 },
408
  { 335, 66, 1, 0, 736, 2 },
409
  { 119, 1, 0, 1, 768, 0 },
410
  { 355, 66, 1, 0, 768, 2 },
411
  { 139, 1, 0, 1, 800, 0 },
412
  { 375, 66, 1, 0, 800, 2 },
413
  { 159, 1, 0, 1, 832, 0 },
414
  { 395, 66, 1, 0, 832, 2 },
415
  { 179, 1, 0, 1, 864, 0 },
416
  { 415, 66, 1, 0, 864, 2 },
417
  { 199, 1, 0, 1, 896, 0 },
418
  { 435, 66, 1, 0, 896, 2 },
419
  { 219, 1, 0, 1, 928, 0 },
420
  { 455, 66, 1, 0, 928, 2 },
421
  { 239, 1, 0, 1, 960, 0 },
422
  { 475, 66, 1, 0, 960, 2 },
423
  { 52, 1, 0, 1, 992, 0 },
424
  { 288, 66, 1, 0, 992, 2 },
425
  { 79, 1, 0, 1, 1024, 0 },
426
  { 315, 66, 1, 0, 1024, 2 },
427
};
428
429
extern const MCPhysReg RISCVRegUnitRoots[][2] = {
430
  { RISCV::X0 },
431
  { RISCV::X1 },
432
  { RISCV::X2 },
433
  { RISCV::X3 },
434
  { RISCV::X4 },
435
  { RISCV::X5 },
436
  { RISCV::X6 },
437
  { RISCV::X7 },
438
  { RISCV::X8 },
439
  { RISCV::X9 },
440
  { RISCV::X10 },
441
  { RISCV::X11 },
442
  { RISCV::X12 },
443
  { RISCV::X13 },
444
  { RISCV::X14 },
445
  { RISCV::X15 },
446
  { RISCV::X16 },
447
  { RISCV::X17 },
448
  { RISCV::X18 },
449
  { RISCV::X19 },
450
  { RISCV::X20 },
451
  { RISCV::X21 },
452
  { RISCV::X22 },
453
  { RISCV::X23 },
454
  { RISCV::X24 },
455
  { RISCV::X25 },
456
  { RISCV::X26 },
457
  { RISCV::X27 },
458
  { RISCV::X28 },
459
  { RISCV::X29 },
460
  { RISCV::X30 },
461
  { RISCV::X31 },
462
  { RISCV::F0_32 },
463
  { RISCV::F1_32 },
464
  { RISCV::F2_32 },
465
  { RISCV::F3_32 },
466
  { RISCV::F4_32 },
467
  { RISCV::F5_32 },
468
  { RISCV::F6_32 },
469
  { RISCV::F7_32 },
470
  { RISCV::F8_32 },
471
  { RISCV::F9_32 },
472
  { RISCV::F10_32 },
473
  { RISCV::F11_32 },
474
  { RISCV::F12_32 },
475
  { RISCV::F13_32 },
476
  { RISCV::F14_32 },
477
  { RISCV::F15_32 },
478
  { RISCV::F16_32 },
479
  { RISCV::F17_32 },
480
  { RISCV::F18_32 },
481
  { RISCV::F19_32 },
482
  { RISCV::F20_32 },
483
  { RISCV::F21_32 },
484
  { RISCV::F22_32 },
485
  { RISCV::F23_32 },
486
  { RISCV::F24_32 },
487
  { RISCV::F25_32 },
488
  { RISCV::F26_32 },
489
  { RISCV::F27_32 },
490
  { RISCV::F28_32 },
491
  { RISCV::F29_32 },
492
  { RISCV::F30_32 },
493
  { RISCV::F31_32 },
494
};
495
496
namespace {     // Register classes...
497
  // FPR32 Register Class...
498
  const MCPhysReg FPR32[] = {
499
    RISCV::F0_32, RISCV::F1_32, RISCV::F2_32, RISCV::F3_32, RISCV::F4_32, RISCV::F5_32, RISCV::F6_32, RISCV::F7_32, RISCV::F10_32, RISCV::F11_32, RISCV::F12_32, RISCV::F13_32, RISCV::F14_32, RISCV::F15_32, RISCV::F16_32, RISCV::F17_32, RISCV::F28_32, RISCV::F29_32, RISCV::F30_32, RISCV::F31_32, RISCV::F8_32, RISCV::F9_32, RISCV::F18_32, RISCV::F19_32, RISCV::F20_32, RISCV::F21_32, RISCV::F22_32, RISCV::F23_32, RISCV::F24_32, RISCV::F25_32, RISCV::F26_32, RISCV::F27_32, 
500
  };
501
502
  // FPR32 Bit set.
503
  const uint8_t FPR32Bits[] = {
504
    0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
505
  };
506
507
  // GPR Register Class...
508
  const MCPhysReg GPR[] = {
509
    RISCV::X10, RISCV::X11, RISCV::X12, RISCV::X13, RISCV::X14, RISCV::X15, RISCV::X16, RISCV::X17, RISCV::X5, RISCV::X6, RISCV::X7, RISCV::X28, RISCV::X29, RISCV::X30, RISCV::X31, RISCV::X8, RISCV::X9, RISCV::X18, RISCV::X19, RISCV::X20, RISCV::X21, RISCV::X22, RISCV::X23, RISCV::X24, RISCV::X25, RISCV::X26, RISCV::X27, RISCV::X0, RISCV::X1, RISCV::X2, RISCV::X3, RISCV::X4, 
510
  };
511
512
  // GPR Bit set.
513
  const uint8_t GPRBits[] = {
514
    0xfe, 0xff, 0xff, 0xff, 0x01, 
515
  };
516
517
  // GPRNoX0 Register Class...
518
  const MCPhysReg GPRNoX0[] = {
519
    RISCV::X10, RISCV::X11, RISCV::X12, RISCV::X13, RISCV::X14, RISCV::X15, RISCV::X16, RISCV::X17, RISCV::X5, RISCV::X6, RISCV::X7, RISCV::X28, RISCV::X29, RISCV::X30, RISCV::X31, RISCV::X8, RISCV::X9, RISCV::X18, RISCV::X19, RISCV::X20, RISCV::X21, RISCV::X22, RISCV::X23, RISCV::X24, RISCV::X25, RISCV::X26, RISCV::X27, RISCV::X1, RISCV::X2, RISCV::X3, RISCV::X4, 
520
  };
521
522
  // GPRNoX0 Bit set.
523
  const uint8_t GPRNoX0Bits[] = {
524
    0xfc, 0xff, 0xff, 0xff, 0x01, 
525
  };
526
527
  // GPRNoX0X2 Register Class...
528
  const MCPhysReg GPRNoX0X2[] = {
529
    RISCV::X10, RISCV::X11, RISCV::X12, RISCV::X13, RISCV::X14, RISCV::X15, RISCV::X16, RISCV::X17, RISCV::X5, RISCV::X6, RISCV::X7, RISCV::X28, RISCV::X29, RISCV::X30, RISCV::X31, RISCV::X8, RISCV::X9, RISCV::X18, RISCV::X19, RISCV::X20, RISCV::X21, RISCV::X22, RISCV::X23, RISCV::X24, RISCV::X25, RISCV::X26, RISCV::X27, RISCV::X1, RISCV::X3, RISCV::X4, 
530
  };
531
532
  // GPRNoX0X2 Bit set.
533
  const uint8_t GPRNoX0X2Bits[] = {
534
    0xf4, 0xff, 0xff, 0xff, 0x01, 
535
  };
536
537
  // GPRTC Register Class...
538
  const MCPhysReg GPRTC[] = {
539
    RISCV::X5, RISCV::X6, RISCV::X7, RISCV::X10, RISCV::X11, RISCV::X12, RISCV::X13, RISCV::X14, RISCV::X15, RISCV::X16, RISCV::X17, RISCV::X28, RISCV::X29, RISCV::X30, RISCV::X31, 
540
  };
541
542
  // GPRTC Bit set.
543
  const uint8_t GPRTCBits[] = {
544
    0xc0, 0xf9, 0x07, 0xe0, 0x01, 
545
  };
546
547
  // FPR32C Register Class...
548
  const MCPhysReg FPR32C[] = {
549
    RISCV::F10_32, RISCV::F11_32, RISCV::F12_32, RISCV::F13_32, RISCV::F14_32, RISCV::F15_32, RISCV::F8_32, RISCV::F9_32, 
550
  };
551
552
  // FPR32C Bit set.
553
  const uint8_t FPR32CBits[] = {
554
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 
555
  };
556
557
  // GPRC Register Class...
558
  const MCPhysReg GPRC[] = {
559
    RISCV::X10, RISCV::X11, RISCV::X12, RISCV::X13, RISCV::X14, RISCV::X15, RISCV::X8, RISCV::X9, 
560
  };
561
562
  // GPRC Bit set.
563
  const uint8_t GPRCBits[] = {
564
    0x00, 0xfe, 0x01, 
565
  };
566
567
  // GPRC_and_GPRTC Register Class...
568
  const MCPhysReg GPRC_and_GPRTC[] = {
569
    RISCV::X10, RISCV::X11, RISCV::X12, RISCV::X13, RISCV::X14, RISCV::X15, 
570
  };
571
572
  // GPRC_and_GPRTC Bit set.
573
  const uint8_t GPRC_and_GPRTCBits[] = {
574
    0x00, 0xf8, 0x01, 
575
  };
576
577
  // SP Register Class...
578
  const MCPhysReg SP[] = {
579
    RISCV::X2, 
580
  };
581
582
  // SP Bit set.
583
  const uint8_t SPBits[] = {
584
    0x08, 
585
  };
586
587
  // FPR64 Register Class...
588
  const MCPhysReg FPR64[] = {
589
    RISCV::F0_64, RISCV::F1_64, RISCV::F2_64, RISCV::F3_64, RISCV::F4_64, RISCV::F5_64, RISCV::F6_64, RISCV::F7_64, RISCV::F10_64, RISCV::F11_64, RISCV::F12_64, RISCV::F13_64, RISCV::F14_64, RISCV::F15_64, RISCV::F16_64, RISCV::F17_64, RISCV::F28_64, RISCV::F29_64, RISCV::F30_64, RISCV::F31_64, RISCV::F8_64, RISCV::F9_64, RISCV::F18_64, RISCV::F19_64, RISCV::F20_64, RISCV::F21_64, RISCV::F22_64, RISCV::F23_64, RISCV::F24_64, RISCV::F25_64, RISCV::F26_64, RISCV::F27_64, 
590
  };
591
592
  // FPR64 Bit set.
593
  const uint8_t FPR64Bits[] = {
594
    0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 
595
  };
596
597
  // FPR64C Register Class...
598
  const MCPhysReg FPR64C[] = {
599
    RISCV::F10_64, RISCV::F11_64, RISCV::F12_64, RISCV::F13_64, RISCV::F14_64, RISCV::F15_64, RISCV::F8_64, RISCV::F9_64, 
600
  };
601
602
  // FPR64C Bit set.
603
  const uint8_t FPR64CBits[] = {
604
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 
605
  };
606
607
} // end anonymous namespace
608
609
extern const char RISCVRegClassStrings[] = {
610
  /* 0 */ 'G', 'P', 'R', 'N', 'o', 'X', '0', 0,
611
  /* 8 */ 'F', 'P', 'R', '3', '2', 0,
612
  /* 14 */ 'G', 'P', 'R', 'N', 'o', 'X', '0', 'X', '2', 0,
613
  /* 24 */ 'F', 'P', 'R', '6', '4', 0,
614
  /* 30 */ 'F', 'P', 'R', '3', '2', 'C', 0,
615
  /* 37 */ 'F', 'P', 'R', '6', '4', 'C', 0,
616
  /* 44 */ 'G', 'P', 'R', 'C', 0,
617
  /* 49 */ 'G', 'P', 'R', 'C', '_', 'a', 'n', 'd', '_', 'G', 'P', 'R', 'T', 'C', 0,
618
  /* 64 */ 'S', 'P', 0,
619
  /* 67 */ 'G', 'P', 'R', 0,
620
};
621
622
extern const MCRegisterClass RISCVMCRegisterClasses[] = {
623
  { FPR32, FPR32Bits, 8, 32, sizeof(FPR32Bits), RISCV::FPR32RegClassID, 1, true },
624
  { GPR, GPRBits, 67, 32, sizeof(GPRBits), RISCV::GPRRegClassID, 1, true },
625
  { GPRNoX0, GPRNoX0Bits, 0, 31, sizeof(GPRNoX0Bits), RISCV::GPRNoX0RegClassID, 1, true },
626
  { GPRNoX0X2, GPRNoX0X2Bits, 14, 30, sizeof(GPRNoX0X2Bits), RISCV::GPRNoX0X2RegClassID, 1, true },
627
  { GPRTC, GPRTCBits, 58, 15, sizeof(GPRTCBits), RISCV::GPRTCRegClassID, 1, true },
628
  { FPR32C, FPR32CBits, 30, 8, sizeof(FPR32CBits), RISCV::FPR32CRegClassID, 1, true },
629
  { GPRC, GPRCBits, 44, 8, sizeof(GPRCBits), RISCV::GPRCRegClassID, 1, true },
630
  { GPRC_and_GPRTC, GPRC_and_GPRTCBits, 49, 6, sizeof(GPRC_and_GPRTCBits), RISCV::GPRC_and_GPRTCRegClassID, 1, true },
631
  { SP, SPBits, 64, 1, sizeof(SPBits), RISCV::SPRegClassID, 1, true },
632
  { FPR64, FPR64Bits, 24, 32, sizeof(FPR64Bits), RISCV::FPR64RegClassID, 1, true },
633
  { FPR64C, FPR64CBits, 37, 8, sizeof(FPR64CBits), RISCV::FPR64CRegClassID, 1, true },
634
};
635
636
// RISCV Dwarf<->LLVM register mappings.
637
extern const MCRegisterInfo::DwarfLLVMRegPair RISCVDwarfFlavour0Dwarf2L[] = {
638
  { 0U, RISCV::X0 },
639
  { 1U, RISCV::X1 },
640
  { 2U, RISCV::X2 },
641
  { 3U, RISCV::X3 },
642
  { 4U, RISCV::X4 },
643
  { 5U, RISCV::X5 },
644
  { 6U, RISCV::X6 },
645
  { 7U, RISCV::X7 },
646
  { 8U, RISCV::X8 },
647
  { 9U, RISCV::X9 },
648
  { 10U, RISCV::X10 },
649
  { 11U, RISCV::X11 },
650
  { 12U, RISCV::X12 },
651
  { 13U, RISCV::X13 },
652
  { 14U, RISCV::X14 },
653
  { 15U, RISCV::X15 },
654
  { 16U, RISCV::X16 },
655
  { 17U, RISCV::X17 },
656
  { 18U, RISCV::X18 },
657
  { 19U, RISCV::X19 },
658
  { 20U, RISCV::X20 },
659
  { 21U, RISCV::X21 },
660
  { 22U, RISCV::X22 },
661
  { 23U, RISCV::X23 },
662
  { 24U, RISCV::X24 },
663
  { 25U, RISCV::X25 },
664
  { 26U, RISCV::X26 },
665
  { 27U, RISCV::X27 },
666
  { 28U, RISCV::X28 },
667
  { 29U, RISCV::X29 },
668
  { 30U, RISCV::X30 },
669
  { 31U, RISCV::X31 },
670
  { 32U, RISCV::F0_64 },
671
  { 33U, RISCV::F1_64 },
672
  { 34U, RISCV::F2_64 },
673
  { 35U, RISCV::F3_64 },
674
  { 36U, RISCV::F4_64 },
675
  { 37U, RISCV::F5_64 },
676
  { 38U, RISCV::F6_64 },
677
  { 39U, RISCV::F7_64 },
678
  { 40U, RISCV::F8_64 },
679
  { 41U, RISCV::F9_64 },
680
  { 42U, RISCV::F10_64 },
681
  { 43U, RISCV::F11_64 },
682
  { 44U, RISCV::F12_64 },
683
  { 45U, RISCV::F13_64 },
684
  { 46U, RISCV::F14_64 },
685
  { 47U, RISCV::F15_64 },
686
  { 48U, RISCV::F16_64 },
687
  { 49U, RISCV::F17_64 },
688
  { 50U, RISCV::F18_64 },
689
  { 51U, RISCV::F19_64 },
690
  { 52U, RISCV::F20_64 },
691
  { 53U, RISCV::F21_64 },
692
  { 54U, RISCV::F22_64 },
693
  { 55U, RISCV::F23_64 },
694
  { 56U, RISCV::F24_64 },
695
  { 57U, RISCV::F25_64 },
696
  { 58U, RISCV::F26_64 },
697
  { 59U, RISCV::F27_64 },
698
  { 60U, RISCV::F28_64 },
699
  { 61U, RISCV::F29_64 },
700
  { 62U, RISCV::F30_64 },
701
  { 63U, RISCV::F31_64 },
702
};
703
extern const unsigned RISCVDwarfFlavour0Dwarf2LSize = array_lengthof(RISCVDwarfFlavour0Dwarf2L);
704
705
extern const MCRegisterInfo::DwarfLLVMRegPair RISCVEHFlavour0Dwarf2L[] = {
706
  { 0U, RISCV::X0 },
707
  { 1U, RISCV::X1 },
708
  { 2U, RISCV::X2 },
709
  { 3U, RISCV::X3 },
710
  { 4U, RISCV::X4 },
711
  { 5U, RISCV::X5 },
712
  { 6U, RISCV::X6 },
713
  { 7U, RISCV::X7 },
714
  { 8U, RISCV::X8 },
715
  { 9U, RISCV::X9 },
716
  { 10U, RISCV::X10 },
717
  { 11U, RISCV::X11 },
718
  { 12U, RISCV::X12 },
719
  { 13U, RISCV::X13 },
720
  { 14U, RISCV::X14 },
721
  { 15U, RISCV::X15 },
722
  { 16U, RISCV::X16 },
723
  { 17U, RISCV::X17 },
724
  { 18U, RISCV::X18 },
725
  { 19U, RISCV::X19 },
726
  { 20U, RISCV::X20 },
727
  { 21U, RISCV::X21 },
728
  { 22U, RISCV::X22 },
729
  { 23U, RISCV::X23 },
730
  { 24U, RISCV::X24 },
731
  { 25U, RISCV::X25 },
732
  { 26U, RISCV::X26 },
733
  { 27U, RISCV::X27 },
734
  { 28U, RISCV::X28 },
735
  { 29U, RISCV::X29 },
736
  { 30U, RISCV::X30 },
737
  { 31U, RISCV::X31 },
738
  { 32U, RISCV::F0_64 },
739
  { 33U, RISCV::F1_64 },
740
  { 34U, RISCV::F2_64 },
741
  { 35U, RISCV::F3_64 },
742
  { 36U, RISCV::F4_64 },
743
  { 37U, RISCV::F5_64 },
744
  { 38U, RISCV::F6_64 },
745
  { 39U, RISCV::F7_64 },
746
  { 40U, RISCV::F8_64 },
747
  { 41U, RISCV::F9_64 },
748
  { 42U, RISCV::F10_64 },
749
  { 43U, RISCV::F11_64 },
750
  { 44U, RISCV::F12_64 },
751
  { 45U, RISCV::F13_64 },
752
  { 46U, RISCV::F14_64 },
753
  { 47U, RISCV::F15_64 },
754
  { 48U, RISCV::F16_64 },
755
  { 49U, RISCV::F17_64 },
756
  { 50U, RISCV::F18_64 },
757
  { 51U, RISCV::F19_64 },
758
  { 52U, RISCV::F20_64 },
759
  { 53U, RISCV::F21_64 },
760
  { 54U, RISCV::F22_64 },
761
  { 55U, RISCV::F23_64 },
762
  { 56U, RISCV::F24_64 },
763
  { 57U, RISCV::F25_64 },
764
  { 58U, RISCV::F26_64 },
765
  { 59U, RISCV::F27_64 },
766
  { 60U, RISCV::F28_64 },
767
  { 61U, RISCV::F29_64 },
768
  { 62U, RISCV::F30_64 },
769
  { 63U, RISCV::F31_64 },
770
};
771
extern const unsigned RISCVEHFlavour0Dwarf2LSize = array_lengthof(RISCVEHFlavour0Dwarf2L);
772
773
extern const MCRegisterInfo::DwarfLLVMRegPair RISCVDwarfFlavour0L2Dwarf[] = {
774
  { RISCV::X0, 0U },
775
  { RISCV::X1, 1U },
776
  { RISCV::X2, 2U },
777
  { RISCV::X3, 3U },
778
  { RISCV::X4, 4U },
779
  { RISCV::X5, 5U },
780
  { RISCV::X6, 6U },
781
  { RISCV::X7, 7U },
782
  { RISCV::X8, 8U },
783
  { RISCV::X9, 9U },
784
  { RISCV::X10, 10U },
785
  { RISCV::X11, 11U },
786
  { RISCV::X12, 12U },
787
  { RISCV::X13, 13U },
788
  { RISCV::X14, 14U },
789
  { RISCV::X15, 15U },
790
  { RISCV::X16, 16U },
791
  { RISCV::X17, 17U },
792
  { RISCV::X18, 18U },
793
  { RISCV::X19, 19U },
794
  { RISCV::X20, 20U },
795
  { RISCV::X21, 21U },
796
  { RISCV::X22, 22U },
797
  { RISCV::X23, 23U },
798
  { RISCV::X24, 24U },
799
  { RISCV::X25, 25U },
800
  { RISCV::X26, 26U },
801
  { RISCV::X27, 27U },
802
  { RISCV::X28, 28U },
803
  { RISCV::X29, 29U },
804
  { RISCV::X30, 30U },
805
  { RISCV::X31, 31U },
806
  { RISCV::F0_32, 32U },
807
  { RISCV::F0_64, 32U },
808
  { RISCV::F1_32, 33U },
809
  { RISCV::F1_64, 33U },
810
  { RISCV::F2_32, 34U },
811
  { RISCV::F2_64, 34U },
812
  { RISCV::F3_32, 35U },
813
  { RISCV::F3_64, 35U },
814
  { RISCV::F4_32, 36U },
815
  { RISCV::F4_64, 36U },
816
  { RISCV::F5_32, 37U },
817
  { RISCV::F5_64, 37U },
818
  { RISCV::F6_32, 38U },
819
  { RISCV::F6_64, 38U },
820
  { RISCV::F7_32, 39U },
821
  { RISCV::F7_64, 39U },
822
  { RISCV::F8_32, 40U },
823
  { RISCV::F8_64, 40U },
824
  { RISCV::F9_32, 41U },
825
  { RISCV::F9_64, 41U },
826
  { RISCV::F10_32, 42U },
827
  { RISCV::F10_64, 42U },
828
  { RISCV::F11_32, 43U },
829
  { RISCV::F11_64, 43U },
830
  { RISCV::F12_32, 44U },
831
  { RISCV::F12_64, 44U },
832
  { RISCV::F13_32, 45U },
833
  { RISCV::F13_64, 45U },
834
  { RISCV::F14_32, 46U },
835
  { RISCV::F14_64, 46U },
836
  { RISCV::F15_32, 47U },
837
  { RISCV::F15_64, 47U },
838
  { RISCV::F16_32, 48U },
839
  { RISCV::F16_64, 48U },
840
  { RISCV::F17_32, 49U },
841
  { RISCV::F17_64, 49U },
842
  { RISCV::F18_32, 50U },
843
  { RISCV::F18_64, 50U },
844
  { RISCV::F19_32, 51U },
845
  { RISCV::F19_64, 51U },
846
  { RISCV::F20_32, 52U },
847
  { RISCV::F20_64, 52U },
848
  { RISCV::F21_32, 53U },
849
  { RISCV::F21_64, 53U },
850
  { RISCV::F22_32, 54U },
851
  { RISCV::F22_64, 54U },
852
  { RISCV::F23_32, 55U },
853
  { RISCV::F23_64, 55U },
854
  { RISCV::F24_32, 56U },
855
  { RISCV::F24_64, 56U },
856
  { RISCV::F25_32, 57U },
857
  { RISCV::F25_64, 57U },
858
  { RISCV::F26_32, 58U },
859
  { RISCV::F26_64, 58U },
860
  { RISCV::F27_32, 59U },
861
  { RISCV::F27_64, 59U },
862
  { RISCV::F28_32, 60U },
863
  { RISCV::F28_64, 60U },
864
  { RISCV::F29_32, 61U },
865
  { RISCV::F29_64, 61U },
866
  { RISCV::F30_32, 62U },
867
  { RISCV::F30_64, 62U },
868
  { RISCV::F31_32, 63U },
869
  { RISCV::F31_64, 63U },
870
};
871
extern const unsigned RISCVDwarfFlavour0L2DwarfSize = array_lengthof(RISCVDwarfFlavour0L2Dwarf);
872
873
extern const MCRegisterInfo::DwarfLLVMRegPair RISCVEHFlavour0L2Dwarf[] = {
874
  { RISCV::X0, 0U },
875
  { RISCV::X1, 1U },
876
  { RISCV::X2, 2U },
877
  { RISCV::X3, 3U },
878
  { RISCV::X4, 4U },
879
  { RISCV::X5, 5U },
880
  { RISCV::X6, 6U },
881
  { RISCV::X7, 7U },
882
  { RISCV::X8, 8U },
883
  { RISCV::X9, 9U },
884
  { RISCV::X10, 10U },
885
  { RISCV::X11, 11U },
886
  { RISCV::X12, 12U },
887
  { RISCV::X13, 13U },
888
  { RISCV::X14, 14U },
889
  { RISCV::X15, 15U },
890
  { RISCV::X16, 16U },
891
  { RISCV::X17, 17U },
892
  { RISCV::X18, 18U },
893
  { RISCV::X19, 19U },
894
  { RISCV::X20, 20U },
895
  { RISCV::X21, 21U },
896
  { RISCV::X22, 22U },
897
  { RISCV::X23, 23U },
898
  { RISCV::X24, 24U },
899
  { RISCV::X25, 25U },
900
  { RISCV::X26, 26U },
901
  { RISCV::X27, 27U },
902
  { RISCV::X28, 28U },
903
  { RISCV::X29, 29U },
904
  { RISCV::X30, 30U },
905
  { RISCV::X31, 31U },
906
  { RISCV::F0_32, 32U },
907
  { RISCV::F0_64, 32U },
908
  { RISCV::F1_32, 33U },
909
  { RISCV::F1_64, 33U },
910
  { RISCV::F2_32, 34U },
911
  { RISCV::F2_64, 34U },
912
  { RISCV::F3_32, 35U },
913
  { RISCV::F3_64, 35U },
914
  { RISCV::F4_32, 36U },
915
  { RISCV::F4_64, 36U },
916
  { RISCV::F5_32, 37U },
917
  { RISCV::F5_64, 37U },
918
  { RISCV::F6_32, 38U },
919
  { RISCV::F6_64, 38U },
920
  { RISCV::F7_32, 39U },
921
  { RISCV::F7_64, 39U },
922
  { RISCV::F8_32, 40U },
923
  { RISCV::F8_64, 40U },
924
  { RISCV::F9_32, 41U },
925
  { RISCV::F9_64, 41U },
926
  { RISCV::F10_32, 42U },
927
  { RISCV::F10_64, 42U },
928
  { RISCV::F11_32, 43U },
929
  { RISCV::F11_64, 43U },
930
  { RISCV::F12_32, 44U },
931
  { RISCV::F12_64, 44U },
932
  { RISCV::F13_32, 45U },
933
  { RISCV::F13_64, 45U },
934
  { RISCV::F14_32, 46U },
935
  { RISCV::F14_64, 46U },
936
  { RISCV::F15_32, 47U },
937
  { RISCV::F15_64, 47U },
938
  { RISCV::F16_32, 48U },
939
  { RISCV::F16_64, 48U },
940
  { RISCV::F17_32, 49U },
941
  { RISCV::F17_64, 49U },
942
  { RISCV::F18_32, 50U },
943
  { RISCV::F18_64, 50U },
944
  { RISCV::F19_32, 51U },
945
  { RISCV::F19_64, 51U },
946
  { RISCV::F20_32, 52U },
947
  { RISCV::F20_64, 52U },
948
  { RISCV::F21_32, 53U },
949
  { RISCV::F21_64, 53U },
950
  { RISCV::F22_32, 54U },
951
  { RISCV::F22_64, 54U },
952
  { RISCV::F23_32, 55U },
953
  { RISCV::F23_64, 55U },
954
  { RISCV::F24_32, 56U },
955
  { RISCV::F24_64, 56U },
956
  { RISCV::F25_32, 57U },
957
  { RISCV::F25_64, 57U },
958
  { RISCV::F26_32, 58U },
959
  { RISCV::F26_64, 58U },
960
  { RISCV::F27_32, 59U },
961
  { RISCV::F27_64, 59U },
962
  { RISCV::F28_32, 60U },
963
  { RISCV::F28_64, 60U },
964
  { RISCV::F29_32, 61U },
965
  { RISCV::F29_64, 61U },
966
  { RISCV::F30_32, 62U },
967
  { RISCV::F30_64, 62U },
968
  { RISCV::F31_32, 63U },
969
  { RISCV::F31_64, 63U },
970
};
971
extern const unsigned RISCVEHFlavour0L2DwarfSize = array_lengthof(RISCVEHFlavour0L2Dwarf);
972
973
extern const uint16_t RISCVRegEncodingTable[] = {
974
  0,
975
  0,
976
  1,
977
  2,
978
  3,
979
  4,
980
  5,
981
  6,
982
  7,
983
  8,
984
  9,
985
  10,
986
  11,
987
  12,
988
  13,
989
  14,
990
  15,
991
  16,
992
  17,
993
  18,
994
  19,
995
  20,
996
  21,
997
  22,
998
  23,
999
  24,
1000
  25,
1001
  26,
1002
  27,
1003
  28,
1004
  29,
1005
  30,
1006
  31,
1007
  0,
1008
  0,
1009
  1,
1010
  1,
1011
  2,
1012
  2,
1013
  3,
1014
  3,
1015
  4,
1016
  4,
1017
  5,
1018
  5,
1019
  6,
1020
  6,
1021
  7,
1022
  7,
1023
  8,
1024
  8,
1025
  9,
1026
  9,
1027
  10,
1028
  10,
1029
  11,
1030
  11,
1031
  12,
1032
  12,
1033
  13,
1034
  13,
1035
  14,
1036
  14,
1037
  15,
1038
  15,
1039
  16,
1040
  16,
1041
  17,
1042
  17,
1043
  18,
1044
  18,
1045
  19,
1046
  19,
1047
  20,
1048
  20,
1049
  21,
1050
  21,
1051
  22,
1052
  22,
1053
  23,
1054
  23,
1055
  24,
1056
  24,
1057
  25,
1058
  25,
1059
  26,
1060
  26,
1061
  27,
1062
  27,
1063
  28,
1064
  28,
1065
  29,
1066
  29,
1067
  30,
1068
  30,
1069
  31,
1070
  31,
1071
};
1072
21.8k
static inline void InitRISCVMCRegisterInfo(MCRegisterInfo *RI, unsigned RA, unsigned DwarfFlavour = 0, unsigned EHFlavour = 0, unsigned PC = 0) {
1073
21.8k
  RI->InitMCRegisterInfo(RISCVRegDesc, 97, RA, PC, RISCVMCRegisterClasses, 11, RISCVRegUnitRoots, 64, RISCVRegDiffLists, RISCVLaneMaskLists, RISCVRegStrings, RISCVRegClassStrings, RISCVSubRegIdxLists, 2,
1074
21.8k
RISCVSubRegIdxRanges, RISCVRegEncodingTable);
1075
1076
21.8k
  switch (DwarfFlavour) {
1077
0
  default:
1078
0
    llvm_unreachable("Unknown DWARF flavour");
1079
21.8k
  case 0:
1080
21.8k
    RI->mapDwarfRegsToLLVMRegs(RISCVDwarfFlavour0Dwarf2L, RISCVDwarfFlavour0Dwarf2LSize, false);
1081
21.8k
    break;
1082
21.8k
  }
1083
21.8k
  switch (EHFlavour) {
1084
0
  default:
1085
0
    llvm_unreachable("Unknown DWARF flavour");
1086
21.8k
  case 0:
1087
21.8k
    RI->mapDwarfRegsToLLVMRegs(RISCVEHFlavour0Dwarf2L, RISCVEHFlavour0Dwarf2LSize, true);
1088
21.8k
    break;
1089
21.8k
  }
1090
21.8k
  switch (DwarfFlavour) {
1091
0
  default:
1092
0
    llvm_unreachable("Unknown DWARF flavour");
1093
21.8k
  case 0:
1094
21.8k
    RI->mapLLVMRegsToDwarfRegs(RISCVDwarfFlavour0L2Dwarf, RISCVDwarfFlavour0L2DwarfSize, false);
1095
21.8k
    break;
1096
21.8k
  }
1097
21.8k
  switch (EHFlavour) {
1098
0
  default:
1099
0
    llvm_unreachable("Unknown DWARF flavour");
1100
21.8k
  case 0:
1101
21.8k
    RI->mapLLVMRegsToDwarfRegs(RISCVEHFlavour0L2Dwarf, RISCVEHFlavour0L2DwarfSize, true);
1102
21.8k
    break;
1103
21.8k
  }
1104
21.8k
}
1105
1106
} // end namespace llvm_ks
1107
1108
#endif // GET_REGINFO_MC_DESC