Coverage Report

Created: 2019-02-15 18:59

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/clang-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
|*                                                                            *|
7
\*===----------------------------------------------------------------------===*/
8
9
/// printInstruction - This method is automatically generated by tablegen
10
/// from the instruction set description.
11
1.38k
void LanaiInstPrinter::printInstruction(const MCInst *MI, raw_ostream &O) {
12
1.38k
  static const char AsmStrs[] = {
13
1.38k
  /* 0 */ 's', 'h', 'a', 9, 0,
14
1.38k
  /* 5 */ 'u', 'l', 'd', '.', 'b', 9, 0,
15
1.38k
  /* 12 */ 's', 't', '.', 'b', 9, 0,
16
1.38k
  /* 18 */ 's', 'u', 'b', 'b', 9, 0,
17
1.38k
  /* 24 */ 's', 'u', 'b', 9, 0,
18
1.38k
  /* 29 */ 'a', 'd', 'd', 'c', 9, 0,
19
1.38k
  /* 35 */ 'p', 'o', 'p', 'c', 9, 0,
20
1.38k
  /* 41 */ 'a', 'd', 'd', 9, 0,
21
1.38k
  /* 46 */ 'u', 'l', 'd', 9, 0,
22
1.38k
  /* 51 */ 'a', 'n', 'd', 9, 0,
23
1.38k
  /* 56 */ 's', 'h', 'a', '.', 'f', 9, 0,
24
1.38k
  /* 63 */ 's', 'u', 'b', 'b', '.', 'f', 9, 0,
25
1.38k
  /* 71 */ 's', 'u', 'b', '.', 'f', 9, 0,
26
1.38k
  /* 78 */ 'a', 'd', 'd', 'c', '.', 'f', 9, 0,
27
1.38k
  /* 86 */ 'a', 'd', 'd', '.', 'f', 9, 0,
28
1.38k
  /* 93 */ 'a', 'n', 'd', '.', 'f', 9, 0,
29
1.38k
  /* 100 */ 's', 'h', '.', 'f', 9, 0,
30
1.38k
  /* 106 */ 'x', 'o', 'r', '.', 'f', 9, 0,
31
1.38k
  /* 113 */ 'u', 'l', 'd', '.', 'h', 9, 0,
32
1.38k
  /* 120 */ 's', 't', '.', 'h', 9, 0,
33
1.38k
  /* 126 */ 's', 'h', 9, 0,
34
1.38k
  /* 130 */ 'x', 'o', 'r', 9, 0,
35
1.38k
  /* 135 */ 'b', 't', 9, 0,
36
1.38k
  /* 139 */ 's', 't', 9, 0,
37
1.38k
  /* 143 */ 'm', 'o', 'v', 9, 0,
38
1.38k
  /* 148 */ 'l', 'e', 'a', 'd', 'z', 9, 0,
39
1.38k
  /* 155 */ 't', 'r', 'a', 'i', 'l', 'z', 9, 0,
40
1.38k
  /* 163 */ '#', 'A', 'D', 'J', 'D', 'Y', 'N', 'A', 'L', 'L', 'O', 'C', 32, 0,
41
1.38k
  /* 177 */ '#', 'A', 'D', 'J', 'C', 'A', 'L', 'L', 'S', 'T', 'A', 'C', 'K', 'D', 'O', 'W', 'N', 32, 0,
42
1.38k
  /* 196 */ '#', 'A', 'D', 'J', 'C', 'A', 'L', 'L', 'S', 'T', 'A', 'C', 'K', 'U', 'P', 32, 0,
43
1.38k
  /* 213 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'P', 'a', 't', 'c', 'h', 'a', 'b', 'l', 'e', 32, 'R', 'E', 'T', '.', 0,
44
1.38k
  /* 244 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'y', 'p', 'e', 'd', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
45
1.38k
  /* 268 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'C', 'u', 's', 't', 'o', 'm', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
46
1.38k
  /* 293 */ 's', 'e', 'l', '.', 0,
47
1.38k
  /* 298 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'n', 't', 'e', 'r', '.', 0,
48
1.38k
  /* 321 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'a', 'i', 'l', 32, 'C', 'a', 'l', 'l', 32, 'E', 'x', 'i', 't', '.', 0,
49
1.38k
  /* 344 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'x', 'i', 't', '.', 0,
50
1.38k
  /* 366 */ 'l', 'o', 'g', '_', '0', 0,
51
1.38k
  /* 372 */ 'l', 'o', 'g', '_', '1', 0,
52
1.38k
  /* 378 */ 'l', 'o', 'g', '_', '2', 0,
53
1.38k
  /* 384 */ 'l', 'o', 'g', '_', '3', 0,
54
1.38k
  /* 390 */ 'l', 'o', 'g', '_', '4', 0,
55
1.38k
  /* 396 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'E', 'N', 'D', 0,
56
1.38k
  /* 409 */ 'B', 'U', 'N', 'D', 'L', 'E', 0,
57
1.38k
  /* 416 */ 'D', 'B', 'G', '_', 'V', 'A', 'L', 'U', 'E', 0,
58
1.38k
  /* 426 */ 'D', 'B', 'G', '_', 'L', 'A', 'B', 'E', 'L', 0,
59
1.38k
  /* 436 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'S', 'T', 'A', 'R', 'T', 0,
60
1.38k
  /* 451 */ 's', 'h', 'a', 0,
61
1.38k
  /* 455 */ 's', 'u', 'b', 'b', 0,
62
1.38k
  /* 460 */ 's', 'u', 'b', 0,
63
1.38k
  /* 464 */ 'a', 'd', 'd', 'c', 0,
64
1.38k
  /* 469 */ 'a', 'd', 'd', 0,
65
1.38k
  /* 473 */ 'a', 'n', 'd', 0,
66
1.38k
  /* 477 */ 's', 'h', 'a', '.', 'f', 0,
67
1.38k
  /* 483 */ 's', 'u', 'b', 'b', '.', 'f', 0,
68
1.38k
  /* 490 */ 's', 'u', 'b', '.', 'f', 0,
69
1.38k
  /* 496 */ 'a', 'd', 'd', 'c', '.', 'f', 0,
70
1.38k
  /* 503 */ 'a', 'd', 'd', '.', 'f', 0,
71
1.38k
  /* 509 */ 'a', 'n', 'd', '.', 'f', 0,
72
1.38k
  /* 515 */ 's', 'h', '.', 'f', 0,
73
1.38k
  /* 520 */ 'x', 'o', 'r', '.', 'f', 0,
74
1.38k
  /* 526 */ 's', 'h', 0,
75
1.38k
  /* 529 */ '#', 32, 'F', 'E', 'n', 't', 'r', 'y', 32, 'c', 'a', 'l', 'l', 0,
76
1.38k
  /* 543 */ 'l', 'd', 9, '-', '4', '[', '%', 'f', 'p', ']', ',', 32, '%', 'p', 'c', 32, '!', 32, 'r', 'e', 't', 'u', 'r', 'n', 0,
77
1.38k
  /* 568 */ 'n', 'o', 'p', 0,
78
1.38k
  /* 572 */ 'x', 'o', 'r', 0,
79
1.38k
  /* 576 */ 's', 0,
80
1.38k
  };
81
1.38k
82
1.38k
  static const uint16_t OpInfo0[] = {
83
1.38k
    0U, // PHI
84
1.38k
    0U, // INLINEASM
85
1.38k
    0U, // INLINEASM_BR
86
1.38k
    0U, // CFI_INSTRUCTION
87
1.38k
    0U, // EH_LABEL
88
1.38k
    0U, // GC_LABEL
89
1.38k
    0U, // ANNOTATION_LABEL
90
1.38k
    0U, // KILL
91
1.38k
    0U, // EXTRACT_SUBREG
92
1.38k
    0U, // INSERT_SUBREG
93
1.38k
    0U, // IMPLICIT_DEF
94
1.38k
    0U, // SUBREG_TO_REG
95
1.38k
    0U, // COPY_TO_REGCLASS
96
1.38k
    417U, // DBG_VALUE
97
1.38k
    427U, // DBG_LABEL
98
1.38k
    0U, // REG_SEQUENCE
99
1.38k
    0U, // COPY
100
1.38k
    410U, // BUNDLE
101
1.38k
    437U, // LIFETIME_START
102
1.38k
    397U, // LIFETIME_END
103
1.38k
    0U, // STACKMAP
104
1.38k
    530U, // FENTRY_CALL
105
1.38k
    0U, // PATCHPOINT
106
1.38k
    0U, // LOAD_STACK_GUARD
107
1.38k
    0U, // STATEPOINT
108
1.38k
    0U, // LOCAL_ESCAPE
109
1.38k
    0U, // FAULTING_OP
110
1.38k
    0U, // PATCHABLE_OP
111
1.38k
    299U, // PATCHABLE_FUNCTION_ENTER
112
1.38k
    214U, // PATCHABLE_RET
113
1.38k
    345U, // PATCHABLE_FUNCTION_EXIT
114
1.38k
    322U, // PATCHABLE_TAIL_CALL
115
1.38k
    269U, // PATCHABLE_EVENT_CALL
116
1.38k
    245U, // PATCHABLE_TYPED_EVENT_CALL
117
1.38k
    0U, // ICALL_BRANCH_FUNNEL
118
1.38k
    0U, // G_ADD
119
1.38k
    0U, // G_SUB
120
1.38k
    0U, // G_MUL
121
1.38k
    0U, // G_SDIV
122
1.38k
    0U, // G_UDIV
123
1.38k
    0U, // G_SREM
124
1.38k
    0U, // G_UREM
125
1.38k
    0U, // G_AND
126
1.38k
    0U, // G_OR
127
1.38k
    0U, // G_XOR
128
1.38k
    0U, // G_IMPLICIT_DEF
129
1.38k
    0U, // G_PHI
130
1.38k
    0U, // G_FRAME_INDEX
131
1.38k
    0U, // G_GLOBAL_VALUE
132
1.38k
    0U, // G_EXTRACT
133
1.38k
    0U, // G_UNMERGE_VALUES
134
1.38k
    0U, // G_INSERT
135
1.38k
    0U, // G_MERGE_VALUES
136
1.38k
    0U, // G_BUILD_VECTOR
137
1.38k
    0U, // G_BUILD_VECTOR_TRUNC
138
1.38k
    0U, // G_CONCAT_VECTORS
139
1.38k
    0U, // G_PTRTOINT
140
1.38k
    0U, // G_INTTOPTR
141
1.38k
    0U, // G_BITCAST
142
1.38k
    0U, // G_INTRINSIC_TRUNC
143
1.38k
    0U, // G_INTRINSIC_ROUND
144
1.38k
    0U, // G_LOAD
145
1.38k
    0U, // G_SEXTLOAD
146
1.38k
    0U, // G_ZEXTLOAD
147
1.38k
    0U, // G_STORE
148
1.38k
    0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
149
1.38k
    0U, // G_ATOMIC_CMPXCHG
150
1.38k
    0U, // G_ATOMICRMW_XCHG
151
1.38k
    0U, // G_ATOMICRMW_ADD
152
1.38k
    0U, // G_ATOMICRMW_SUB
153
1.38k
    0U, // G_ATOMICRMW_AND
154
1.38k
    0U, // G_ATOMICRMW_NAND
155
1.38k
    0U, // G_ATOMICRMW_OR
156
1.38k
    0U, // G_ATOMICRMW_XOR
157
1.38k
    0U, // G_ATOMICRMW_MAX
158
1.38k
    0U, // G_ATOMICRMW_MIN
159
1.38k
    0U, // G_ATOMICRMW_UMAX
160
1.38k
    0U, // G_ATOMICRMW_UMIN
161
1.38k
    0U, // G_BRCOND
162
1.38k
    0U, // G_BRINDIRECT
163
1.38k
    0U, // G_INTRINSIC
164
1.38k
    0U, // G_INTRINSIC_W_SIDE_EFFECTS
165
1.38k
    0U, // G_ANYEXT
166
1.38k
    0U, // G_TRUNC
167
1.38k
    0U, // G_CONSTANT
168
1.38k
    0U, // G_FCONSTANT
169
1.38k
    0U, // G_VASTART
170
1.38k
    0U, // G_VAARG
171
1.38k
    0U, // G_SEXT
172
1.38k
    0U, // G_ZEXT
173
1.38k
    0U, // G_SHL
174
1.38k
    0U, // G_LSHR
175
1.38k
    0U, // G_ASHR
176
1.38k
    0U, // G_ICMP
177
1.38k
    0U, // G_FCMP
178
1.38k
    0U, // G_SELECT
179
1.38k
    0U, // G_UADDO
180
1.38k
    0U, // G_UADDE
181
1.38k
    0U, // G_USUBO
182
1.38k
    0U, // G_USUBE
183
1.38k
    0U, // G_SADDO
184
1.38k
    0U, // G_SADDE
185
1.38k
    0U, // G_SSUBO
186
1.38k
    0U, // G_SSUBE
187
1.38k
    0U, // G_UMULO
188
1.38k
    0U, // G_SMULO
189
1.38k
    0U, // G_UMULH
190
1.38k
    0U, // G_SMULH
191
1.38k
    0U, // G_FADD
192
1.38k
    0U, // G_FSUB
193
1.38k
    0U, // G_FMUL
194
1.38k
    0U, // G_FMA
195
1.38k
    0U, // G_FDIV
196
1.38k
    0U, // G_FREM
197
1.38k
    0U, // G_FPOW
198
1.38k
    0U, // G_FEXP
199
1.38k
    0U, // G_FEXP2
200
1.38k
    0U, // G_FLOG
201
1.38k
    0U, // G_FLOG2
202
1.38k
    0U, // G_FLOG10
203
1.38k
    0U, // G_FNEG
204
1.38k
    0U, // G_FPEXT
205
1.38k
    0U, // G_FPTRUNC
206
1.38k
    0U, // G_FPTOSI
207
1.38k
    0U, // G_FPTOUI
208
1.38k
    0U, // G_SITOFP
209
1.38k
    0U, // G_UITOFP
210
1.38k
    0U, // G_FABS
211
1.38k
    0U, // G_FCANONICALIZE
212
1.38k
    0U, // G_GEP
213
1.38k
    0U, // G_PTR_MASK
214
1.38k
    0U, // G_BR
215
1.38k
    0U, // G_INSERT_VECTOR_ELT
216
1.38k
    0U, // G_EXTRACT_VECTOR_ELT
217
1.38k
    0U, // G_SHUFFLE_VECTOR
218
1.38k
    0U, // G_CTTZ
219
1.38k
    0U, // G_CTTZ_ZERO_UNDEF
220
1.38k
    0U, // G_CTLZ
221
1.38k
    0U, // G_CTLZ_ZERO_UNDEF
222
1.38k
    0U, // G_CTPOP
223
1.38k
    0U, // G_BSWAP
224
1.38k
    0U, // G_FCEIL
225
1.38k
    0U, // G_FCOS
226
1.38k
    0U, // G_FSIN
227
1.38k
    0U, // G_FSQRT
228
1.38k
    0U, // G_FFLOOR
229
1.38k
    0U, // G_ADDRSPACE_CAST
230
1.38k
    0U, // G_BLOCK_ADDR
231
1.38k
    1202U,  // ADJCALLSTACKDOWN
232
1.38k
    1221U,  // ADJCALLSTACKUP
233
1.38k
    1188U,  // ADJDYNALLOC
234
1.38k
    0U, // CALL
235
1.38k
    0U, // CALLR
236
1.38k
    18511U, // ADDC_F_I_HI
237
1.38k
    34895U, // ADDC_F_I_LO
238
1.38k
    3569U,  // ADDC_F_R
239
1.38k
    18462U, // ADDC_I_HI
240
1.38k
    34846U, // ADDC_I_LO
241
1.38k
    3537U,  // ADDC_R
242
1.38k
    18519U, // ADD_F_I_HI
243
1.38k
    34903U, // ADD_F_I_LO
244
1.38k
    3576U,  // ADD_F_R
245
1.38k
    18474U, // ADD_I_HI
246
1.38k
    34858U, // ADD_I_LO
247
1.38k
    3542U,  // ADD_R
248
1.38k
    51294U, // AND_F_I_HI
249
1.38k
    2142U,  // AND_F_I_LO
250
1.38k
    3582U,  // AND_F_R
251
1.38k
    51252U, // AND_I_HI
252
1.38k
    2100U,  // AND_I_LO
253
1.38k
    3546U,  // AND_R
254
1.38k
    20939U, // BRCC
255
1.38k
    20939U, // BRIND_CC
256
1.38k
    5579U,  // BRIND_CCA
257
1.38k
    37323U, // BRR
258
1.38k
    50312U, // BT
259
1.38k
    50312U, // JR
260
1.38k
    6192U,  // LDADDR
261
1.38k
    7175U,  // LDBs_RI
262
1.38k
    8199U,  // LDBs_RR
263
1.38k
    7174U,  // LDBz_RI
264
1.38k
    8198U,  // LDBz_RR
265
1.38k
    7283U,  // LDHs_RI
266
1.38k
    8307U,  // LDHs_RR
267
1.38k
    7282U,  // LDHz_RI
268
1.38k
    8306U,  // LDHz_RR
269
1.38k
    9263U,  // LDW_RI
270
1.38k
    8240U,  // LDW_RR
271
1.38k
    8239U,  // LDWz_RR
272
1.38k
    2197U,  // LEADZ
273
1.38k
    367U, // LOG0
274
1.38k
    373U, // LOG1
275
1.38k
    379U, // LOG2
276
1.38k
    385U, // LOG3
277
1.38k
    391U, // LOG4
278
1.38k
    10384U, // MOVHI
279
1.38k
    569U, // NOP
280
1.38k
    18540U, // OR_F_I_HI
281
1.38k
    34924U, // OR_F_I_LO
282
1.38k
    3594U,  // OR_F_R
283
1.38k
    18564U, // OR_I_HI
284
1.38k
    34948U, // OR_I_LO
285
1.38k
    3646U,  // OR_R
286
1.38k
    2084U,  // POPC
287
1.38k
    544U, // RET
288
1.38k
    34873U, // SA_F_I
289
1.38k
    34817U, // SA_I
290
1.38k
    21057U, // SCC
291
1.38k
    11558U, // SELECT
292
1.38k
    17480U, // SFSUB_F_RI_HI
293
1.38k
    17480U, // SFSUB_F_RI_LO
294
1.38k
    17480U, // SFSUB_F_RR
295
1.38k
    3588U,  // SHL_F_R
296
1.38k
    3599U,  // SHL_R
297
1.38k
    2192U,  // SLI
298
1.38k
    34917U, // SL_F_I
299
1.38k
    34943U, // SL_I
300
1.38k
    3550U,  // SRA_F_R
301
1.38k
    3524U,  // SRA_R
302
1.38k
    3588U,  // SRL_F_R
303
1.38k
    3599U,  // SRL_R
304
1.38k
    17548U, // STADDR
305
1.38k
    17421U, // STB_RI
306
1.38k
    17421U, // STB_RR
307
1.38k
    17529U, // STH_RI
308
1.38k
    17529U, // STH_RR
309
1.38k
    18496U, // SUBB_F_I_HI
310
1.38k
    34880U, // SUBB_F_I_LO
311
1.38k
    3556U,  // SUBB_F_R
312
1.38k
    18451U, // SUBB_I_HI
313
1.38k
    34835U, // SUBB_I_LO
314
1.38k
    3528U,  // SUBB_R
315
1.38k
    18504U, // SUB_F_I_HI
316
1.38k
    34888U, // SUB_F_I_LO
317
1.38k
    3563U,  // SUB_F_R
318
1.38k
    18457U, // SUB_I_HI
319
1.38k
    34841U, // SUB_I_LO
320
1.38k
    3533U,  // SUB_R
321
1.38k
    17548U, // SW_RI
322
1.38k
    17548U, // SW_RR
323
1.38k
    2204U,  // TRAILZ
324
1.38k
    18539U, // XOR_F_I_HI
325
1.38k
    34923U, // XOR_F_I_LO
326
1.38k
    3593U,  // XOR_F_R
327
1.38k
    18563U, // XOR_I_HI
328
1.38k
    34947U, // XOR_I_LO
329
1.38k
    3645U,  // XOR_R
330
1.38k
  };
331
1.38k
332
1.38k
  static const uint8_t OpInfo1[] = {
333
1.38k
    0U, // PHI
334
1.38k
    0U, // INLINEASM
335
1.38k
    0U, // INLINEASM_BR
336
1.38k
    0U, // CFI_INSTRUCTION
337
1.38k
    0U, // EH_LABEL
338
1.38k
    0U, // GC_LABEL
339
1.38k
    0U, // ANNOTATION_LABEL
340
1.38k
    0U, // KILL
341
1.38k
    0U, // EXTRACT_SUBREG
342
1.38k
    0U, // INSERT_SUBREG
343
1.38k
    0U, // IMPLICIT_DEF
344
1.38k
    0U, // SUBREG_TO_REG
345
1.38k
    0U, // COPY_TO_REGCLASS
346
1.38k
    0U, // DBG_VALUE
347
1.38k
    0U, // DBG_LABEL
348
1.38k
    0U, // REG_SEQUENCE
349
1.38k
    0U, // COPY
350
1.38k
    0U, // BUNDLE
351
1.38k
    0U, // LIFETIME_START
352
1.38k
    0U, // LIFETIME_END
353
1.38k
    0U, // STACKMAP
354
1.38k
    0U, // FENTRY_CALL
355
1.38k
    0U, // PATCHPOINT
356
1.38k
    0U, // LOAD_STACK_GUARD
357
1.38k
    0U, // STATEPOINT
358
1.38k
    0U, // LOCAL_ESCAPE
359
1.38k
    0U, // FAULTING_OP
360
1.38k
    0U, // PATCHABLE_OP
361
1.38k
    0U, // PATCHABLE_FUNCTION_ENTER
362
1.38k
    0U, // PATCHABLE_RET
363
1.38k
    0U, // PATCHABLE_FUNCTION_EXIT
364
1.38k
    0U, // PATCHABLE_TAIL_CALL
365
1.38k
    0U, // PATCHABLE_EVENT_CALL
366
1.38k
    0U, // PATCHABLE_TYPED_EVENT_CALL
367
1.38k
    0U, // ICALL_BRANCH_FUNNEL
368
1.38k
    0U, // G_ADD
369
1.38k
    0U, // G_SUB
370
1.38k
    0U, // G_MUL
371
1.38k
    0U, // G_SDIV
372
1.38k
    0U, // G_UDIV
373
1.38k
    0U, // G_SREM
374
1.38k
    0U, // G_UREM
375
1.38k
    0U, // G_AND
376
1.38k
    0U, // G_OR
377
1.38k
    0U, // G_XOR
378
1.38k
    0U, // G_IMPLICIT_DEF
379
1.38k
    0U, // G_PHI
380
1.38k
    0U, // G_FRAME_INDEX
381
1.38k
    0U, // G_GLOBAL_VALUE
382
1.38k
    0U, // G_EXTRACT
383
1.38k
    0U, // G_UNMERGE_VALUES
384
1.38k
    0U, // G_INSERT
385
1.38k
    0U, // G_MERGE_VALUES
386
1.38k
    0U, // G_BUILD_VECTOR
387
1.38k
    0U, // G_BUILD_VECTOR_TRUNC
388
1.38k
    0U, // G_CONCAT_VECTORS
389
1.38k
    0U, // G_PTRTOINT
390
1.38k
    0U, // G_INTTOPTR
391
1.38k
    0U, // G_BITCAST
392
1.38k
    0U, // G_INTRINSIC_TRUNC
393
1.38k
    0U, // G_INTRINSIC_ROUND
394
1.38k
    0U, // G_LOAD
395
1.38k
    0U, // G_SEXTLOAD
396
1.38k
    0U, // G_ZEXTLOAD
397
1.38k
    0U, // G_STORE
398
1.38k
    0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
399
1.38k
    0U, // G_ATOMIC_CMPXCHG
400
1.38k
    0U, // G_ATOMICRMW_XCHG
401
1.38k
    0U, // G_ATOMICRMW_ADD
402
1.38k
    0U, // G_ATOMICRMW_SUB
403
1.38k
    0U, // G_ATOMICRMW_AND
404
1.38k
    0U, // G_ATOMICRMW_NAND
405
1.38k
    0U, // G_ATOMICRMW_OR
406
1.38k
    0U, // G_ATOMICRMW_XOR
407
1.38k
    0U, // G_ATOMICRMW_MAX
408
1.38k
    0U, // G_ATOMICRMW_MIN
409
1.38k
    0U, // G_ATOMICRMW_UMAX
410
1.38k
    0U, // G_ATOMICRMW_UMIN
411
1.38k
    0U, // G_BRCOND
412
1.38k
    0U, // G_BRINDIRECT
413
1.38k
    0U, // G_INTRINSIC
414
1.38k
    0U, // G_INTRINSIC_W_SIDE_EFFECTS
415
1.38k
    0U, // G_ANYEXT
416
1.38k
    0U, // G_TRUNC
417
1.38k
    0U, // G_CONSTANT
418
1.38k
    0U, // G_FCONSTANT
419
1.38k
    0U, // G_VASTART
420
1.38k
    0U, // G_VAARG
421
1.38k
    0U, // G_SEXT
422
1.38k
    0U, // G_ZEXT
423
1.38k
    0U, // G_SHL
424
1.38k
    0U, // G_LSHR
425
1.38k
    0U, // G_ASHR
426
1.38k
    0U, // G_ICMP
427
1.38k
    0U, // G_FCMP
428
1.38k
    0U, // G_SELECT
429
1.38k
    0U, // G_UADDO
430
1.38k
    0U, // G_UADDE
431
1.38k
    0U, // G_USUBO
432
1.38k
    0U, // G_USUBE
433
1.38k
    0U, // G_SADDO
434
1.38k
    0U, // G_SADDE
435
1.38k
    0U, // G_SSUBO
436
1.38k
    0U, // G_SSUBE
437
1.38k
    0U, // G_UMULO
438
1.38k
    0U, // G_SMULO
439
1.38k
    0U, // G_UMULH
440
1.38k
    0U, // G_SMULH
441
1.38k
    0U, // G_FADD
442
1.38k
    0U, // G_FSUB
443
1.38k
    0U, // G_FMUL
444
1.38k
    0U, // G_FMA
445
1.38k
    0U, // G_FDIV
446
1.38k
    0U, // G_FREM
447
1.38k
    0U, // G_FPOW
448
1.38k
    0U, // G_FEXP
449
1.38k
    0U, // G_FEXP2
450
1.38k
    0U, // G_FLOG
451
1.38k
    0U, // G_FLOG2
452
1.38k
    0U, // G_FLOG10
453
1.38k
    0U, // G_FNEG
454
1.38k
    0U, // G_FPEXT
455
1.38k
    0U, // G_FPTRUNC
456
1.38k
    0U, // G_FPTOSI
457
1.38k
    0U, // G_FPTOUI
458
1.38k
    0U, // G_SITOFP
459
1.38k
    0U, // G_UITOFP
460
1.38k
    0U, // G_FABS
461
1.38k
    0U, // G_FCANONICALIZE
462
1.38k
    0U, // G_GEP
463
1.38k
    0U, // G_PTR_MASK
464
1.38k
    0U, // G_BR
465
1.38k
    0U, // G_INSERT_VECTOR_ELT
466
1.38k
    0U, // G_EXTRACT_VECTOR_ELT
467
1.38k
    0U, // G_SHUFFLE_VECTOR
468
1.38k
    0U, // G_CTTZ
469
1.38k
    0U, // G_CTTZ_ZERO_UNDEF
470
1.38k
    0U, // G_CTLZ
471
1.38k
    0U, // G_CTLZ_ZERO_UNDEF
472
1.38k
    0U, // G_CTPOP
473
1.38k
    0U, // G_BSWAP
474
1.38k
    0U, // G_FCEIL
475
1.38k
    0U, // G_FCOS
476
1.38k
    0U, // G_FSIN
477
1.38k
    0U, // G_FSQRT
478
1.38k
    0U, // G_FFLOOR
479
1.38k
    0U, // G_ADDRSPACE_CAST
480
1.38k
    0U, // G_BLOCK_ADDR
481
1.38k
    0U, // ADJCALLSTACKDOWN
482
1.38k
    0U, // ADJCALLSTACKUP
483
1.38k
    0U, // ADJDYNALLOC
484
1.38k
    0U, // CALL
485
1.38k
    0U, // CALLR
486
1.38k
    0U, // ADDC_F_I_HI
487
1.38k
    0U, // ADDC_F_I_LO
488
1.38k
    0U, // ADDC_F_R
489
1.38k
    0U, // ADDC_I_HI
490
1.38k
    0U, // ADDC_I_LO
491
1.38k
    0U, // ADDC_R
492
1.38k
    0U, // ADD_F_I_HI
493
1.38k
    0U, // ADD_F_I_LO
494
1.38k
    0U, // ADD_F_R
495
1.38k
    0U, // ADD_I_HI
496
1.38k
    0U, // ADD_I_LO
497
1.38k
    0U, // ADD_R
498
1.38k
    0U, // AND_F_I_HI
499
1.38k
    1U, // AND_F_I_LO
500
1.38k
    0U, // AND_F_R
501
1.38k
    0U, // AND_I_HI
502
1.38k
    1U, // AND_I_LO
503
1.38k
    0U, // AND_R
504
1.38k
    1U, // BRCC
505
1.38k
    1U, // BRIND_CC
506
1.38k
    0U, // BRIND_CCA
507
1.38k
    1U, // BRR
508
1.38k
    1U, // BT
509
1.38k
    1U, // JR
510
1.38k
    0U, // LDADDR
511
1.38k
    0U, // LDBs_RI
512
1.38k
    0U, // LDBs_RR
513
1.38k
    0U, // LDBz_RI
514
1.38k
    0U, // LDBz_RR
515
1.38k
    0U, // LDHs_RI
516
1.38k
    0U, // LDHs_RR
517
1.38k
    0U, // LDHz_RI
518
1.38k
    0U, // LDHz_RR
519
1.38k
    0U, // LDW_RI
520
1.38k
    0U, // LDW_RR
521
1.38k
    0U, // LDWz_RR
522
1.38k
    2U, // LEADZ
523
1.38k
    0U, // LOG0
524
1.38k
    0U, // LOG1
525
1.38k
    0U, // LOG2
526
1.38k
    0U, // LOG3
527
1.38k
    0U, // LOG4
528
1.38k
    0U, // MOVHI
529
1.38k
    0U, // NOP
530
1.38k
    0U, // OR_F_I_HI
531
1.38k
    0U, // OR_F_I_LO
532
1.38k
    0U, // OR_F_R
533
1.38k
    0U, // OR_I_HI
534
1.38k
    0U, // OR_I_LO
535
1.38k
    0U, // OR_R
536
1.38k
    2U, // POPC
537
1.38k
    0U, // RET
538
1.38k
    0U, // SA_F_I
539
1.38k
    0U, // SA_I
540
1.38k
    1U, // SCC
541
1.38k
    0U, // SELECT
542
1.38k
    2U, // SFSUB_F_RI_HI
543
1.38k
    6U, // SFSUB_F_RI_LO
544
1.38k
    6U, // SFSUB_F_RR
545
1.38k
    0U, // SHL_F_R
546
1.38k
    0U, // SHL_R
547
1.38k
    2U, // SLI
548
1.38k
    0U, // SL_F_I
549
1.38k
    0U, // SL_I
550
1.38k
    0U, // SRA_F_R
551
1.38k
    0U, // SRA_R
552
1.38k
    0U, // SRL_F_R
553
1.38k
    0U, // SRL_R
554
1.38k
    10U,  // STADDR
555
1.38k
    14U,  // STB_RI
556
1.38k
    18U,  // STB_RR
557
1.38k
    14U,  // STH_RI
558
1.38k
    18U,  // STH_RR
559
1.38k
    0U, // SUBB_F_I_HI
560
1.38k
    0U, // SUBB_F_I_LO
561
1.38k
    0U, // SUBB_F_R
562
1.38k
    0U, // SUBB_I_HI
563
1.38k
    0U, // SUBB_I_LO
564
1.38k
    0U, // SUBB_R
565
1.38k
    0U, // SUB_F_I_HI
566
1.38k
    0U, // SUB_F_I_LO
567
1.38k
    0U, // SUB_F_R
568
1.38k
    0U, // SUB_I_HI
569
1.38k
    0U, // SUB_I_LO
570
1.38k
    0U, // SUB_R
571
1.38k
    22U,  // SW_RI
572
1.38k
    18U,  // SW_RR
573
1.38k
    2U, // TRAILZ
574
1.38k
    0U, // XOR_F_I_HI
575
1.38k
    0U, // XOR_F_I_LO
576
1.38k
    0U, // XOR_F_R
577
1.38k
    0U, // XOR_I_HI
578
1.38k
    0U, // XOR_I_LO
579
1.38k
    0U, // XOR_R
580
1.38k
  };
581
1.38k
582
1.38k
  O << "\t";
583
1.38k
584
1.38k
  // Emit the opcode for the instruction.
585
1.38k
  uint32_t Bits = 0;
586
1.38k
  Bits |= OpInfo0[MI->getOpcode()] << 0;
587
1.38k
  Bits |= OpInfo1[MI->getOpcode()] << 16;
588
1.38k
  assert(Bits != 0 && "Cannot print this instruction.");
589
1.38k
  O << AsmStrs+(Bits & 1023)-1;
590
1.38k
591
1.38k
592
1.38k
  // Fragment 0 encoded into 4 bits for 12 unique commands.
593
1.38k
  switch ((Bits >> 10) & 15) {
594
1.38k
  
default: 0
llvm_unreachable0
("Invalid command number.");
595
1.38k
  case 0:
596
102
    // DBG_VALUE, DBG_LABEL, BUNDLE, LIFETIME_START, LIFETIME_END, FENTRY_CAL...
597
102
    return;
598
1.38k
    
break0
;
599
1.38k
  case 1:
600
350
    // ADJCALLSTACKDOWN, ADJCALLSTACKUP, ADJDYNALLOC, BT, JR, SFSUB_F_RI_HI, ...
601
350
    printOperand(MI, 0, O);
602
350
    break;
603
1.38k
  case 2:
604
464
    // ADDC_F_I_HI, ADDC_F_I_LO, ADDC_I_HI, ADDC_I_LO, ADD_F_I_HI, ADD_F_I_LO...
605
464
    printOperand(MI, 1, O);
606
464
    O << ", ";
607
464
    break;
608
1.38k
  case 3:
609
96
    // ADDC_F_R, ADDC_R, ADD_F_R, ADD_R, AND_F_R, AND_R, OR_F_R, OR_R, SHL_F_...
610
96
    printPredicateOperand(MI, 3, O);
611
96
    O << "\t";
612
96
    printOperand(MI, 1, O);
613
96
    O << ", ";
614
96
    printOperand(MI, 2, O);
615
96
    O << ", ";
616
96
    printOperand(MI, 0, O);
617
96
    return;
618
1.38k
    
break0
;
619
1.38k
  case 4:
620
155
    // BRCC, BRIND_CC, BRR, SCC
621
155
    printCCOperand(MI, 1, O);
622
155
    break;
623
1.38k
  case 5:
624
0
    // BRIND_CCA
625
0
    printCCOperand(MI, 2, O);
626
0
    O << "\t";
627
0
    printOperand(MI, 0, O);
628
0
    O << " add ";
629
0
    printOperand(MI, 1, O);
630
0
    return;
631
1.38k
    
break0
;
632
1.38k
  case 6:
633
5
    // LDADDR
634
5
    printMemImmOperand(MI, 1, O);
635
5
    O << ", ";
636
5
    printOperand(MI, 0, O);
637
5
    return;
638
1.38k
    
break0
;
639
1.38k
  case 7:
640
98
    // LDBs_RI, LDBz_RI, LDHs_RI, LDHz_RI
641
98
    printMemSplsOperand(MI, 1, O);
642
98
    O << ", ";
643
98
    printOperand(MI, 0, O);
644
98
    return;
645
1.38k
    
break0
;
646
1.38k
  case 8:
647
70
    // LDBs_RR, LDBz_RR, LDHs_RR, LDHz_RR, LDW_RR, LDWz_RR
648
70
    printMemRrOperand(MI, 1, O);
649
70
    O << ", ";
650
70
    printOperand(MI, 0, O);
651
70
    return;
652
1.38k
    
break0
;
653
1.38k
  case 9:
654
0
    // LDW_RI
655
0
    printMemRiOperand(MI, 1, O);
656
0
    O << ", ";
657
0
    printOperand(MI, 0, O);
658
0
    return;
659
1.38k
    
break0
;
660
1.38k
  case 10:
661
9
    // MOVHI
662
9
    printHi16ImmOperand(MI, 1, O);
663
9
    O << ", ";
664
9
    printOperand(MI, 0, O);
665
9
    return;
666
1.38k
    
break0
;
667
1.38k
  case 11:
668
40
    // SELECT
669
40
    printCCOperand(MI, 3, O);
670
40
    O << ' ';
671
40
    printOperand(MI, 1, O);
672
40
    O << ", ";
673
40
    printOperand(MI, 2, O);
674
40
    O << ", ";
675
40
    printOperand(MI, 0, O);
676
40
    return;
677
1.38k
    
break0
;
678
969
  }
679
969
680
969
681
969
  // Fragment 1 encoded into 4 bits for 10 unique commands.
682
969
  switch ((Bits >> 14) & 15) {
683
969
  
default: 0
llvm_unreachable0
("Invalid command number.");
684
969
  case 0:
685
0
    // ADJCALLSTACKDOWN, ADJCALLSTACKUP, ADJDYNALLOC
686
0
    O << ' ';
687
0
    printOperand(MI, 1, O);
688
0
    return;
689
969
    
break0
;
690
969
  case 1:
691
24
    // ADDC_F_I_HI, ADDC_I_HI, ADD_F_I_HI, ADD_I_HI, OR_F_I_HI, OR_I_HI, SUBB...
692
24
    printHi16ImmOperand(MI, 2, O);
693
24
    O << ", ";
694
24
    printOperand(MI, 0, O);
695
24
    return;
696
969
    
break0
;
697
969
  case 2:
698
413
    // ADDC_F_I_LO, ADDC_I_LO, ADD_F_I_LO, ADD_I_LO, OR_F_I_LO, OR_I_LO, SA_F...
699
413
    printOperand(MI, 2, O);
700
413
    O << ", ";
701
413
    printOperand(MI, 0, O);
702
413
    return;
703
969
    
break0
;
704
969
  case 3:
705
4
    // AND_F_I_HI, AND_I_HI
706
4
    printHi16AndImmOperand(MI, 2, O);
707
4
    O << ", ";
708
4
    printOperand(MI, 0, O);
709
4
    return;
710
969
    
break0
;
711
969
  case 4:
712
4
    // AND_F_I_LO, AND_I_LO
713
4
    printLo16AndImmOperand(MI, 2, O);
714
4
    O << ", ";
715
4
    printOperand(MI, 0, O);
716
4
    return;
717
969
    
break0
;
718
969
  case 5:
719
120
    // BRCC, BRIND_CC, SCC
720
120
    O << "\t";
721
120
    printOperand(MI, 0, O);
722
120
    return;
723
969
    
break0
;
724
969
  case 6:
725
35
    // BRR
726
35
    O << ".r\t";
727
35
    printOperand(MI, 0, O);
728
35
    return;
729
969
    
break0
;
730
969
  case 7:
731
27
    // BT, JR
732
27
    return;
733
969
    
break0
;
734
969
  case 8:
735
19
    // LEADZ, POPC, SLI, TRAILZ
736
19
    printOperand(MI, 0, O);
737
19
    return;
738
969
    
break0
;
739
969
  case 9:
740
323
    // SFSUB_F_RI_HI, SFSUB_F_RI_LO, SFSUB_F_RR, STADDR, STB_RI, STB_RR, STH_...
741
323
    O << ", ";
742
323
    break;
743
323
  }
744
323
745
323
746
323
  // Fragment 2 encoded into 3 bits for 6 unique commands.
747
323
  switch ((Bits >> 18) & 7) {
748
323
  
default: 0
llvm_unreachable0
("Invalid command number.");
749
323
  case 0:
750
0
    // SFSUB_F_RI_HI
751
0
    printHi16ImmOperand(MI, 1, O);
752
0
    O << ", %r0";
753
0
    return;
754
323
    
break0
;
755
323
  case 1:
756
59
    // SFSUB_F_RI_LO, SFSUB_F_RR
757
59
    printOperand(MI, 1, O);
758
59
    O << ", %r0";
759
59
    return;
760
323
    
break0
;
761
323
  case 2:
762
3
    // STADDR
763
3
    printMemImmOperand(MI, 1, O);
764
3
    return;
765
323
    
break0
;
766
323
  case 3:
767
52
    // STB_RI, STH_RI
768
52
    printMemSplsOperand(MI, 1, O);
769
52
    return;
770
323
    
break0
;
771
323
  case 4:
772
175
    // STB_RR, STH_RR, SW_RR
773
175
    printMemRrOperand(MI, 1, O);
774
175
    return;
775
323
    
break0
;
776
323
  case 5:
777
34
    // SW_RI
778
34
    printMemRiOperand(MI, 1, O);
779
34
    return;
780
323
    
break0
;
781
323
  }
782
323
783
323
}
784
785
786
/// getRegisterName - This method is automatically generated by tblgen
787
/// from the register set description.  This returns the assembler name
788
/// for the specified register.
789
3.38k
const char *LanaiInstPrinter::getRegisterName(unsigned RegNo) {
790
3.38k
  assert(RegNo && RegNo < 41 && "Invalid register number!");
791
3.38k
792
3.38k
  static const char AsmStrs[] = {
793
3.38k
  /* 0 */ 'r', '1', '0', 0,
794
3.38k
  /* 4 */ 'r', '2', '0', 0,
795
3.38k
  /* 8 */ 'r', '3', '0', 0,
796
3.38k
  /* 12 */ 'r', '0', 0,
797
3.38k
  /* 15 */ 'r', '1', '1', 0,
798
3.38k
  /* 19 */ 'r', '2', '1', 0,
799
3.38k
  /* 23 */ 'r', '3', '1', 0,
800
3.38k
  /* 27 */ 'r', 'r', '1', 0,
801
3.38k
  /* 31 */ 'r', '1', '2', 0,
802
3.38k
  /* 35 */ 'r', '2', '2', 0,
803
3.38k
  /* 39 */ 'r', 'r', '2', 0,
804
3.38k
  /* 43 */ 'r', '1', '3', 0,
805
3.38k
  /* 47 */ 'r', '2', '3', 0,
806
3.38k
  /* 51 */ 'r', '3', 0,
807
3.38k
  /* 54 */ 'r', '1', '4', 0,
808
3.38k
  /* 58 */ 'r', '2', '4', 0,
809
3.38k
  /* 62 */ 'r', '4', 0,
810
3.38k
  /* 65 */ 'r', '1', '5', 0,
811
3.38k
  /* 69 */ 'r', '2', '5', 0,
812
3.38k
  /* 73 */ 'r', '5', 0,
813
3.38k
  /* 76 */ 'r', '1', '6', 0,
814
3.38k
  /* 80 */ 'r', '2', '6', 0,
815
3.38k
  /* 84 */ 'r', '6', 0,
816
3.38k
  /* 87 */ 'r', '1', '7', 0,
817
3.38k
  /* 91 */ 'r', '2', '7', 0,
818
3.38k
  /* 95 */ 'r', '7', 0,
819
3.38k
  /* 98 */ 'r', '1', '8', 0,
820
3.38k
  /* 102 */ 'r', '2', '8', 0,
821
3.38k
  /* 106 */ 'r', '8', 0,
822
3.38k
  /* 109 */ 'r', '1', '9', 0,
823
3.38k
  /* 113 */ 'r', '2', '9', 0,
824
3.38k
  /* 117 */ 'r', '9', 0,
825
3.38k
  /* 120 */ 'r', 'c', 'a', 0,
826
3.38k
  /* 124 */ 'p', 'c', 0,
827
3.38k
  /* 127 */ 'f', 'p', 0,
828
3.38k
  /* 130 */ 's', 'p', 0,
829
3.38k
  /* 133 */ 'r', 'v', 0,
830
3.38k
  /* 136 */ 's', 'w', 0,
831
3.38k
  };
832
3.38k
833
3.38k
  static const uint8_t RegAsmOffset[] = {
834
3.38k
    127, 124, 120, 133, 130, 136, 12, 28, 40, 51, 62, 73, 84, 95, 
835
3.38k
    106, 117, 0, 15, 31, 43, 54, 65, 76, 87, 98, 109, 4, 19, 
836
3.38k
    35, 47, 58, 69, 80, 91, 102, 113, 8, 23, 27, 39, 
837
3.38k
  };
838
3.38k
839
3.38k
  assert (*(AsmStrs+RegAsmOffset[RegNo-1]) &&
840
3.38k
          "Invalid alt name index for register!");
841
3.38k
  return AsmStrs+RegAsmOffset[RegNo-1];
842
3.38k
}
843
844
#ifdef PRINT_ALIAS_INSTR
845
#undef PRINT_ALIAS_INSTR
846
847
1.60k
bool LanaiInstPrinter::printAliasInstr(const MCInst *MI, raw_ostream &OS) {
848
1.60k
  const char *AsmString;
849
1.60k
  switch (MI->getOpcode()) {
850
1.60k
  
default: return false1.17k
;
851
1.60k
  case Lanai::ADD_I_HI:
852
8
    if (MI->getNumOperands() == 3 &&
853
8
        MI->getOperand(0).isReg() &&
854
8
        MRI.getRegClass(Lanai::GPRRegClassID).contains(MI->getOperand(0).getReg()) &&
855
8
        MI->getOperand(1).getReg() == Lanai::R0) {
856
6
      // (ADD_I_HI GPR:$dst, R0, i32hi16:$imm16)
857
6
      AsmString = "mov $\xFF\x03\x01, $\x01";
858
6
      break;
859
6
    }
860
2
    return false;
861
199
  case Lanai::ADD_I_LO:
862
199
    if (MI->getNumOperands() == 3 &&
863
199
        MI->getOperand(0).isReg() &&
864
199
        MRI.getRegClass(Lanai::GPRRegClassID).contains(MI->getOperand(0).getReg()) &&
865
199
        MI->getOperand(1).getReg() == Lanai::R0) {
866
4
      // (ADD_I_LO GPR:$dst, R0, i32lo16z:$imm16)
867
4
      AsmString = "mov $\x03, $\x01";
868
4
      break;
869
4
    }
870
195
    return false;
871
195
  case Lanai::ADD_R:
872
12
    if (MI->getNumOperands() == 4 &&
873
12
        MI->getOperand(0).isReg() &&
874
12
        MRI.getRegClass(Lanai::GPRRegClassID).contains(MI->getOperand(0).getReg()) &&
875
12
        MI->getOperand(1).isReg() &&
876
12
        MRI.getRegClass(Lanai::GPRRegClassID).contains(MI->getOperand(1).getReg()) &&
877
12
        MI->getOperand(2).getReg() == Lanai::R0 &&
878
12
        
MI->getOperand(3).isImm()2
&&
879
12
        
MI->getOperand(3).getImm() == 02
) {
880
2
      // (ADD_R GPR:$dst, GPR:$src, R0, 0)
881
2
      AsmString = "mov $\x02, $\x01";
882
2
      break;
883
2
    }
884
10
    return false;
885
10
  case Lanai::AND_I_HI:
886
4
    if (MI->getNumOperands() == 3 &&
887
4
        MI->getOperand(0).isReg() &&
888
4
        MRI.getRegClass(Lanai::GPRRegClassID).contains(MI->getOperand(0).getReg()) &&
889
4
        MI->getOperand(1).getReg() == Lanai::R1) {
890
2
      // (AND_I_HI GPR:$dst, R1, i32hi16and:$imm16)
891
2
      AsmString = "mov $\xFF\x03\x02, $\x01";
892
2
      break;
893
2
    }
894
2
    return false;
895
5
  case Lanai::AND_I_LO:
896
5
    if (MI->getNumOperands() == 3 &&
897
5
        MI->getOperand(0).isReg() &&
898
5
        MRI.getRegClass(Lanai::GPRRegClassID).contains(MI->getOperand(0).getReg()) &&
899
5
        MI->getOperand(1).getReg() == Lanai::R1) {
900
3
      // (AND_I_LO GPR:$dst, R1, i32lo16and:$imm16)
901
3
      AsmString = "mov $\xFF\x03\x03, $\x01";
902
3
      break;
903
3
    }
904
2
    return false;
905
202
  case Lanai::LDW_RI:
906
202
    if (MI->getNumOperands() == 4 &&
907
202
        MI->getOperand(0).isReg() &&
908
202
        MRI.getRegClass(Lanai::GPRRegClassID).contains(MI->getOperand(0).getReg())) {
909
202
      // (LDW_RI GPR:$dst, MEMri:$src)
910
202
      AsmString = "ld $\xFF\x02\x04, $\x01";
911
202
      break;
912
202
    }
913
0
    return false;
914
219
  }
915
219
916
219
  unsigned I = 0;
917
674
  while (AsmString[I] != ' ' && 
AsmString[I] != '\t'455
&&
918
674
         
AsmString[I] != '$'455
&&
AsmString[I] != '\0'455
)
919
455
    ++I;
920
219
  OS << '\t' << StringRef(AsmString, I);
921
219
  if (AsmString[I] != '\0') {
922
219
    if (AsmString[I] == ' ' || 
AsmString[I] == '\t'0
) {
923
219
      OS << '\t';
924
219
      ++I;
925
219
    }
926
876
    do {
927
876
      if (AsmString[I] == '$') {
928
438
        ++I;
929
438
        if (AsmString[I] == (char)0xff) {
930
213
          ++I;
931
213
          int OpIdx = AsmString[I++] - 1;
932
213
          int PrintMethodIdx = AsmString[I++] - 1;
933
213
          printCustomAliasOperand(MI, OpIdx, PrintMethodIdx, OS);
934
213
        } else
935
225
          printOperand(MI, unsigned(AsmString[I++]) - 1, OS);
936
438
      } else {
937
438
        OS << AsmString[I++];
938
438
      }
939
876
    } while (AsmString[I] != '\0');
940
219
  }
941
219
942
219
  return true;
943
219
}
944
945
void LanaiInstPrinter::printCustomAliasOperand(
946
         const MCInst *MI, unsigned OpIdx,
947
         unsigned PrintMethodIdx,
948
213
         raw_ostream &OS) {
949
213
  switch (PrintMethodIdx) {
950
213
  default:
951
0
    llvm_unreachable("Unknown PrintMethod kind");
952
213
    
break0
;
953
213
  case 0:
954
6
    printHi16ImmOperand(MI, OpIdx, OS);
955
6
    break;
956
213
  case 1:
957
2
    printHi16AndImmOperand(MI, OpIdx, OS);
958
2
    break;
959
213
  case 2:
960
3
    printLo16AndImmOperand(MI, OpIdx, OS);
961
3
    break;
962
213
  case 3:
963
202
    printMemRiOperand(MI, OpIdx, OS);
964
202
    break;
965
213
  }
966
213
}
967
968
#endif // PRINT_ALIAS_INSTR