Coverage Report

Created: 2024-01-17 10:31

/src/build/lib/Target/Lanai/LanaiGenAsmWriter.inc
Line
Count
Source (jump to first uncovered line)
1
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2
|*                                                                            *|
3
|* Assembly Writer Source Fragment                                            *|
4
|*                                                                            *|
5
|* Automatically generated file, do not edit!                                 *|
6
|* From: Lanai.td                                                             *|
7
|*                                                                            *|
8
\*===----------------------------------------------------------------------===*/
9
10
/// getMnemonic - This method is automatically generated by tablegen
11
/// from the instruction set description.
12
0
std::pair<const char *, uint64_t> LanaiInstPrinter::getMnemonic(const MCInst *MI) {
13
14
0
#ifdef __GNUC__
15
0
#pragma GCC diagnostic push
16
0
#pragma GCC diagnostic ignored "-Woverlength-strings"
17
0
#endif
18
0
  static const char AsmStrs[] = {
19
0
  /* 0 */ "sha\t\0"
20
0
  /* 5 */ "uld.b\t\0"
21
0
  /* 12 */ "st.b\t\0"
22
0
  /* 18 */ "subb\t\0"
23
0
  /* 24 */ "sub\t\0"
24
0
  /* 29 */ "addc\t\0"
25
0
  /* 35 */ "popc\t\0"
26
0
  /* 41 */ "add\t\0"
27
0
  /* 46 */ "uld\t\0"
28
0
  /* 51 */ "and\t\0"
29
0
  /* 56 */ "sha.f\t\0"
30
0
  /* 63 */ "subb.f\t\0"
31
0
  /* 71 */ "sub.f\t\0"
32
0
  /* 78 */ "addc.f\t\0"
33
0
  /* 86 */ "add.f\t\0"
34
0
  /* 93 */ "and.f\t\0"
35
0
  /* 100 */ "sh.f\t\0"
36
0
  /* 106 */ "xor.f\t\0"
37
0
  /* 113 */ "uld.h\t\0"
38
0
  /* 120 */ "st.h\t\0"
39
0
  /* 126 */ "sh\t\0"
40
0
  /* 130 */ "xor\t\0"
41
0
  /* 135 */ "bt\t\0"
42
0
  /* 139 */ "st\t\0"
43
0
  /* 143 */ "mov\t\0"
44
0
  /* 148 */ "leadz\t\0"
45
0
  /* 155 */ "trailz\t\0"
46
0
  /* 163 */ "#ADJDYNALLOC \0"
47
0
  /* 177 */ "#ADJCALLSTACKDOWN \0"
48
0
  /* 196 */ "#ADJCALLSTACKUP \0"
49
0
  /* 213 */ "# XRay Function Patchable RET.\0"
50
0
  /* 244 */ "# XRay Typed Event Log.\0"
51
0
  /* 268 */ "# XRay Custom Event Log.\0"
52
0
  /* 293 */ "sel.\0"
53
0
  /* 298 */ "# XRay Function Enter.\0"
54
0
  /* 321 */ "# XRay Tail Call Exit.\0"
55
0
  /* 344 */ "# XRay Function Exit.\0"
56
0
  /* 366 */ "log_0\0"
57
0
  /* 372 */ "log_1\0"
58
0
  /* 378 */ "log_2\0"
59
0
  /* 384 */ "log_3\0"
60
0
  /* 390 */ "log_4\0"
61
0
  /* 396 */ "LIFETIME_END\0"
62
0
  /* 409 */ "PSEUDO_PROBE\0"
63
0
  /* 422 */ "BUNDLE\0"
64
0
  /* 429 */ "DBG_VALUE\0"
65
0
  /* 439 */ "DBG_INSTR_REF\0"
66
0
  /* 453 */ "DBG_PHI\0"
67
0
  /* 461 */ "DBG_LABEL\0"
68
0
  /* 471 */ "LIFETIME_START\0"
69
0
  /* 486 */ "DBG_VALUE_LIST\0"
70
0
  /* 501 */ "sha\0"
71
0
  /* 505 */ "subb\0"
72
0
  /* 510 */ "sub\0"
73
0
  /* 514 */ "addc\0"
74
0
  /* 519 */ "add\0"
75
0
  /* 523 */ "and\0"
76
0
  /* 527 */ "sha.f\0"
77
0
  /* 533 */ "subb.f\0"
78
0
  /* 540 */ "sub.f\0"
79
0
  /* 546 */ "addc.f\0"
80
0
  /* 553 */ "add.f\0"
81
0
  /* 559 */ "and.f\0"
82
0
  /* 565 */ "sh.f\0"
83
0
  /* 570 */ "xor.f\0"
84
0
  /* 576 */ "sh\0"
85
0
  /* 579 */ "# FEntry call\0"
86
0
  /* 593 */ "ld\t-4[%fp], %pc ! return\0"
87
0
  /* 618 */ "nop\0"
88
0
  /* 622 */ "xor\0"
89
0
  /* 626 */ "s\0"
90
0
};
91
0
#ifdef __GNUC__
92
0
#pragma GCC diagnostic pop
93
0
#endif
94
95
0
  static const uint16_t OpInfo0[] = {
96
0
    0U, // PHI
97
0
    0U, // INLINEASM
98
0
    0U, // INLINEASM_BR
99
0
    0U, // CFI_INSTRUCTION
100
0
    0U, // EH_LABEL
101
0
    0U, // GC_LABEL
102
0
    0U, // ANNOTATION_LABEL
103
0
    0U, // KILL
104
0
    0U, // EXTRACT_SUBREG
105
0
    0U, // INSERT_SUBREG
106
0
    0U, // IMPLICIT_DEF
107
0
    0U, // SUBREG_TO_REG
108
0
    0U, // COPY_TO_REGCLASS
109
0
    430U, // DBG_VALUE
110
0
    487U, // DBG_VALUE_LIST
111
0
    440U, // DBG_INSTR_REF
112
0
    454U, // DBG_PHI
113
0
    462U, // DBG_LABEL
114
0
    0U, // REG_SEQUENCE
115
0
    0U, // COPY
116
0
    423U, // BUNDLE
117
0
    472U, // LIFETIME_START
118
0
    397U, // LIFETIME_END
119
0
    410U, // PSEUDO_PROBE
120
0
    0U, // ARITH_FENCE
121
0
    0U, // STACKMAP
122
0
    580U, // FENTRY_CALL
123
0
    0U, // PATCHPOINT
124
0
    0U, // LOAD_STACK_GUARD
125
0
    0U, // PREALLOCATED_SETUP
126
0
    0U, // PREALLOCATED_ARG
127
0
    0U, // STATEPOINT
128
0
    0U, // LOCAL_ESCAPE
129
0
    0U, // FAULTING_OP
130
0
    0U, // PATCHABLE_OP
131
0
    299U, // PATCHABLE_FUNCTION_ENTER
132
0
    214U, // PATCHABLE_RET
133
0
    345U, // PATCHABLE_FUNCTION_EXIT
134
0
    322U, // PATCHABLE_TAIL_CALL
135
0
    269U, // PATCHABLE_EVENT_CALL
136
0
    245U, // PATCHABLE_TYPED_EVENT_CALL
137
0
    0U, // ICALL_BRANCH_FUNNEL
138
0
    0U, // MEMBARRIER
139
0
    0U, // JUMP_TABLE_DEBUG_INFO
140
0
    0U, // G_ASSERT_SEXT
141
0
    0U, // G_ASSERT_ZEXT
142
0
    0U, // G_ASSERT_ALIGN
143
0
    0U, // G_ADD
144
0
    0U, // G_SUB
145
0
    0U, // G_MUL
146
0
    0U, // G_SDIV
147
0
    0U, // G_UDIV
148
0
    0U, // G_SREM
149
0
    0U, // G_UREM
150
0
    0U, // G_SDIVREM
151
0
    0U, // G_UDIVREM
152
0
    0U, // G_AND
153
0
    0U, // G_OR
154
0
    0U, // G_XOR
155
0
    0U, // G_IMPLICIT_DEF
156
0
    0U, // G_PHI
157
0
    0U, // G_FRAME_INDEX
158
0
    0U, // G_GLOBAL_VALUE
159
0
    0U, // G_CONSTANT_POOL
160
0
    0U, // G_EXTRACT
161
0
    0U, // G_UNMERGE_VALUES
162
0
    0U, // G_INSERT
163
0
    0U, // G_MERGE_VALUES
164
0
    0U, // G_BUILD_VECTOR
165
0
    0U, // G_BUILD_VECTOR_TRUNC
166
0
    0U, // G_CONCAT_VECTORS
167
0
    0U, // G_PTRTOINT
168
0
    0U, // G_INTTOPTR
169
0
    0U, // G_BITCAST
170
0
    0U, // G_FREEZE
171
0
    0U, // G_CONSTANT_FOLD_BARRIER
172
0
    0U, // G_INTRINSIC_FPTRUNC_ROUND
173
0
    0U, // G_INTRINSIC_TRUNC
174
0
    0U, // G_INTRINSIC_ROUND
175
0
    0U, // G_INTRINSIC_LRINT
176
0
    0U, // G_INTRINSIC_ROUNDEVEN
177
0
    0U, // G_READCYCLECOUNTER
178
0
    0U, // G_LOAD
179
0
    0U, // G_SEXTLOAD
180
0
    0U, // G_ZEXTLOAD
181
0
    0U, // G_INDEXED_LOAD
182
0
    0U, // G_INDEXED_SEXTLOAD
183
0
    0U, // G_INDEXED_ZEXTLOAD
184
0
    0U, // G_STORE
185
0
    0U, // G_INDEXED_STORE
186
0
    0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
187
0
    0U, // G_ATOMIC_CMPXCHG
188
0
    0U, // G_ATOMICRMW_XCHG
189
0
    0U, // G_ATOMICRMW_ADD
190
0
    0U, // G_ATOMICRMW_SUB
191
0
    0U, // G_ATOMICRMW_AND
192
0
    0U, // G_ATOMICRMW_NAND
193
0
    0U, // G_ATOMICRMW_OR
194
0
    0U, // G_ATOMICRMW_XOR
195
0
    0U, // G_ATOMICRMW_MAX
196
0
    0U, // G_ATOMICRMW_MIN
197
0
    0U, // G_ATOMICRMW_UMAX
198
0
    0U, // G_ATOMICRMW_UMIN
199
0
    0U, // G_ATOMICRMW_FADD
200
0
    0U, // G_ATOMICRMW_FSUB
201
0
    0U, // G_ATOMICRMW_FMAX
202
0
    0U, // G_ATOMICRMW_FMIN
203
0
    0U, // G_ATOMICRMW_UINC_WRAP
204
0
    0U, // G_ATOMICRMW_UDEC_WRAP
205
0
    0U, // G_FENCE
206
0
    0U, // G_PREFETCH
207
0
    0U, // G_BRCOND
208
0
    0U, // G_BRINDIRECT
209
0
    0U, // G_INVOKE_REGION_START
210
0
    0U, // G_INTRINSIC
211
0
    0U, // G_INTRINSIC_W_SIDE_EFFECTS
212
0
    0U, // G_INTRINSIC_CONVERGENT
213
0
    0U, // G_INTRINSIC_CONVERGENT_W_SIDE_EFFECTS
214
0
    0U, // G_ANYEXT
215
0
    0U, // G_TRUNC
216
0
    0U, // G_CONSTANT
217
0
    0U, // G_FCONSTANT
218
0
    0U, // G_VASTART
219
0
    0U, // G_VAARG
220
0
    0U, // G_SEXT
221
0
    0U, // G_SEXT_INREG
222
0
    0U, // G_ZEXT
223
0
    0U, // G_SHL
224
0
    0U, // G_LSHR
225
0
    0U, // G_ASHR
226
0
    0U, // G_FSHL
227
0
    0U, // G_FSHR
228
0
    0U, // G_ROTR
229
0
    0U, // G_ROTL
230
0
    0U, // G_ICMP
231
0
    0U, // G_FCMP
232
0
    0U, // G_SELECT
233
0
    0U, // G_UADDO
234
0
    0U, // G_UADDE
235
0
    0U, // G_USUBO
236
0
    0U, // G_USUBE
237
0
    0U, // G_SADDO
238
0
    0U, // G_SADDE
239
0
    0U, // G_SSUBO
240
0
    0U, // G_SSUBE
241
0
    0U, // G_UMULO
242
0
    0U, // G_SMULO
243
0
    0U, // G_UMULH
244
0
    0U, // G_SMULH
245
0
    0U, // G_UADDSAT
246
0
    0U, // G_SADDSAT
247
0
    0U, // G_USUBSAT
248
0
    0U, // G_SSUBSAT
249
0
    0U, // G_USHLSAT
250
0
    0U, // G_SSHLSAT
251
0
    0U, // G_SMULFIX
252
0
    0U, // G_UMULFIX
253
0
    0U, // G_SMULFIXSAT
254
0
    0U, // G_UMULFIXSAT
255
0
    0U, // G_SDIVFIX
256
0
    0U, // G_UDIVFIX
257
0
    0U, // G_SDIVFIXSAT
258
0
    0U, // G_UDIVFIXSAT
259
0
    0U, // G_FADD
260
0
    0U, // G_FSUB
261
0
    0U, // G_FMUL
262
0
    0U, // G_FMA
263
0
    0U, // G_FMAD
264
0
    0U, // G_FDIV
265
0
    0U, // G_FREM
266
0
    0U, // G_FPOW
267
0
    0U, // G_FPOWI
268
0
    0U, // G_FEXP
269
0
    0U, // G_FEXP2
270
0
    0U, // G_FEXP10
271
0
    0U, // G_FLOG
272
0
    0U, // G_FLOG2
273
0
    0U, // G_FLOG10
274
0
    0U, // G_FLDEXP
275
0
    0U, // G_FFREXP
276
0
    0U, // G_FNEG
277
0
    0U, // G_FPEXT
278
0
    0U, // G_FPTRUNC
279
0
    0U, // G_FPTOSI
280
0
    0U, // G_FPTOUI
281
0
    0U, // G_SITOFP
282
0
    0U, // G_UITOFP
283
0
    0U, // G_FABS
284
0
    0U, // G_FCOPYSIGN
285
0
    0U, // G_IS_FPCLASS
286
0
    0U, // G_FCANONICALIZE
287
0
    0U, // G_FMINNUM
288
0
    0U, // G_FMAXNUM
289
0
    0U, // G_FMINNUM_IEEE
290
0
    0U, // G_FMAXNUM_IEEE
291
0
    0U, // G_FMINIMUM
292
0
    0U, // G_FMAXIMUM
293
0
    0U, // G_GET_FPENV
294
0
    0U, // G_SET_FPENV
295
0
    0U, // G_RESET_FPENV
296
0
    0U, // G_GET_FPMODE
297
0
    0U, // G_SET_FPMODE
298
0
    0U, // G_RESET_FPMODE
299
0
    0U, // G_PTR_ADD
300
0
    0U, // G_PTRMASK
301
0
    0U, // G_SMIN
302
0
    0U, // G_SMAX
303
0
    0U, // G_UMIN
304
0
    0U, // G_UMAX
305
0
    0U, // G_ABS
306
0
    0U, // G_LROUND
307
0
    0U, // G_LLROUND
308
0
    0U, // G_BR
309
0
    0U, // G_BRJT
310
0
    0U, // G_INSERT_VECTOR_ELT
311
0
    0U, // G_EXTRACT_VECTOR_ELT
312
0
    0U, // G_SHUFFLE_VECTOR
313
0
    0U, // G_CTTZ
314
0
    0U, // G_CTTZ_ZERO_UNDEF
315
0
    0U, // G_CTLZ
316
0
    0U, // G_CTLZ_ZERO_UNDEF
317
0
    0U, // G_CTPOP
318
0
    0U, // G_BSWAP
319
0
    0U, // G_BITREVERSE
320
0
    0U, // G_FCEIL
321
0
    0U, // G_FCOS
322
0
    0U, // G_FSIN
323
0
    0U, // G_FSQRT
324
0
    0U, // G_FFLOOR
325
0
    0U, // G_FRINT
326
0
    0U, // G_FNEARBYINT
327
0
    0U, // G_ADDRSPACE_CAST
328
0
    0U, // G_BLOCK_ADDR
329
0
    0U, // G_JUMP_TABLE
330
0
    0U, // G_DYN_STACKALLOC
331
0
    0U, // G_STACKSAVE
332
0
    0U, // G_STACKRESTORE
333
0
    0U, // G_STRICT_FADD
334
0
    0U, // G_STRICT_FSUB
335
0
    0U, // G_STRICT_FMUL
336
0
    0U, // G_STRICT_FDIV
337
0
    0U, // G_STRICT_FREM
338
0
    0U, // G_STRICT_FMA
339
0
    0U, // G_STRICT_FSQRT
340
0
    0U, // G_STRICT_FLDEXP
341
0
    0U, // G_READ_REGISTER
342
0
    0U, // G_WRITE_REGISTER
343
0
    0U, // G_MEMCPY
344
0
    0U, // G_MEMCPY_INLINE
345
0
    0U, // G_MEMMOVE
346
0
    0U, // G_MEMSET
347
0
    0U, // G_BZERO
348
0
    0U, // G_VECREDUCE_SEQ_FADD
349
0
    0U, // G_VECREDUCE_SEQ_FMUL
350
0
    0U, // G_VECREDUCE_FADD
351
0
    0U, // G_VECREDUCE_FMUL
352
0
    0U, // G_VECREDUCE_FMAX
353
0
    0U, // G_VECREDUCE_FMIN
354
0
    0U, // G_VECREDUCE_FMAXIMUM
355
0
    0U, // G_VECREDUCE_FMINIMUM
356
0
    0U, // G_VECREDUCE_ADD
357
0
    0U, // G_VECREDUCE_MUL
358
0
    0U, // G_VECREDUCE_AND
359
0
    0U, // G_VECREDUCE_OR
360
0
    0U, // G_VECREDUCE_XOR
361
0
    0U, // G_VECREDUCE_SMAX
362
0
    0U, // G_VECREDUCE_SMIN
363
0
    0U, // G_VECREDUCE_UMAX
364
0
    0U, // G_VECREDUCE_UMIN
365
0
    0U, // G_SBFX
366
0
    0U, // G_UBFX
367
0
    1202U,  // ADJCALLSTACKDOWN
368
0
    1221U,  // ADJCALLSTACKUP
369
0
    1188U,  // ADJDYNALLOC
370
0
    0U, // CALL
371
0
    0U, // CALLR
372
0
    18511U, // ADDC_F_I_HI
373
0
    34895U, // ADDC_F_I_LO
374
0
    3619U,  // ADDC_F_R
375
0
    18462U, // ADDC_I_HI
376
0
    34846U, // ADDC_I_LO
377
0
    3587U,  // ADDC_R
378
0
    18519U, // ADD_F_I_HI
379
0
    34903U, // ADD_F_I_LO
380
0
    3626U,  // ADD_F_R
381
0
    18474U, // ADD_I_HI
382
0
    34858U, // ADD_I_LO
383
0
    3592U,  // ADD_R
384
0
    51294U, // AND_F_I_HI
385
0
    2142U,  // AND_F_I_LO
386
0
    3632U,  // AND_F_R
387
0
    51252U, // AND_I_HI
388
0
    2100U,  // AND_I_LO
389
0
    3596U,  // AND_R
390
0
    20989U, // BRCC
391
0
    20989U, // BRIND_CC
392
0
    5629U,  // BRIND_CCA
393
0
    37373U, // BRR
394
0
    50312U, // BT
395
0
    50312U, // JR
396
0
    6192U,  // LDADDR
397
0
    7175U,  // LDBs_RI
398
0
    8199U,  // LDBs_RR
399
0
    7174U,  // LDBz_RI
400
0
    8198U,  // LDBz_RR
401
0
    7283U,  // LDHs_RI
402
0
    8307U,  // LDHs_RR
403
0
    7282U,  // LDHz_RI
404
0
    8306U,  // LDHz_RR
405
0
    9263U,  // LDW_RI
406
0
    8240U,  // LDW_RR
407
0
    8239U,  // LDWz_RR
408
0
    2197U,  // LEADZ
409
0
    367U, // LOG0
410
0
    373U, // LOG1
411
0
    379U, // LOG2
412
0
    385U, // LOG3
413
0
    391U, // LOG4
414
0
    10384U, // MOVHI
415
0
    619U, // NOP
416
0
    18540U, // OR_F_I_HI
417
0
    34924U, // OR_F_I_LO
418
0
    3644U,  // OR_F_R
419
0
    18564U, // OR_I_HI
420
0
    34948U, // OR_I_LO
421
0
    3696U,  // OR_R
422
0
    2084U,  // POPC
423
0
    594U, // RET
424
0
    34873U, // SA_F_I
425
0
    34817U, // SA_I
426
0
    21107U, // SCC
427
0
    11558U, // SELECT
428
0
    17480U, // SFSUB_F_RI_HI
429
0
    17480U, // SFSUB_F_RI_LO
430
0
    17480U, // SFSUB_F_RR
431
0
    3638U,  // SHL_F_R
432
0
    3649U,  // SHL_R
433
0
    2192U,  // SLI
434
0
    34917U, // SL_F_I
435
0
    34943U, // SL_I
436
0
    3600U,  // SRA_F_R
437
0
    3574U,  // SRA_R
438
0
    3638U,  // SRL_F_R
439
0
    3649U,  // SRL_R
440
0
    17548U, // STADDR
441
0
    17421U, // STB_RI
442
0
    17421U, // STB_RR
443
0
    17529U, // STH_RI
444
0
    17529U, // STH_RR
445
0
    18496U, // SUBB_F_I_HI
446
0
    34880U, // SUBB_F_I_LO
447
0
    3606U,  // SUBB_F_R
448
0
    18451U, // SUBB_I_HI
449
0
    34835U, // SUBB_I_LO
450
0
    3578U,  // SUBB_R
451
0
    18504U, // SUB_F_I_HI
452
0
    34888U, // SUB_F_I_LO
453
0
    3613U,  // SUB_F_R
454
0
    18457U, // SUB_I_HI
455
0
    34841U, // SUB_I_LO
456
0
    3583U,  // SUB_R
457
0
    17548U, // SW_RI
458
0
    17548U, // SW_RR
459
0
    2204U,  // TRAILZ
460
0
    18539U, // XOR_F_I_HI
461
0
    34923U, // XOR_F_I_LO
462
0
    3643U,  // XOR_F_R
463
0
    18563U, // XOR_I_HI
464
0
    34947U, // XOR_I_LO
465
0
    3695U,  // XOR_R
466
0
  };
467
468
0
  static const uint8_t OpInfo1[] = {
469
0
    0U, // PHI
470
0
    0U, // INLINEASM
471
0
    0U, // INLINEASM_BR
472
0
    0U, // CFI_INSTRUCTION
473
0
    0U, // EH_LABEL
474
0
    0U, // GC_LABEL
475
0
    0U, // ANNOTATION_LABEL
476
0
    0U, // KILL
477
0
    0U, // EXTRACT_SUBREG
478
0
    0U, // INSERT_SUBREG
479
0
    0U, // IMPLICIT_DEF
480
0
    0U, // SUBREG_TO_REG
481
0
    0U, // COPY_TO_REGCLASS
482
0
    0U, // DBG_VALUE
483
0
    0U, // DBG_VALUE_LIST
484
0
    0U, // DBG_INSTR_REF
485
0
    0U, // DBG_PHI
486
0
    0U, // DBG_LABEL
487
0
    0U, // REG_SEQUENCE
488
0
    0U, // COPY
489
0
    0U, // BUNDLE
490
0
    0U, // LIFETIME_START
491
0
    0U, // LIFETIME_END
492
0
    0U, // PSEUDO_PROBE
493
0
    0U, // ARITH_FENCE
494
0
    0U, // STACKMAP
495
0
    0U, // FENTRY_CALL
496
0
    0U, // PATCHPOINT
497
0
    0U, // LOAD_STACK_GUARD
498
0
    0U, // PREALLOCATED_SETUP
499
0
    0U, // PREALLOCATED_ARG
500
0
    0U, // STATEPOINT
501
0
    0U, // LOCAL_ESCAPE
502
0
    0U, // FAULTING_OP
503
0
    0U, // PATCHABLE_OP
504
0
    0U, // PATCHABLE_FUNCTION_ENTER
505
0
    0U, // PATCHABLE_RET
506
0
    0U, // PATCHABLE_FUNCTION_EXIT
507
0
    0U, // PATCHABLE_TAIL_CALL
508
0
    0U, // PATCHABLE_EVENT_CALL
509
0
    0U, // PATCHABLE_TYPED_EVENT_CALL
510
0
    0U, // ICALL_BRANCH_FUNNEL
511
0
    0U, // MEMBARRIER
512
0
    0U, // JUMP_TABLE_DEBUG_INFO
513
0
    0U, // G_ASSERT_SEXT
514
0
    0U, // G_ASSERT_ZEXT
515
0
    0U, // G_ASSERT_ALIGN
516
0
    0U, // G_ADD
517
0
    0U, // G_SUB
518
0
    0U, // G_MUL
519
0
    0U, // G_SDIV
520
0
    0U, // G_UDIV
521
0
    0U, // G_SREM
522
0
    0U, // G_UREM
523
0
    0U, // G_SDIVREM
524
0
    0U, // G_UDIVREM
525
0
    0U, // G_AND
526
0
    0U, // G_OR
527
0
    0U, // G_XOR
528
0
    0U, // G_IMPLICIT_DEF
529
0
    0U, // G_PHI
530
0
    0U, // G_FRAME_INDEX
531
0
    0U, // G_GLOBAL_VALUE
532
0
    0U, // G_CONSTANT_POOL
533
0
    0U, // G_EXTRACT
534
0
    0U, // G_UNMERGE_VALUES
535
0
    0U, // G_INSERT
536
0
    0U, // G_MERGE_VALUES
537
0
    0U, // G_BUILD_VECTOR
538
0
    0U, // G_BUILD_VECTOR_TRUNC
539
0
    0U, // G_CONCAT_VECTORS
540
0
    0U, // G_PTRTOINT
541
0
    0U, // G_INTTOPTR
542
0
    0U, // G_BITCAST
543
0
    0U, // G_FREEZE
544
0
    0U, // G_CONSTANT_FOLD_BARRIER
545
0
    0U, // G_INTRINSIC_FPTRUNC_ROUND
546
0
    0U, // G_INTRINSIC_TRUNC
547
0
    0U, // G_INTRINSIC_ROUND
548
0
    0U, // G_INTRINSIC_LRINT
549
0
    0U, // G_INTRINSIC_ROUNDEVEN
550
0
    0U, // G_READCYCLECOUNTER
551
0
    0U, // G_LOAD
552
0
    0U, // G_SEXTLOAD
553
0
    0U, // G_ZEXTLOAD
554
0
    0U, // G_INDEXED_LOAD
555
0
    0U, // G_INDEXED_SEXTLOAD
556
0
    0U, // G_INDEXED_ZEXTLOAD
557
0
    0U, // G_STORE
558
0
    0U, // G_INDEXED_STORE
559
0
    0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
560
0
    0U, // G_ATOMIC_CMPXCHG
561
0
    0U, // G_ATOMICRMW_XCHG
562
0
    0U, // G_ATOMICRMW_ADD
563
0
    0U, // G_ATOMICRMW_SUB
564
0
    0U, // G_ATOMICRMW_AND
565
0
    0U, // G_ATOMICRMW_NAND
566
0
    0U, // G_ATOMICRMW_OR
567
0
    0U, // G_ATOMICRMW_XOR
568
0
    0U, // G_ATOMICRMW_MAX
569
0
    0U, // G_ATOMICRMW_MIN
570
0
    0U, // G_ATOMICRMW_UMAX
571
0
    0U, // G_ATOMICRMW_UMIN
572
0
    0U, // G_ATOMICRMW_FADD
573
0
    0U, // G_ATOMICRMW_FSUB
574
0
    0U, // G_ATOMICRMW_FMAX
575
0
    0U, // G_ATOMICRMW_FMIN
576
0
    0U, // G_ATOMICRMW_UINC_WRAP
577
0
    0U, // G_ATOMICRMW_UDEC_WRAP
578
0
    0U, // G_FENCE
579
0
    0U, // G_PREFETCH
580
0
    0U, // G_BRCOND
581
0
    0U, // G_BRINDIRECT
582
0
    0U, // G_INVOKE_REGION_START
583
0
    0U, // G_INTRINSIC
584
0
    0U, // G_INTRINSIC_W_SIDE_EFFECTS
585
0
    0U, // G_INTRINSIC_CONVERGENT
586
0
    0U, // G_INTRINSIC_CONVERGENT_W_SIDE_EFFECTS
587
0
    0U, // G_ANYEXT
588
0
    0U, // G_TRUNC
589
0
    0U, // G_CONSTANT
590
0
    0U, // G_FCONSTANT
591
0
    0U, // G_VASTART
592
0
    0U, // G_VAARG
593
0
    0U, // G_SEXT
594
0
    0U, // G_SEXT_INREG
595
0
    0U, // G_ZEXT
596
0
    0U, // G_SHL
597
0
    0U, // G_LSHR
598
0
    0U, // G_ASHR
599
0
    0U, // G_FSHL
600
0
    0U, // G_FSHR
601
0
    0U, // G_ROTR
602
0
    0U, // G_ROTL
603
0
    0U, // G_ICMP
604
0
    0U, // G_FCMP
605
0
    0U, // G_SELECT
606
0
    0U, // G_UADDO
607
0
    0U, // G_UADDE
608
0
    0U, // G_USUBO
609
0
    0U, // G_USUBE
610
0
    0U, // G_SADDO
611
0
    0U, // G_SADDE
612
0
    0U, // G_SSUBO
613
0
    0U, // G_SSUBE
614
0
    0U, // G_UMULO
615
0
    0U, // G_SMULO
616
0
    0U, // G_UMULH
617
0
    0U, // G_SMULH
618
0
    0U, // G_UADDSAT
619
0
    0U, // G_SADDSAT
620
0
    0U, // G_USUBSAT
621
0
    0U, // G_SSUBSAT
622
0
    0U, // G_USHLSAT
623
0
    0U, // G_SSHLSAT
624
0
    0U, // G_SMULFIX
625
0
    0U, // G_UMULFIX
626
0
    0U, // G_SMULFIXSAT
627
0
    0U, // G_UMULFIXSAT
628
0
    0U, // G_SDIVFIX
629
0
    0U, // G_UDIVFIX
630
0
    0U, // G_SDIVFIXSAT
631
0
    0U, // G_UDIVFIXSAT
632
0
    0U, // G_FADD
633
0
    0U, // G_FSUB
634
0
    0U, // G_FMUL
635
0
    0U, // G_FMA
636
0
    0U, // G_FMAD
637
0
    0U, // G_FDIV
638
0
    0U, // G_FREM
639
0
    0U, // G_FPOW
640
0
    0U, // G_FPOWI
641
0
    0U, // G_FEXP
642
0
    0U, // G_FEXP2
643
0
    0U, // G_FEXP10
644
0
    0U, // G_FLOG
645
0
    0U, // G_FLOG2
646
0
    0U, // G_FLOG10
647
0
    0U, // G_FLDEXP
648
0
    0U, // G_FFREXP
649
0
    0U, // G_FNEG
650
0
    0U, // G_FPEXT
651
0
    0U, // G_FPTRUNC
652
0
    0U, // G_FPTOSI
653
0
    0U, // G_FPTOUI
654
0
    0U, // G_SITOFP
655
0
    0U, // G_UITOFP
656
0
    0U, // G_FABS
657
0
    0U, // G_FCOPYSIGN
658
0
    0U, // G_IS_FPCLASS
659
0
    0U, // G_FCANONICALIZE
660
0
    0U, // G_FMINNUM
661
0
    0U, // G_FMAXNUM
662
0
    0U, // G_FMINNUM_IEEE
663
0
    0U, // G_FMAXNUM_IEEE
664
0
    0U, // G_FMINIMUM
665
0
    0U, // G_FMAXIMUM
666
0
    0U, // G_GET_FPENV
667
0
    0U, // G_SET_FPENV
668
0
    0U, // G_RESET_FPENV
669
0
    0U, // G_GET_FPMODE
670
0
    0U, // G_SET_FPMODE
671
0
    0U, // G_RESET_FPMODE
672
0
    0U, // G_PTR_ADD
673
0
    0U, // G_PTRMASK
674
0
    0U, // G_SMIN
675
0
    0U, // G_SMAX
676
0
    0U, // G_UMIN
677
0
    0U, // G_UMAX
678
0
    0U, // G_ABS
679
0
    0U, // G_LROUND
680
0
    0U, // G_LLROUND
681
0
    0U, // G_BR
682
0
    0U, // G_BRJT
683
0
    0U, // G_INSERT_VECTOR_ELT
684
0
    0U, // G_EXTRACT_VECTOR_ELT
685
0
    0U, // G_SHUFFLE_VECTOR
686
0
    0U, // G_CTTZ
687
0
    0U, // G_CTTZ_ZERO_UNDEF
688
0
    0U, // G_CTLZ
689
0
    0U, // G_CTLZ_ZERO_UNDEF
690
0
    0U, // G_CTPOP
691
0
    0U, // G_BSWAP
692
0
    0U, // G_BITREVERSE
693
0
    0U, // G_FCEIL
694
0
    0U, // G_FCOS
695
0
    0U, // G_FSIN
696
0
    0U, // G_FSQRT
697
0
    0U, // G_FFLOOR
698
0
    0U, // G_FRINT
699
0
    0U, // G_FNEARBYINT
700
0
    0U, // G_ADDRSPACE_CAST
701
0
    0U, // G_BLOCK_ADDR
702
0
    0U, // G_JUMP_TABLE
703
0
    0U, // G_DYN_STACKALLOC
704
0
    0U, // G_STACKSAVE
705
0
    0U, // G_STACKRESTORE
706
0
    0U, // G_STRICT_FADD
707
0
    0U, // G_STRICT_FSUB
708
0
    0U, // G_STRICT_FMUL
709
0
    0U, // G_STRICT_FDIV
710
0
    0U, // G_STRICT_FREM
711
0
    0U, // G_STRICT_FMA
712
0
    0U, // G_STRICT_FSQRT
713
0
    0U, // G_STRICT_FLDEXP
714
0
    0U, // G_READ_REGISTER
715
0
    0U, // G_WRITE_REGISTER
716
0
    0U, // G_MEMCPY
717
0
    0U, // G_MEMCPY_INLINE
718
0
    0U, // G_MEMMOVE
719
0
    0U, // G_MEMSET
720
0
    0U, // G_BZERO
721
0
    0U, // G_VECREDUCE_SEQ_FADD
722
0
    0U, // G_VECREDUCE_SEQ_FMUL
723
0
    0U, // G_VECREDUCE_FADD
724
0
    0U, // G_VECREDUCE_FMUL
725
0
    0U, // G_VECREDUCE_FMAX
726
0
    0U, // G_VECREDUCE_FMIN
727
0
    0U, // G_VECREDUCE_FMAXIMUM
728
0
    0U, // G_VECREDUCE_FMINIMUM
729
0
    0U, // G_VECREDUCE_ADD
730
0
    0U, // G_VECREDUCE_MUL
731
0
    0U, // G_VECREDUCE_AND
732
0
    0U, // G_VECREDUCE_OR
733
0
    0U, // G_VECREDUCE_XOR
734
0
    0U, // G_VECREDUCE_SMAX
735
0
    0U, // G_VECREDUCE_SMIN
736
0
    0U, // G_VECREDUCE_UMAX
737
0
    0U, // G_VECREDUCE_UMIN
738
0
    0U, // G_SBFX
739
0
    0U, // G_UBFX
740
0
    0U, // ADJCALLSTACKDOWN
741
0
    0U, // ADJCALLSTACKUP
742
0
    0U, // ADJDYNALLOC
743
0
    0U, // CALL
744
0
    0U, // CALLR
745
0
    0U, // ADDC_F_I_HI
746
0
    0U, // ADDC_F_I_LO
747
0
    0U, // ADDC_F_R
748
0
    0U, // ADDC_I_HI
749
0
    0U, // ADDC_I_LO
750
0
    0U, // ADDC_R
751
0
    0U, // ADD_F_I_HI
752
0
    0U, // ADD_F_I_LO
753
0
    0U, // ADD_F_R
754
0
    0U, // ADD_I_HI
755
0
    0U, // ADD_I_LO
756
0
    0U, // ADD_R
757
0
    0U, // AND_F_I_HI
758
0
    1U, // AND_F_I_LO
759
0
    0U, // AND_F_R
760
0
    0U, // AND_I_HI
761
0
    1U, // AND_I_LO
762
0
    0U, // AND_R
763
0
    1U, // BRCC
764
0
    1U, // BRIND_CC
765
0
    0U, // BRIND_CCA
766
0
    1U, // BRR
767
0
    1U, // BT
768
0
    1U, // JR
769
0
    0U, // LDADDR
770
0
    0U, // LDBs_RI
771
0
    0U, // LDBs_RR
772
0
    0U, // LDBz_RI
773
0
    0U, // LDBz_RR
774
0
    0U, // LDHs_RI
775
0
    0U, // LDHs_RR
776
0
    0U, // LDHz_RI
777
0
    0U, // LDHz_RR
778
0
    0U, // LDW_RI
779
0
    0U, // LDW_RR
780
0
    0U, // LDWz_RR
781
0
    2U, // LEADZ
782
0
    0U, // LOG0
783
0
    0U, // LOG1
784
0
    0U, // LOG2
785
0
    0U, // LOG3
786
0
    0U, // LOG4
787
0
    0U, // MOVHI
788
0
    0U, // NOP
789
0
    0U, // OR_F_I_HI
790
0
    0U, // OR_F_I_LO
791
0
    0U, // OR_F_R
792
0
    0U, // OR_I_HI
793
0
    0U, // OR_I_LO
794
0
    0U, // OR_R
795
0
    2U, // POPC
796
0
    0U, // RET
797
0
    0U, // SA_F_I
798
0
    0U, // SA_I
799
0
    1U, // SCC
800
0
    0U, // SELECT
801
0
    2U, // SFSUB_F_RI_HI
802
0
    6U, // SFSUB_F_RI_LO
803
0
    6U, // SFSUB_F_RR
804
0
    0U, // SHL_F_R
805
0
    0U, // SHL_R
806
0
    2U, // SLI
807
0
    0U, // SL_F_I
808
0
    0U, // SL_I
809
0
    0U, // SRA_F_R
810
0
    0U, // SRA_R
811
0
    0U, // SRL_F_R
812
0
    0U, // SRL_R
813
0
    10U,  // STADDR
814
0
    14U,  // STB_RI
815
0
    18U,  // STB_RR
816
0
    14U,  // STH_RI
817
0
    18U,  // STH_RR
818
0
    0U, // SUBB_F_I_HI
819
0
    0U, // SUBB_F_I_LO
820
0
    0U, // SUBB_F_R
821
0
    0U, // SUBB_I_HI
822
0
    0U, // SUBB_I_LO
823
0
    0U, // SUBB_R
824
0
    0U, // SUB_F_I_HI
825
0
    0U, // SUB_F_I_LO
826
0
    0U, // SUB_F_R
827
0
    0U, // SUB_I_HI
828
0
    0U, // SUB_I_LO
829
0
    0U, // SUB_R
830
0
    22U,  // SW_RI
831
0
    18U,  // SW_RR
832
0
    2U, // TRAILZ
833
0
    0U, // XOR_F_I_HI
834
0
    0U, // XOR_F_I_LO
835
0
    0U, // XOR_F_R
836
0
    0U, // XOR_I_HI
837
0
    0U, // XOR_I_LO
838
0
    0U, // XOR_R
839
0
  };
840
841
  // Emit the opcode for the instruction.
842
0
  uint32_t Bits = 0;
843
0
  Bits |= OpInfo0[MI->getOpcode()] << 0;
844
0
  Bits |= OpInfo1[MI->getOpcode()] << 16;
845
0
  if (Bits == 0)
846
0
    return {nullptr, Bits};
847
0
  return {AsmStrs+(Bits & 1023)-1, Bits};
848
849
0
}
850
/// printInstruction - This method is automatically generated by tablegen
851
/// from the instruction set description.
852
LLVM_NO_PROFILE_INSTRUMENT_FUNCTION
853
void LanaiInstPrinter::printInstruction(const MCInst *MI, uint64_t Address, raw_ostream &O) {
854
  O << "\t";
855
856
  auto MnemonicInfo = getMnemonic(MI);
857
858
  O << MnemonicInfo.first;
859
860
  uint32_t Bits = MnemonicInfo.second;
861
  assert(Bits != 0 && "Cannot print this instruction.");
862
863
  // Fragment 0 encoded into 4 bits for 12 unique commands.
864
  switch ((Bits >> 10) & 15) {
865
  default: llvm_unreachable("Invalid command number.");
866
  case 0:
867
    // DBG_VALUE, DBG_VALUE_LIST, DBG_INSTR_REF, DBG_PHI, DBG_LABEL, BUNDLE, ...
868
    return;
869
    break;
870
  case 1:
871
    // ADJCALLSTACKDOWN, ADJCALLSTACKUP, ADJDYNALLOC, BT, JR, SFSUB_F_RI_HI, ...
872
    printOperand(MI, 0, O);
873
    break;
874
  case 2:
875
    // ADDC_F_I_HI, ADDC_F_I_LO, ADDC_I_HI, ADDC_I_LO, ADD_F_I_HI, ADD_F_I_LO...
876
    printOperand(MI, 1, O);
877
    O << ", ";
878
    break;
879
  case 3:
880
    // ADDC_F_R, ADDC_R, ADD_F_R, ADD_R, AND_F_R, AND_R, OR_F_R, OR_R, SHL_F_...
881
    printPredicateOperand(MI, 3, O);
882
    O << "\t";
883
    printOperand(MI, 1, O);
884
    O << ", ";
885
    printOperand(MI, 2, O);
886
    O << ", ";
887
    printOperand(MI, 0, O);
888
    return;
889
    break;
890
  case 4:
891
    // BRCC, BRIND_CC, BRR, SCC
892
    printCCOperand(MI, 1, O);
893
    break;
894
  case 5:
895
    // BRIND_CCA
896
    printCCOperand(MI, 2, O);
897
    O << "\t";
898
    printOperand(MI, 0, O);
899
    O << " add ";
900
    printOperand(MI, 1, O);
901
    return;
902
    break;
903
  case 6:
904
    // LDADDR
905
    printMemImmOperand(MI, 1, O);
906
    O << ", ";
907
    printOperand(MI, 0, O);
908
    return;
909
    break;
910
  case 7:
911
    // LDBs_RI, LDBz_RI, LDHs_RI, LDHz_RI
912
    printMemSplsOperand(MI, 1, O);
913
    O << ", ";
914
    printOperand(MI, 0, O);
915
    return;
916
    break;
917
  case 8:
918
    // LDBs_RR, LDBz_RR, LDHs_RR, LDHz_RR, LDW_RR, LDWz_RR
919
    printMemRrOperand(MI, 1, O);
920
    O << ", ";
921
    printOperand(MI, 0, O);
922
    return;
923
    break;
924
  case 9:
925
    // LDW_RI
926
    printMemRiOperand(MI, 1, O);
927
    O << ", ";
928
    printOperand(MI, 0, O);
929
    return;
930
    break;
931
  case 10:
932
    // MOVHI
933
    printHi16ImmOperand(MI, 1, O);
934
    O << ", ";
935
    printOperand(MI, 0, O);
936
    return;
937
    break;
938
  case 11:
939
    // SELECT
940
    printCCOperand(MI, 3, O);
941
    O << ' ';
942
    printOperand(MI, 1, O);
943
    O << ", ";
944
    printOperand(MI, 2, O);
945
    O << ", ";
946
    printOperand(MI, 0, O);
947
    return;
948
    break;
949
  }
950
951
952
  // Fragment 1 encoded into 4 bits for 10 unique commands.
953
  switch ((Bits >> 14) & 15) {
954
  default: llvm_unreachable("Invalid command number.");
955
  case 0:
956
    // ADJCALLSTACKDOWN, ADJCALLSTACKUP, ADJDYNALLOC
957
    O << ' ';
958
    printOperand(MI, 1, O);
959
    return;
960
    break;
961
  case 1:
962
    // ADDC_F_I_HI, ADDC_I_HI, ADD_F_I_HI, ADD_I_HI, OR_F_I_HI, OR_I_HI, SUBB...
963
    printHi16ImmOperand(MI, 2, O);
964
    O << ", ";
965
    printOperand(MI, 0, O);
966
    return;
967
    break;
968
  case 2:
969
    // ADDC_F_I_LO, ADDC_I_LO, ADD_F_I_LO, ADD_I_LO, OR_F_I_LO, OR_I_LO, SA_F...
970
    printOperand(MI, 2, O);
971
    O << ", ";
972
    printOperand(MI, 0, O);
973
    return;
974
    break;
975
  case 3:
976
    // AND_F_I_HI, AND_I_HI
977
    printHi16AndImmOperand(MI, 2, O);
978
    O << ", ";
979
    printOperand(MI, 0, O);
980
    return;
981
    break;
982
  case 4:
983
    // AND_F_I_LO, AND_I_LO
984
    printLo16AndImmOperand(MI, 2, O);
985
    O << ", ";
986
    printOperand(MI, 0, O);
987
    return;
988
    break;
989
  case 5:
990
    // BRCC, BRIND_CC, SCC
991
    O << "\t";
992
    printOperand(MI, 0, O);
993
    return;
994
    break;
995
  case 6:
996
    // BRR
997
    O << ".r\t";
998
    printOperand(MI, 0, O);
999
    return;
1000
    break;
1001
  case 7:
1002
    // BT, JR
1003
    return;
1004
    break;
1005
  case 8:
1006
    // LEADZ, POPC, SLI, TRAILZ
1007
    printOperand(MI, 0, O);
1008
    return;
1009
    break;
1010
  case 9:
1011
    // SFSUB_F_RI_HI, SFSUB_F_RI_LO, SFSUB_F_RR, STADDR, STB_RI, STB_RR, STH_...
1012
    O << ", ";
1013
    break;
1014
  }
1015
1016
1017
  // Fragment 2 encoded into 3 bits for 6 unique commands.
1018
  switch ((Bits >> 18) & 7) {
1019
  default: llvm_unreachable("Invalid command number.");
1020
  case 0:
1021
    // SFSUB_F_RI_HI
1022
    printHi16ImmOperand(MI, 1, O);
1023
    O << ", %r0";
1024
    return;
1025
    break;
1026
  case 1:
1027
    // SFSUB_F_RI_LO, SFSUB_F_RR
1028
    printOperand(MI, 1, O);
1029
    O << ", %r0";
1030
    return;
1031
    break;
1032
  case 2:
1033
    // STADDR
1034
    printMemImmOperand(MI, 1, O);
1035
    return;
1036
    break;
1037
  case 3:
1038
    // STB_RI, STH_RI
1039
    printMemSplsOperand(MI, 1, O);
1040
    return;
1041
    break;
1042
  case 4:
1043
    // STB_RR, STH_RR, SW_RR
1044
    printMemRrOperand(MI, 1, O);
1045
    return;
1046
    break;
1047
  case 5:
1048
    // SW_RI
1049
    printMemRiOperand(MI, 1, O);
1050
    return;
1051
    break;
1052
  }
1053
1054
}
1055
1056
1057
/// getRegisterName - This method is automatically generated by tblgen
1058
/// from the register set description.  This returns the assembler name
1059
/// for the specified register.
1060
0
const char *LanaiInstPrinter::getRegisterName(MCRegister Reg) {
1061
0
  unsigned RegNo = Reg.id();
1062
0
  assert(RegNo && RegNo < 41 && "Invalid register number!");
1063
1064
1065
0
#ifdef __GNUC__
1066
0
#pragma GCC diagnostic push
1067
0
#pragma GCC diagnostic ignored "-Woverlength-strings"
1068
0
#endif
1069
0
  static const char AsmStrs[] = {
1070
0
  /* 0 */ "r10\0"
1071
0
  /* 4 */ "r20\0"
1072
0
  /* 8 */ "r30\0"
1073
0
  /* 12 */ "r0\0"
1074
0
  /* 15 */ "r11\0"
1075
0
  /* 19 */ "r21\0"
1076
0
  /* 23 */ "r31\0"
1077
0
  /* 27 */ "rr1\0"
1078
0
  /* 31 */ "r12\0"
1079
0
  /* 35 */ "r22\0"
1080
0
  /* 39 */ "rr2\0"
1081
0
  /* 43 */ "r13\0"
1082
0
  /* 47 */ "r23\0"
1083
0
  /* 51 */ "r3\0"
1084
0
  /* 54 */ "r14\0"
1085
0
  /* 58 */ "r24\0"
1086
0
  /* 62 */ "r4\0"
1087
0
  /* 65 */ "r15\0"
1088
0
  /* 69 */ "r25\0"
1089
0
  /* 73 */ "r5\0"
1090
0
  /* 76 */ "r16\0"
1091
0
  /* 80 */ "r26\0"
1092
0
  /* 84 */ "r6\0"
1093
0
  /* 87 */ "r17\0"
1094
0
  /* 91 */ "r27\0"
1095
0
  /* 95 */ "r7\0"
1096
0
  /* 98 */ "r18\0"
1097
0
  /* 102 */ "r28\0"
1098
0
  /* 106 */ "r8\0"
1099
0
  /* 109 */ "r19\0"
1100
0
  /* 113 */ "r29\0"
1101
0
  /* 117 */ "r9\0"
1102
0
  /* 120 */ "rca\0"
1103
0
  /* 124 */ "pc\0"
1104
0
  /* 127 */ "fp\0"
1105
0
  /* 130 */ "sp\0"
1106
0
  /* 133 */ "rv\0"
1107
0
  /* 136 */ "sw\0"
1108
0
};
1109
0
#ifdef __GNUC__
1110
0
#pragma GCC diagnostic pop
1111
0
#endif
1112
1113
0
  static const uint8_t RegAsmOffset[] = {
1114
0
    127, 124, 120, 133, 130, 136, 12, 28, 40, 51, 62, 73, 84, 95, 
1115
0
    106, 117, 0, 15, 31, 43, 54, 65, 76, 87, 98, 109, 4, 19, 
1116
0
    35, 47, 58, 69, 80, 91, 102, 113, 8, 23, 27, 39, 
1117
0
  };
1118
1119
0
  assert (*(AsmStrs+RegAsmOffset[RegNo-1]) &&
1120
0
          "Invalid alt name index for register!");
1121
0
  return AsmStrs+RegAsmOffset[RegNo-1];
1122
0
}
1123
1124
#ifdef PRINT_ALIAS_INSTR
1125
#undef PRINT_ALIAS_INSTR
1126
1127
0
bool LanaiInstPrinter::printAliasInstr(const MCInst *MI, uint64_t Address, raw_ostream &OS) {
1128
0
  static const PatternsForOpcode OpToPatterns[] = {
1129
0
    {Lanai::ADD_I_HI, 0, 1 },
1130
0
    {Lanai::ADD_I_LO, 1, 1 },
1131
0
    {Lanai::ADD_R, 2, 1 },
1132
0
    {Lanai::AND_I_HI, 3, 1 },
1133
0
    {Lanai::AND_I_LO, 4, 1 },
1134
0
    {Lanai::LDW_RI, 5, 1 },
1135
0
  };
1136
1137
0
  static const AliasPattern Patterns[] = {
1138
    // Lanai::ADD_I_HI - 0
1139
0
    {0, 0, 3, 2 },
1140
    // Lanai::ADD_I_LO - 1
1141
0
    {13, 2, 3, 2 },
1142
    // Lanai::ADD_R - 2
1143
0
    {24, 4, 4, 4 },
1144
    // Lanai::AND_I_HI - 3
1145
0
    {35, 8, 3, 2 },
1146
    // Lanai::AND_I_LO - 4
1147
0
    {48, 10, 3, 2 },
1148
    // Lanai::LDW_RI - 5
1149
0
    {61, 12, 4, 1 },
1150
0
  };
1151
1152
0
  static const AliasPatternCond Conds[] = {
1153
    // (ADD_I_HI GPR:$dst, R0, i32hi16:$imm16) - 0
1154
0
    {AliasPatternCond::K_RegClass, Lanai::GPRRegClassID},
1155
0
    {AliasPatternCond::K_Reg, Lanai::R0},
1156
    // (ADD_I_LO GPR:$dst, R0, i32lo16z:$imm16) - 2
1157
0
    {AliasPatternCond::K_RegClass, Lanai::GPRRegClassID},
1158
0
    {AliasPatternCond::K_Reg, Lanai::R0},
1159
    // (ADD_R GPR:$dst, GPR:$src, R0, 0) - 4
1160
0
    {AliasPatternCond::K_RegClass, Lanai::GPRRegClassID},
1161
0
    {AliasPatternCond::K_RegClass, Lanai::GPRRegClassID},
1162
0
    {AliasPatternCond::K_Reg, Lanai::R0},
1163
0
    {AliasPatternCond::K_Imm, uint32_t(0)},
1164
    // (AND_I_HI GPR:$dst, R1, i32hi16and:$imm16) - 8
1165
0
    {AliasPatternCond::K_RegClass, Lanai::GPRRegClassID},
1166
0
    {AliasPatternCond::K_Reg, Lanai::R1},
1167
    // (AND_I_LO GPR:$dst, R1, i32lo16and:$imm16) - 10
1168
0
    {AliasPatternCond::K_RegClass, Lanai::GPRRegClassID},
1169
0
    {AliasPatternCond::K_Reg, Lanai::R1},
1170
    // (LDW_RI GPR:$dst, MEMri:$src) - 12
1171
0
    {AliasPatternCond::K_RegClass, Lanai::GPRRegClassID},
1172
0
  };
1173
1174
0
  static const char AsmStrings[] =
1175
0
    /* 0 */ "mov $\xFF\x03\x01, $\x01\0"
1176
0
    /* 13 */ "mov $\x03, $\x01\0"
1177
0
    /* 24 */ "mov $\x02, $\x01\0"
1178
0
    /* 35 */ "mov $\xFF\x03\x02, $\x01\0"
1179
0
    /* 48 */ "mov $\xFF\x03\x03, $\x01\0"
1180
0
    /* 61 */ "ld $\xFF\x02\x04, $\x01\0"
1181
0
  ;
1182
1183
0
#ifndef NDEBUG
1184
0
  static struct SortCheck {
1185
0
    SortCheck(ArrayRef<PatternsForOpcode> OpToPatterns) {
1186
0
      assert(std::is_sorted(
1187
0
                 OpToPatterns.begin(), OpToPatterns.end(),
1188
0
                 [](const PatternsForOpcode &L, const PatternsForOpcode &R) {
1189
0
                   return L.Opcode < R.Opcode;
1190
0
                 }) &&
1191
0
             "tablegen failed to sort opcode patterns");
1192
0
    }
1193
0
  } sortCheckVar(OpToPatterns);
1194
0
#endif
1195
1196
0
  AliasMatchingData M {
1197
0
    ArrayRef(OpToPatterns),
1198
0
    ArrayRef(Patterns),
1199
0
    ArrayRef(Conds),
1200
0
    StringRef(AsmStrings, std::size(AsmStrings)),
1201
0
    nullptr,
1202
0
  };
1203
0
  const char *AsmString = matchAliasPatterns(MI, nullptr, M);
1204
0
  if (!AsmString) return false;
1205
1206
0
  unsigned I = 0;
1207
0
  while (AsmString[I] != ' ' && AsmString[I] != '\t' &&
1208
0
         AsmString[I] != '$' && AsmString[I] != '\0')
1209
0
    ++I;
1210
0
  OS << '\t' << StringRef(AsmString, I);
1211
0
  if (AsmString[I] != '\0') {
1212
0
    if (AsmString[I] == ' ' || AsmString[I] == '\t') {
1213
0
      OS << '\t';
1214
0
      ++I;
1215
0
    }
1216
0
    do {
1217
0
      if (AsmString[I] == '$') {
1218
0
        ++I;
1219
0
        if (AsmString[I] == (char)0xff) {
1220
0
          ++I;
1221
0
          int OpIdx = AsmString[I++] - 1;
1222
0
          int PrintMethodIdx = AsmString[I++] - 1;
1223
0
          printCustomAliasOperand(MI, Address, OpIdx, PrintMethodIdx, OS);
1224
0
        } else
1225
0
          printOperand(MI, unsigned(AsmString[I++]) - 1, OS);
1226
0
      } else {
1227
0
        OS << AsmString[I++];
1228
0
      }
1229
0
    } while (AsmString[I] != '\0');
1230
0
  }
1231
1232
0
  return true;
1233
0
}
1234
1235
void LanaiInstPrinter::printCustomAliasOperand(
1236
         const MCInst *MI, uint64_t Address, unsigned OpIdx,
1237
         unsigned PrintMethodIdx,
1238
0
         raw_ostream &OS) {
1239
0
  switch (PrintMethodIdx) {
1240
0
  default:
1241
0
    llvm_unreachable("Unknown PrintMethod kind");
1242
0
    break;
1243
0
  case 0:
1244
0
    printHi16ImmOperand(MI, OpIdx, OS);
1245
0
    break;
1246
0
  case 1:
1247
0
    printHi16AndImmOperand(MI, OpIdx, OS);
1248
0
    break;
1249
0
  case 2:
1250
0
    printLo16AndImmOperand(MI, OpIdx, OS);
1251
0
    break;
1252
0
  case 3:
1253
0
    printMemRiOperand(MI, OpIdx, OS);
1254
0
    break;
1255
0
  }
1256
0
}
1257
1258
#endif // PRINT_ALIAS_INSTR