Coverage Report

Created: 2019-03-22 08:08

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/clang-build/lib/Target/MSP430/MSP430GenAsmWriter.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
2.87k
void MSP430InstPrinter::printInstruction(const MCInst *MI, raw_ostream &O) {
12
2.87k
  static const char AsmStrs[] = {
13
2.87k
  /* 0 */ 'r', 'r', 'a', 9, 0,
14
2.87k
  /* 5 */ 'r', 'r', 'a', '.', 'b', 9, 0,
15
2.87k
  /* 12 */ 's', 'u', 'b', '.', 'b', 9, 0,
16
2.87k
  /* 19 */ 's', 'u', 'b', 'c', '.', 'b', 9, 0,
17
2.87k
  /* 27 */ 'a', 'd', 'd', 'c', '.', 'b', 9, 0,
18
2.87k
  /* 35 */ 'b', 'i', 'c', '.', 'b', 9, 0,
19
2.87k
  /* 42 */ 'r', 'r', 'c', '.', 'b', 9, 0,
20
2.87k
  /* 49 */ 'd', 'a', 'd', 'd', '.', 'b', 9, 0,
21
2.87k
  /* 57 */ 'a', 'n', 'd', '.', 'b', 9, 0,
22
2.87k
  /* 64 */ 'p', 'u', 's', 'h', '.', 'b', 9, 0,
23
2.87k
  /* 72 */ 'c', 'm', 'p', '.', 'b', 9, 0,
24
2.87k
  /* 79 */ 'x', 'o', 'r', '.', 'b', 9, 0,
25
2.87k
  /* 86 */ 'b', 'i', 's', '.', 'b', 9, 0,
26
2.87k
  /* 93 */ 'b', 'i', 't', '.', 'b', 9, 0,
27
2.87k
  /* 100 */ 'm', 'o', 'v', '.', 'b', 9, 0,
28
2.87k
  /* 107 */ 's', 'w', 'p', 'b', 9, 0,
29
2.87k
  /* 113 */ 's', 'u', 'b', 9, 0,
30
2.87k
  /* 118 */ 's', 'u', 'b', 'c', 9, 0,
31
2.87k
  /* 124 */ 'a', 'd', 'd', 'c', 9, 0,
32
2.87k
  /* 130 */ 'b', 'i', 'c', 9, 0,
33
2.87k
  /* 135 */ 'r', 'r', 'c', 9, 0,
34
2.87k
  /* 140 */ 'd', 'a', 'd', 'd', 9, 0,
35
2.87k
  /* 146 */ 'a', 'n', 'd', 9, 0,
36
2.87k
  /* 151 */ 'p', 'u', 's', 'h', 9, 0,
37
2.87k
  /* 157 */ 'c', 'a', 'l', 'l', 9, 0,
38
2.87k
  /* 163 */ 'c', 'm', 'p', 9, 0,
39
2.87k
  /* 168 */ 'j', 'm', 'p', 9, 0,
40
2.87k
  /* 173 */ 'p', 'o', 'p', 9, 0,
41
2.87k
  /* 178 */ 'b', 'r', 9, 0,
42
2.87k
  /* 182 */ 'x', 'o', 'r', 9, 0,
43
2.87k
  /* 187 */ 'b', 'i', 's', 9, 0,
44
2.87k
  /* 192 */ 'b', 'i', 't', 9, 0,
45
2.87k
  /* 197 */ 's', 'x', 't', 9, 0,
46
2.87k
  /* 202 */ 'm', 'o', 'v', 9, 0,
47
2.87k
  /* 207 */ '#', 'A', 'D', 'J', 'C', 'A', 'L', 'L', 'S', 'T', 'A', 'C', 'K', 'D', 'O', 'W', 'N', 32, 0,
48
2.87k
  /* 226 */ '#', 'A', 'D', 'J', 'C', 'A', 'L', 'L', 'S', 'T', 'A', 'C', 'K', 'U', 'P', 32, 0,
49
2.87k
  /* 243 */ '#', 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,
50
2.87k
  /* 274 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'y', 'p', 'e', 'd', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
51
2.87k
  /* 298 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'C', 'u', 's', 't', 'o', 'm', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
52
2.87k
  /* 323 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'n', 't', 'e', 'r', '.', 0,
53
2.87k
  /* 346 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'a', 'i', 'l', 32, 'C', 'a', 'l', 'l', 32, 'E', 'x', 'i', 't', '.', 0,
54
2.87k
  /* 369 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'x', 'i', 't', '.', 0,
55
2.87k
  /* 391 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'E', 'N', 'D', 0,
56
2.87k
  /* 404 */ 'B', 'U', 'N', 'D', 'L', 'E', 0,
57
2.87k
  /* 411 */ 'D', 'B', 'G', '_', 'V', 'A', 'L', 'U', 'E', 0,
58
2.87k
  /* 421 */ 'D', 'B', 'G', '_', 'L', 'A', 'B', 'E', 'L', 0,
59
2.87k
  /* 431 */ '#', 32, 'S', 'r', 'a', '1', '6', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
60
2.87k
  /* 446 */ '#', 32, 'S', 'h', 'l', '1', '6', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
61
2.87k
  /* 461 */ '#', 32, 'S', 'r', 'l', '1', '6', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
62
2.87k
  /* 476 */ '#', 32, 'S', 'e', 'l', 'e', 'c', 't', '1', '6', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
63
2.87k
  /* 494 */ '#', 32, 'S', 'r', 'a', '8', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
64
2.87k
  /* 508 */ '#', 32, 'S', 'h', 'l', '8', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
65
2.87k
  /* 522 */ '#', 32, 'S', 'r', 'l', '8', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
66
2.87k
  /* 536 */ '#', 32, 'S', 'e', 'l', 'e', 'c', 't', '8', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
67
2.87k
  /* 553 */ '#', 32, 'A', 'D', 'D', 'f', 'r', 'a', 'm', 'e', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
68
2.87k
  /* 571 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'S', 'T', 'A', 'R', 'T', 0,
69
2.87k
  /* 586 */ 'r', 'e', 't', 'i', 0,
70
2.87k
  /* 591 */ 'j', 0,
71
2.87k
  /* 593 */ '#', 32, 'F', 'E', 'n', 't', 'r', 'y', 32, 'c', 'a', 'l', 'l', 0,
72
2.87k
  /* 607 */ 'r', 'e', 't', 0,
73
2.87k
  };
74
2.87k
75
2.87k
  static const uint16_t OpInfo0[] = {
76
2.87k
    0U, // PHI
77
2.87k
    0U, // INLINEASM
78
2.87k
    0U, // INLINEASM_BR
79
2.87k
    0U, // CFI_INSTRUCTION
80
2.87k
    0U, // EH_LABEL
81
2.87k
    0U, // GC_LABEL
82
2.87k
    0U, // ANNOTATION_LABEL
83
2.87k
    0U, // KILL
84
2.87k
    0U, // EXTRACT_SUBREG
85
2.87k
    0U, // INSERT_SUBREG
86
2.87k
    0U, // IMPLICIT_DEF
87
2.87k
    0U, // SUBREG_TO_REG
88
2.87k
    0U, // COPY_TO_REGCLASS
89
2.87k
    412U, // DBG_VALUE
90
2.87k
    422U, // DBG_LABEL
91
2.87k
    0U, // REG_SEQUENCE
92
2.87k
    0U, // COPY
93
2.87k
    405U, // BUNDLE
94
2.87k
    572U, // LIFETIME_START
95
2.87k
    392U, // LIFETIME_END
96
2.87k
    0U, // STACKMAP
97
2.87k
    594U, // FENTRY_CALL
98
2.87k
    0U, // PATCHPOINT
99
2.87k
    0U, // LOAD_STACK_GUARD
100
2.87k
    0U, // STATEPOINT
101
2.87k
    0U, // LOCAL_ESCAPE
102
2.87k
    0U, // FAULTING_OP
103
2.87k
    0U, // PATCHABLE_OP
104
2.87k
    324U, // PATCHABLE_FUNCTION_ENTER
105
2.87k
    244U, // PATCHABLE_RET
106
2.87k
    370U, // PATCHABLE_FUNCTION_EXIT
107
2.87k
    347U, // PATCHABLE_TAIL_CALL
108
2.87k
    299U, // PATCHABLE_EVENT_CALL
109
2.87k
    275U, // PATCHABLE_TYPED_EVENT_CALL
110
2.87k
    0U, // ICALL_BRANCH_FUNNEL
111
2.87k
    0U, // G_ADD
112
2.87k
    0U, // G_SUB
113
2.87k
    0U, // G_MUL
114
2.87k
    0U, // G_SDIV
115
2.87k
    0U, // G_UDIV
116
2.87k
    0U, // G_SREM
117
2.87k
    0U, // G_UREM
118
2.87k
    0U, // G_AND
119
2.87k
    0U, // G_OR
120
2.87k
    0U, // G_XOR
121
2.87k
    0U, // G_IMPLICIT_DEF
122
2.87k
    0U, // G_PHI
123
2.87k
    0U, // G_FRAME_INDEX
124
2.87k
    0U, // G_GLOBAL_VALUE
125
2.87k
    0U, // G_EXTRACT
126
2.87k
    0U, // G_UNMERGE_VALUES
127
2.87k
    0U, // G_INSERT
128
2.87k
    0U, // G_MERGE_VALUES
129
2.87k
    0U, // G_BUILD_VECTOR
130
2.87k
    0U, // G_BUILD_VECTOR_TRUNC
131
2.87k
    0U, // G_CONCAT_VECTORS
132
2.87k
    0U, // G_PTRTOINT
133
2.87k
    0U, // G_INTTOPTR
134
2.87k
    0U, // G_BITCAST
135
2.87k
    0U, // G_INTRINSIC_TRUNC
136
2.87k
    0U, // G_INTRINSIC_ROUND
137
2.87k
    0U, // G_LOAD
138
2.87k
    0U, // G_SEXTLOAD
139
2.87k
    0U, // G_ZEXTLOAD
140
2.87k
    0U, // G_STORE
141
2.87k
    0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
142
2.87k
    0U, // G_ATOMIC_CMPXCHG
143
2.87k
    0U, // G_ATOMICRMW_XCHG
144
2.87k
    0U, // G_ATOMICRMW_ADD
145
2.87k
    0U, // G_ATOMICRMW_SUB
146
2.87k
    0U, // G_ATOMICRMW_AND
147
2.87k
    0U, // G_ATOMICRMW_NAND
148
2.87k
    0U, // G_ATOMICRMW_OR
149
2.87k
    0U, // G_ATOMICRMW_XOR
150
2.87k
    0U, // G_ATOMICRMW_MAX
151
2.87k
    0U, // G_ATOMICRMW_MIN
152
2.87k
    0U, // G_ATOMICRMW_UMAX
153
2.87k
    0U, // G_ATOMICRMW_UMIN
154
2.87k
    0U, // G_BRCOND
155
2.87k
    0U, // G_BRINDIRECT
156
2.87k
    0U, // G_INTRINSIC
157
2.87k
    0U, // G_INTRINSIC_W_SIDE_EFFECTS
158
2.87k
    0U, // G_ANYEXT
159
2.87k
    0U, // G_TRUNC
160
2.87k
    0U, // G_CONSTANT
161
2.87k
    0U, // G_FCONSTANT
162
2.87k
    0U, // G_VASTART
163
2.87k
    0U, // G_VAARG
164
2.87k
    0U, // G_SEXT
165
2.87k
    0U, // G_ZEXT
166
2.87k
    0U, // G_SHL
167
2.87k
    0U, // G_LSHR
168
2.87k
    0U, // G_ASHR
169
2.87k
    0U, // G_ICMP
170
2.87k
    0U, // G_FCMP
171
2.87k
    0U, // G_SELECT
172
2.87k
    0U, // G_UADDO
173
2.87k
    0U, // G_UADDE
174
2.87k
    0U, // G_USUBO
175
2.87k
    0U, // G_USUBE
176
2.87k
    0U, // G_SADDO
177
2.87k
    0U, // G_SADDE
178
2.87k
    0U, // G_SSUBO
179
2.87k
    0U, // G_SSUBE
180
2.87k
    0U, // G_UMULO
181
2.87k
    0U, // G_SMULO
182
2.87k
    0U, // G_UMULH
183
2.87k
    0U, // G_SMULH
184
2.87k
    0U, // G_FADD
185
2.87k
    0U, // G_FSUB
186
2.87k
    0U, // G_FMUL
187
2.87k
    0U, // G_FMA
188
2.87k
    0U, // G_FDIV
189
2.87k
    0U, // G_FREM
190
2.87k
    0U, // G_FPOW
191
2.87k
    0U, // G_FEXP
192
2.87k
    0U, // G_FEXP2
193
2.87k
    0U, // G_FLOG
194
2.87k
    0U, // G_FLOG2
195
2.87k
    0U, // G_FLOG10
196
2.87k
    0U, // G_FNEG
197
2.87k
    0U, // G_FPEXT
198
2.87k
    0U, // G_FPTRUNC
199
2.87k
    0U, // G_FPTOSI
200
2.87k
    0U, // G_FPTOUI
201
2.87k
    0U, // G_SITOFP
202
2.87k
    0U, // G_UITOFP
203
2.87k
    0U, // G_FABS
204
2.87k
    0U, // G_FCANONICALIZE
205
2.87k
    0U, // G_GEP
206
2.87k
    0U, // G_PTR_MASK
207
2.87k
    0U, // G_BR
208
2.87k
    0U, // G_INSERT_VECTOR_ELT
209
2.87k
    0U, // G_EXTRACT_VECTOR_ELT
210
2.87k
    0U, // G_SHUFFLE_VECTOR
211
2.87k
    0U, // G_CTTZ
212
2.87k
    0U, // G_CTTZ_ZERO_UNDEF
213
2.87k
    0U, // G_CTLZ
214
2.87k
    0U, // G_CTLZ_ZERO_UNDEF
215
2.87k
    0U, // G_CTPOP
216
2.87k
    0U, // G_BSWAP
217
2.87k
    0U, // G_FCEIL
218
2.87k
    0U, // G_FCOS
219
2.87k
    0U, // G_FSIN
220
2.87k
    0U, // G_FSQRT
221
2.87k
    0U, // G_FFLOOR
222
2.87k
    0U, // G_ADDRSPACE_CAST
223
2.87k
    0U, // G_BLOCK_ADDR
224
2.87k
    1166U,  // ADD16mc
225
2.87k
    1166U,  // ADD16mi
226
2.87k
    2190U,  // ADD16mm
227
2.87k
    3214U,  // ADD16mn
228
2.87k
    4238U,  // ADD16mp
229
2.87k
    1166U,  // ADD16mr
230
2.87k
    17550U, // ADD16rc
231
2.87k
    17550U, // ADD16ri
232
2.87k
    18574U, // ADD16rm
233
2.87k
    19598U, // ADD16rn
234
2.87k
    5262U,  // ADD16rp
235
2.87k
    17550U, // ADD16rr
236
2.87k
    1075U,  // ADD8mc
237
2.87k
    1075U,  // ADD8mi
238
2.87k
    2099U,  // ADD8mm
239
2.87k
    3123U,  // ADD8mn
240
2.87k
    4147U,  // ADD8mp
241
2.87k
    1075U,  // ADD8mr
242
2.87k
    17459U, // ADD8rc
243
2.87k
    17459U, // ADD8ri
244
2.87k
    18483U, // ADD8rm
245
2.87k
    19507U, // ADD8rn
246
2.87k
    5171U,  // ADD8rp
247
2.87k
    17459U, // ADD8rr
248
2.87k
    1149U,  // ADDC16mc
249
2.87k
    1149U,  // ADDC16mi
250
2.87k
    2173U,  // ADDC16mm
251
2.87k
    3197U,  // ADDC16mn
252
2.87k
    4221U,  // ADDC16mp
253
2.87k
    1149U,  // ADDC16mr
254
2.87k
    17533U, // ADDC16rc
255
2.87k
    17533U, // ADDC16ri
256
2.87k
    18557U, // ADDC16rm
257
2.87k
    19581U, // ADDC16rn
258
2.87k
    5245U,  // ADDC16rp
259
2.87k
    17533U, // ADDC16rr
260
2.87k
    1052U,  // ADDC8mc
261
2.87k
    1052U,  // ADDC8mi
262
2.87k
    2076U,  // ADDC8mm
263
2.87k
    3100U,  // ADDC8mn
264
2.87k
    4124U,  // ADDC8mp
265
2.87k
    1052U,  // ADDC8mr
266
2.87k
    17436U, // ADDC8rc
267
2.87k
    17436U, // ADDC8ri
268
2.87k
    18460U, // ADDC8rm
269
2.87k
    19484U, // ADDC8rn
270
2.87k
    5148U,  // ADDC8rp
271
2.87k
    17436U, // ADDC8rr
272
2.87k
    554U, // ADDframe
273
2.87k
    39120U, // ADJCALLSTACKDOWN
274
2.87k
    39139U, // ADJCALLSTACKUP
275
2.87k
    1171U,  // AND16mc
276
2.87k
    1171U,  // AND16mi
277
2.87k
    2195U,  // AND16mm
278
2.87k
    3219U,  // AND16mn
279
2.87k
    4243U,  // AND16mp
280
2.87k
    1171U,  // AND16mr
281
2.87k
    17555U, // AND16rc
282
2.87k
    17555U, // AND16ri
283
2.87k
    18579U, // AND16rm
284
2.87k
    19603U, // AND16rn
285
2.87k
    5267U,  // AND16rp
286
2.87k
    17555U, // AND16rr
287
2.87k
    1082U,  // AND8mc
288
2.87k
    1082U,  // AND8mi
289
2.87k
    2106U,  // AND8mm
290
2.87k
    3130U,  // AND8mn
291
2.87k
    4154U,  // AND8mp
292
2.87k
    1082U,  // AND8mr
293
2.87k
    17466U, // AND8rc
294
2.87k
    17466U, // AND8ri
295
2.87k
    18490U, // AND8rm
296
2.87k
    19514U, // AND8rn
297
2.87k
    5178U,  // AND8rp
298
2.87k
    17466U, // AND8rr
299
2.87k
    1155U,  // BIC16mc
300
2.87k
    1155U,  // BIC16mi
301
2.87k
    2179U,  // BIC16mm
302
2.87k
    3203U,  // BIC16mn
303
2.87k
    4227U,  // BIC16mp
304
2.87k
    1155U,  // BIC16mr
305
2.87k
    17539U, // BIC16rc
306
2.87k
    17539U, // BIC16ri
307
2.87k
    18563U, // BIC16rm
308
2.87k
    19587U, // BIC16rn
309
2.87k
    5251U,  // BIC16rp
310
2.87k
    17539U, // BIC16rr
311
2.87k
    1060U,  // BIC8mc
312
2.87k
    1060U,  // BIC8mi
313
2.87k
    2084U,  // BIC8mm
314
2.87k
    3108U,  // BIC8mn
315
2.87k
    4132U,  // BIC8mp
316
2.87k
    1060U,  // BIC8mr
317
2.87k
    17444U, // BIC8rc
318
2.87k
    17444U, // BIC8ri
319
2.87k
    18468U, // BIC8rm
320
2.87k
    19492U, // BIC8rn
321
2.87k
    5156U,  // BIC8rp
322
2.87k
    17444U, // BIC8rr
323
2.87k
    1212U,  // BIS16mc
324
2.87k
    1212U,  // BIS16mi
325
2.87k
    2236U,  // BIS16mm
326
2.87k
    3260U,  // BIS16mn
327
2.87k
    4284U,  // BIS16mp
328
2.87k
    1212U,  // BIS16mr
329
2.87k
    17596U, // BIS16rc
330
2.87k
    17596U, // BIS16ri
331
2.87k
    18620U, // BIS16rm
332
2.87k
    19644U, // BIS16rn
333
2.87k
    5308U,  // BIS16rp
334
2.87k
    17596U, // BIS16rr
335
2.87k
    1111U,  // BIS8mc
336
2.87k
    1111U,  // BIS8mi
337
2.87k
    2135U,  // BIS8mm
338
2.87k
    3159U,  // BIS8mn
339
2.87k
    4183U,  // BIS8mp
340
2.87k
    1111U,  // BIS8mr
341
2.87k
    17495U, // BIS8rc
342
2.87k
    17495U, // BIS8ri
343
2.87k
    18519U, // BIS8rm
344
2.87k
    19543U, // BIS8rn
345
2.87k
    5207U,  // BIS8rp
346
2.87k
    17495U, // BIS8rr
347
2.87k
    1217U,  // BIT16mc
348
2.87k
    1217U,  // BIT16mi
349
2.87k
    2241U,  // BIT16mm
350
2.87k
    3265U,  // BIT16mn
351
2.87k
    4289U,  // BIT16mp
352
2.87k
    1217U,  // BIT16mr
353
2.87k
    7361U,  // BIT16rc
354
2.87k
    7361U,  // BIT16ri
355
2.87k
    8385U,  // BIT16rm
356
2.87k
    9409U,  // BIT16rn
357
2.87k
    10433U, // BIT16rp
358
2.87k
    7361U,  // BIT16rr
359
2.87k
    1118U,  // BIT8mc
360
2.87k
    1118U,  // BIT8mi
361
2.87k
    2142U,  // BIT8mm
362
2.87k
    3166U,  // BIT8mn
363
2.87k
    4190U,  // BIT8mp
364
2.87k
    1118U,  // BIT8mr
365
2.87k
    7262U,  // BIT8rc
366
2.87k
    7262U,  // BIT8ri
367
2.87k
    8286U,  // BIT8rm
368
2.87k
    9310U,  // BIT8rn
369
2.87k
    10334U, // BIT8rp
370
2.87k
    7262U,  // BIT8rr
371
2.87k
    55475U, // Bi
372
2.87k
    11443U, // Bm
373
2.87k
    55475U, // Br
374
2.87k
    55454U, // CALLi
375
2.87k
    11422U, // CALLm
376
2.87k
    12446U, // CALLn
377
2.87k
    13470U, // CALLp
378
2.87k
    55454U, // CALLr
379
2.87k
    1188U,  // CMP16mc
380
2.87k
    1188U,  // CMP16mi
381
2.87k
    2212U,  // CMP16mm
382
2.87k
    3236U,  // CMP16mn
383
2.87k
    4260U,  // CMP16mp
384
2.87k
    1188U,  // CMP16mr
385
2.87k
    7332U,  // CMP16rc
386
2.87k
    7332U,  // CMP16ri
387
2.87k
    8356U,  // CMP16rm
388
2.87k
    9380U,  // CMP16rn
389
2.87k
    10404U, // CMP16rp
390
2.87k
    7332U,  // CMP16rr
391
2.87k
    1097U,  // CMP8mc
392
2.87k
    1097U,  // CMP8mi
393
2.87k
    2121U,  // CMP8mm
394
2.87k
    3145U,  // CMP8mn
395
2.87k
    4169U,  // CMP8mp
396
2.87k
    1097U,  // CMP8mr
397
2.87k
    7241U,  // CMP8rc
398
2.87k
    7241U,  // CMP8ri
399
2.87k
    8265U,  // CMP8rm
400
2.87k
    9289U,  // CMP8rn
401
2.87k
    10313U, // CMP8rp
402
2.87k
    7241U,  // CMP8rr
403
2.87k
    1165U,  // DADD16mc
404
2.87k
    1165U,  // DADD16mi
405
2.87k
    2189U,  // DADD16mm
406
2.87k
    3213U,  // DADD16mn
407
2.87k
    4237U,  // DADD16mp
408
2.87k
    1165U,  // DADD16mr
409
2.87k
    17549U, // DADD16rc
410
2.87k
    17549U, // DADD16ri
411
2.87k
    18573U, // DADD16rm
412
2.87k
    19597U, // DADD16rn
413
2.87k
    5261U,  // DADD16rp
414
2.87k
    17549U, // DADD16rr
415
2.87k
    1074U,  // DADD8mc
416
2.87k
    1074U,  // DADD8mi
417
2.87k
    2098U,  // DADD8mm
418
2.87k
    3122U,  // DADD8mn
419
2.87k
    4146U,  // DADD8mp
420
2.87k
    1074U,  // DADD8mr
421
2.87k
    17458U, // DADD8rc
422
2.87k
    17458U, // DADD8ri
423
2.87k
    18482U, // DADD8rm
424
2.87k
    19506U, // DADD8rn
425
2.87k
    5170U,  // DADD8rp
426
2.87k
    17458U, // DADD8rr
427
2.87k
    14928U, // JCC
428
2.87k
    15529U, // JMP
429
2.87k
    1227U,  // MOV16mc
430
2.87k
    1227U,  // MOV16mi
431
2.87k
    2251U,  // MOV16mm
432
2.87k
    3275U,  // MOV16mn
433
2.87k
    1227U,  // MOV16mr
434
2.87k
    7371U,  // MOV16rc
435
2.87k
    7371U,  // MOV16ri
436
2.87k
    8395U,  // MOV16rm
437
2.87k
    9419U,  // MOV16rn
438
2.87k
    20683U, // MOV16rp
439
2.87k
    7371U,  // MOV16rr
440
2.87k
    1125U,  // MOV8mc
441
2.87k
    1125U,  // MOV8mi
442
2.87k
    2149U,  // MOV8mm
443
2.87k
    3173U,  // MOV8mn
444
2.87k
    1125U,  // MOV8mr
445
2.87k
    7269U,  // MOV8rc
446
2.87k
    7269U,  // MOV8ri
447
2.87k
    8293U,  // MOV8rm
448
2.87k
    9317U,  // MOV8rn
449
2.87k
    20581U, // MOV8rp
450
2.87k
    7269U,  // MOV8rr
451
2.87k
    8293U,  // MOVZX16rm8
452
2.87k
    7269U,  // MOVZX16rr8
453
2.87k
    55470U, // POP16r
454
2.87k
    55448U, // PUSH16c
455
2.87k
    55448U, // PUSH16i
456
2.87k
    55448U, // PUSH16r
457
2.87k
    55361U, // PUSH8r
458
2.87k
    608U, // RET
459
2.87k
    587U, // RETI
460
2.87k
    11265U, // RRA16m
461
2.87k
    12289U, // RRA16n
462
2.87k
    13313U, // RRA16p
463
2.87k
    55297U, // RRA16r
464
2.87k
    11270U, // RRA8m
465
2.87k
    12294U, // RRA8n
466
2.87k
    13318U, // RRA8p
467
2.87k
    55302U, // RRA8r
468
2.87k
    11400U, // RRC16m
469
2.87k
    12424U, // RRC16n
470
2.87k
    13448U, // RRC16p
471
2.87k
    55432U, // RRC16r
472
2.87k
    11307U, // RRC8m
473
2.87k
    12331U, // RRC8n
474
2.87k
    13355U, // RRC8p
475
2.87k
    55339U, // RRC8r
476
2.87k
    0U, // Rrcl16
477
2.87k
    0U, // Rrcl8
478
2.87k
    11462U, // SEXT16m
479
2.87k
    12486U, // SEXT16n
480
2.87k
    13510U, // SEXT16p
481
2.87k
    55494U, // SEXT16r
482
2.87k
    1138U,  // SUB16mc
483
2.87k
    1138U,  // SUB16mi
484
2.87k
    2162U,  // SUB16mm
485
2.87k
    3186U,  // SUB16mn
486
2.87k
    4210U,  // SUB16mp
487
2.87k
    1138U,  // SUB16mr
488
2.87k
    17522U, // SUB16rc
489
2.87k
    17522U, // SUB16ri
490
2.87k
    18546U, // SUB16rm
491
2.87k
    19570U, // SUB16rn
492
2.87k
    5234U,  // SUB16rp
493
2.87k
    17522U, // SUB16rr
494
2.87k
    1037U,  // SUB8mc
495
2.87k
    1037U,  // SUB8mi
496
2.87k
    2061U,  // SUB8mm
497
2.87k
    3085U,  // SUB8mn
498
2.87k
    4109U,  // SUB8mp
499
2.87k
    1037U,  // SUB8mr
500
2.87k
    17421U, // SUB8rc
501
2.87k
    17421U, // SUB8ri
502
2.87k
    18445U, // SUB8rm
503
2.87k
    19469U, // SUB8rn
504
2.87k
    5133U,  // SUB8rp
505
2.87k
    17421U, // SUB8rr
506
2.87k
    1143U,  // SUBC16mc
507
2.87k
    1143U,  // SUBC16mi
508
2.87k
    2167U,  // SUBC16mm
509
2.87k
    3191U,  // SUBC16mn
510
2.87k
    4215U,  // SUBC16mp
511
2.87k
    1143U,  // SUBC16mr
512
2.87k
    17527U, // SUBC16rc
513
2.87k
    17527U, // SUBC16ri
514
2.87k
    18551U, // SUBC16rm
515
2.87k
    19575U, // SUBC16rn
516
2.87k
    5239U,  // SUBC16rp
517
2.87k
    17527U, // SUBC16rr
518
2.87k
    1044U,  // SUBC8mc
519
2.87k
    1044U,  // SUBC8mi
520
2.87k
    2068U,  // SUBC8mm
521
2.87k
    3092U,  // SUBC8mn
522
2.87k
    4116U,  // SUBC8mp
523
2.87k
    1044U,  // SUBC8mr
524
2.87k
    17428U, // SUBC8rc
525
2.87k
    17428U, // SUBC8ri
526
2.87k
    18452U, // SUBC8rm
527
2.87k
    19476U, // SUBC8rn
528
2.87k
    5140U,  // SUBC8rp
529
2.87k
    17428U, // SUBC8rr
530
2.87k
    11372U, // SWPB16m
531
2.87k
    12396U, // SWPB16n
532
2.87k
    13420U, // SWPB16p
533
2.87k
    55404U, // SWPB16r
534
2.87k
    477U, // Select16
535
2.87k
    537U, // Select8
536
2.87k
    447U, // Shl16
537
2.87k
    509U, // Shl8
538
2.87k
    432U, // Sra16
539
2.87k
    495U, // Sra8
540
2.87k
    462U, // Srl16
541
2.87k
    523U, // Srl8
542
2.87k
    1207U,  // XOR16mc
543
2.87k
    1207U,  // XOR16mi
544
2.87k
    2231U,  // XOR16mm
545
2.87k
    3255U,  // XOR16mn
546
2.87k
    4279U,  // XOR16mp
547
2.87k
    1207U,  // XOR16mr
548
2.87k
    17591U, // XOR16rc
549
2.87k
    17591U, // XOR16ri
550
2.87k
    18615U, // XOR16rm
551
2.87k
    19639U, // XOR16rn
552
2.87k
    5303U,  // XOR16rp
553
2.87k
    17591U, // XOR16rr
554
2.87k
    1104U,  // XOR8mc
555
2.87k
    1104U,  // XOR8mi
556
2.87k
    2128U,  // XOR8mm
557
2.87k
    3152U,  // XOR8mn
558
2.87k
    4176U,  // XOR8mp
559
2.87k
    1104U,  // XOR8mr
560
2.87k
    17488U, // XOR8rc
561
2.87k
    17488U, // XOR8ri
562
2.87k
    18512U, // XOR8rm
563
2.87k
    19536U, // XOR8rn
564
2.87k
    5200U,  // XOR8rp
565
2.87k
    17488U, // XOR8rr
566
2.87k
    7269U,  // ZEXT16r
567
2.87k
  };
568
2.87k
569
2.87k
  O << "\t";
570
2.87k
571
2.87k
  // Emit the opcode for the instruction.
572
2.87k
  uint32_t Bits = 0;
573
2.87k
  Bits |= OpInfo0[MI->getOpcode()] << 0;
574
2.87k
  assert(Bits != 0 && "Cannot print this instruction.");
575
2.87k
  O << AsmStrs+(Bits & 1023)-1;
576
2.87k
577
2.87k
578
2.87k
  // Fragment 0 encoded into 4 bits for 16 unique commands.
579
2.87k
  switch ((Bits >> 10) & 15) {
580
2.87k
  
default: 0
llvm_unreachable0
("Invalid command number.");
581
2.87k
  case 0:
582
324
    // DBG_VALUE, DBG_LABEL, BUNDLE, LIFETIME_START, LIFETIME_END, FENTRY_CAL...
583
324
    return;
584
2.87k
    
break0
;
585
2.87k
  case 1:
586
1.19k
    // ADD16mc, ADD16mi, ADD16mr, ADD16rc, ADD16ri, ADD16rr, ADD8mc, ADD8mi, ...
587
1.19k
    printOperand(MI, 2, O);
588
1.19k
    O << ", ";
589
1.19k
    break;
590
2.87k
  case 2:
591
77
    // ADD16mm, ADD16rm, ADD8mm, ADD8rm, ADDC16mm, ADDC16rm, ADDC8mm, ADDC8rm...
592
77
    printSrcMemOperand(MI, 2, O);
593
77
    O << ", ";
594
77
    break;
595
2.87k
  case 3:
596
8
    // ADD16mn, ADD16rn, ADD8mn, ADD8rn, ADDC16mn, ADDC16rn, ADDC8mn, ADDC8rn...
597
8
    printIndRegOperand(MI, 2, O);
598
8
    O << ", ";
599
8
    break;
600
2.87k
  case 4:
601
8
    // ADD16mp, ADD8mp, ADDC16mp, ADDC8mp, AND16mp, AND8mp, BIC16mp, BIC8mp, ...
602
8
    printPostIndRegOperand(MI, 2, O);
603
8
    O << ", ";
604
8
    break;
605
2.87k
  case 5:
606
7
    // ADD16rp, ADD8rp, ADDC16rp, ADDC8rp, AND16rp, AND8rp, BIC16rp, BIC8rp, ...
607
7
    printPostIndRegOperand(MI, 3, O);
608
7
    O << ", ";
609
7
    printOperand(MI, 0, O);
610
7
    return;
611
2.87k
    
break0
;
612
2.87k
  case 6:
613
384
    // ADJCALLSTACKDOWN, ADJCALLSTACKUP, Bi, Br, CALLi, CALLr, POP16r, PUSH16...
614
384
    printOperand(MI, 0, O);
615
384
    break;
616
2.87k
  case 7:
617
350
    // BIT16rc, BIT16ri, BIT16rr, BIT8rc, BIT8ri, BIT8rr, CMP16rc, CMP16ri, C...
618
350
    printOperand(MI, 1, O);
619
350
    O << ", ";
620
350
    printOperand(MI, 0, O);
621
350
    return;
622
2.87k
    
break0
;
623
2.87k
  case 8:
624
398
    // BIT16rm, BIT8rm, CMP16rm, CMP8rm, MOV16rm, MOV8rm, MOVZX16rm8
625
398
    printSrcMemOperand(MI, 1, O);
626
398
    O << ", ";
627
398
    printOperand(MI, 0, O);
628
398
    return;
629
2.87k
    
break0
;
630
2.87k
  case 9:
631
4
    // BIT16rn, BIT8rn, CMP16rn, CMP8rn, MOV16rn, MOV8rn
632
4
    printIndRegOperand(MI, 1, O);
633
4
    O << ", ";
634
4
    printOperand(MI, 0, O);
635
4
    return;
636
2.87k
    
break0
;
637
2.87k
  case 10:
638
2
    // BIT16rp, BIT8rp, CMP16rp, CMP8rp
639
2
    printPostIndRegOperand(MI, 1, O);
640
2
    O << ", ";
641
2
    printOperand(MI, 0, O);
642
2
    return;
643
2.87k
    
break0
;
644
2.87k
  case 11:
645
14
    // Bm, CALLm, RRA16m, RRA8m, RRC16m, RRC8m, SEXT16m, SWPB16m
646
14
    printSrcMemOperand(MI, 0, O);
647
14
    return;
648
2.87k
    
break0
;
649
2.87k
  case 12:
650
5
    // CALLn, RRA16n, RRA8n, RRC16n, RRC8n, SEXT16n, SWPB16n
651
5
    printIndRegOperand(MI, 0, O);
652
5
    return;
653
2.87k
    
break0
;
654
2.87k
  case 13:
655
5
    // CALLp, RRA16p, RRA8p, RRC16p, RRC8p, SEXT16p, SWPB16p
656
5
    printPostIndRegOperand(MI, 0, O);
657
5
    return;
658
2.87k
    
break0
;
659
2.87k
  case 14:
660
78
    // JCC
661
78
    printCCOperand(MI, 1, O);
662
78
    O << "\t";
663
78
    printPCRelImmOperand(MI, 0, O);
664
78
    return;
665
2.87k
    
break0
;
666
2.87k
  case 15:
667
15
    // JMP
668
15
    printPCRelImmOperand(MI, 0, O);
669
15
    return;
670
2.87k
    
break0
;
671
1.67k
  }
672
1.67k
673
1.67k
674
1.67k
  // Fragment 1 encoded into 2 bits for 4 unique commands.
675
1.67k
  switch ((Bits >> 14) & 3) {
676
1.67k
  
default: 0
llvm_unreachable0
("Invalid command number.");
677
1.67k
  case 0:
678
951
    // ADD16mc, ADD16mi, ADD16mm, ADD16mn, ADD16mp, ADD16mr, ADD8mc, ADD8mi, ...
679
951
    printSrcMemOperand(MI, 0, O);
680
951
    return;
681
1.67k
    
break0
;
682
1.67k
  case 1:
683
336
    // ADD16rc, ADD16ri, ADD16rm, ADD16rn, ADD16rr, ADD8rc, ADD8ri, ADD8rm, A...
684
336
    printOperand(MI, 0, O);
685
336
    return;
686
1.67k
    
break0
;
687
1.67k
  case 2:
688
0
    // ADJCALLSTACKDOWN, ADJCALLSTACKUP
689
0
    O << ' ';
690
0
    printOperand(MI, 1, O);
691
0
    return;
692
1.67k
    
break0
;
693
1.67k
  case 3:
694
384
    // Bi, Br, CALLi, CALLr, POP16r, PUSH16c, PUSH16i, PUSH16r, PUSH8r, RRA16...
695
384
    return;
696
1.67k
    
break0
;
697
1.67k
  }
698
1.67k
699
1.67k
}
700
701
702
/// getRegisterName - This method is automatically generated by tblgen
703
/// from the register set description.  This returns the assembler name
704
/// for the specified register.
705
2.63k
const char *MSP430InstPrinter::getRegisterName(unsigned RegNo) {
706
2.63k
  assert(RegNo && RegNo < 33 && "Invalid register number!");
707
2.63k
708
2.63k
  static const char AsmStrs[] = {
709
2.63k
  /* 0 */ 'r', '1', '0', 0,
710
2.63k
  /* 4 */ 'r', '0', 0,
711
2.63k
  /* 7 */ 'r', '1', '1', 0,
712
2.63k
  /* 11 */ 'r', '1', 0,
713
2.63k
  /* 14 */ 'r', '1', '2', 0,
714
2.63k
  /* 18 */ 'r', '2', 0,
715
2.63k
  /* 21 */ 'r', '1', '3', 0,
716
2.63k
  /* 25 */ 'r', '3', 0,
717
2.63k
  /* 28 */ 'r', '1', '4', 0,
718
2.63k
  /* 32 */ 'r', '4', 0,
719
2.63k
  /* 35 */ 'r', '1', '5', 0,
720
2.63k
  /* 39 */ 'r', '5', 0,
721
2.63k
  /* 42 */ 'r', '6', 0,
722
2.63k
  /* 45 */ 'r', '7', 0,
723
2.63k
  /* 48 */ 'r', '8', 0,
724
2.63k
  /* 51 */ 'r', '9', 0,
725
2.63k
  };
726
2.63k
727
2.63k
  static const uint8_t RegAsmOffset[] = {
728
2.63k
    25, 25, 32, 32, 4, 4, 11, 11, 18, 18, 39, 42, 45, 48, 
729
2.63k
    51, 0, 7, 14, 21, 28, 35, 39, 42, 45, 48, 51, 0, 7, 
730
2.63k
    14, 21, 28, 35, 
731
2.63k
  };
732
2.63k
733
2.63k
  assert (*(AsmStrs+RegAsmOffset[RegNo-1]) &&
734
2.63k
          "Invalid alt name index for register!");
735
2.63k
  return AsmStrs+RegAsmOffset[RegNo-1];
736
2.63k
}
737
738
#ifdef PRINT_ALIAS_INSTR
739
#undef PRINT_ALIAS_INSTR
740
741
3.06k
bool MSP430InstPrinter::printAliasInstr(const MCInst *MI, raw_ostream &OS) {
742
3.06k
  const char *AsmString;
743
3.06k
  switch (MI->getOpcode()) {
744
3.06k
  
default: return false2.76k
;
745
3.06k
  case MSP430::ADD16mc:
746
1
    if (MI->getNumOperands() == 3 &&
747
1
        MI->getOperand(2).isImm() &&
748
1
        MI->getOperand(2).getImm() == 1) {
749
0
      // (ADD16mc memdst:$dst, 1)
750
0
      AsmString = "inc  $\xFF\x01\x01";
751
0
      break;
752
0
    }
753
1
    if (MI->getNumOperands() == 3 &&
754
1
        MI->getOperand(2).isImm() &&
755
1
        MI->getOperand(2).getImm() == 2) {
756
1
      // (ADD16mc memdst:$dst, 2)
757
1
      AsmString = "incd $\xFF\x01\x01";
758
1
      break;
759
1
    }
760
0
    return false;
761
16
  case MSP430::ADD16rc:
762
16
    if (MI->getNumOperands() == 3 &&
763
16
        MI->getOperand(0).isReg() &&
764
16
        MRI.getRegClass(MSP430::GR16RegClassID).contains(MI->getOperand(0).getReg()) &&
765
16
        MI->getOperand(2).isImm() &&
766
16
        MI->getOperand(2).getImm() == 1) {
767
5
      // (ADD16rc GR16:$dst, 1)
768
5
      AsmString = "inc  $\x01";
769
5
      break;
770
5
    }
771
11
    if (MI->getNumOperands() == 3 &&
772
11
        MI->getOperand(0).isReg() &&
773
11
        MRI.getRegClass(MSP430::GR16RegClassID).contains(MI->getOperand(0).getReg()) &&
774
11
        MI->getOperand(2).isImm() &&
775
11
        MI->getOperand(2).getImm() == 2) {
776
4
      // (ADD16rc GR16:$dst, 2)
777
4
      AsmString = "incd $\x01";
778
4
      break;
779
4
    }
780
7
    return false;
781
7
  case MSP430::ADD8mc:
782
2
    if (MI->getNumOperands() == 3 &&
783
2
        MI->getOperand(2).isImm() &&
784
2
        MI->getOperand(2).getImm() == 1) {
785
1
      // (ADD8mc memdst:$dst, 1)
786
1
      AsmString = "inc.b  $\xFF\x01\x01";
787
1
      break;
788
1
    }
789
1
    if (MI->getNumOperands() == 3 &&
790
1
        MI->getOperand(2).isImm() &&
791
1
        MI->getOperand(2).getImm() == 2) {
792
1
      // (ADD8mc memdst:$dst, 2)
793
1
      AsmString = "incd.b $\xFF\x01\x01";
794
1
      break;
795
1
    }
796
0
    return false;
797
1
  case MSP430::ADD8rc:
798
1
    if (MI->getNumOperands() == 3 &&
799
1
        MI->getOperand(0).isReg() &&
800
1
        MRI.getRegClass(MSP430::GR8RegClassID).contains(MI->getOperand(0).getReg()) &&
801
1
        MI->getOperand(2).isImm() &&
802
1
        MI->getOperand(2).getImm() == 1) {
803
1
      // (ADD8rc GR8:$dst, 1)
804
1
      AsmString = "inc.b  $\x01";
805
1
      break;
806
1
    }
807
0
    if (MI->getNumOperands() == 3 &&
808
0
        MI->getOperand(0).isReg() &&
809
0
        MRI.getRegClass(MSP430::GR8RegClassID).contains(MI->getOperand(0).getReg()) &&
810
0
        MI->getOperand(2).isImm() &&
811
0
        MI->getOperand(2).getImm() == 2) {
812
0
      // (ADD8rc GR8:$dst, 2)
813
0
      AsmString = "incd.b $\x01";
814
0
      break;
815
0
    }
816
0
    return false;
817
0
  case MSP430::ADDC16mc:
818
0
    if (MI->getNumOperands() == 3 &&
819
0
        MI->getOperand(2).isImm() &&
820
0
        MI->getOperand(2).getImm() == 0) {
821
0
      // (ADDC16mc memdst:$dst, 0)
822
0
      AsmString = "adc  $\xFF\x01\x01";
823
0
      break;
824
0
    }
825
0
    return false;
826
2
  case MSP430::ADDC16rc:
827
2
    if (MI->getNumOperands() == 3 &&
828
2
        MI->getOperand(0).isReg() &&
829
2
        MRI.getRegClass(MSP430::GR16RegClassID).contains(MI->getOperand(0).getReg()) &&
830
2
        MI->getOperand(2).isImm() &&
831
2
        MI->getOperand(2).getImm() == 0) {
832
2
      // (ADDC16rc GR16:$dst, 0)
833
2
      AsmString = "adc  $\x01";
834
2
      break;
835
2
    }
836
0
    return false;
837
0
  case MSP430::ADDC8mc:
838
0
    if (MI->getNumOperands() == 3 &&
839
0
        MI->getOperand(2).isImm() &&
840
0
        MI->getOperand(2).getImm() == 0) {
841
0
      // (ADDC8mc memdst:$dst, 0)
842
0
      AsmString = "adc.b  $\xFF\x01\x01";
843
0
      break;
844
0
    }
845
0
    return false;
846
0
  case MSP430::ADDC8rc:
847
0
    if (MI->getNumOperands() == 3 &&
848
0
        MI->getOperand(0).isReg() &&
849
0
        MRI.getRegClass(MSP430::GR8RegClassID).contains(MI->getOperand(0).getReg()) &&
850
0
        MI->getOperand(2).isImm() &&
851
0
        MI->getOperand(2).getImm() == 0) {
852
0
      // (ADDC8rc GR8:$dst, 0)
853
0
      AsmString = "adc.b  $\x01";
854
0
      break;
855
0
    }
856
0
    return false;
857
16
  case MSP430::BIC16rc:
858
16
    if (MI->getNumOperands() == 3 &&
859
16
        MI->getOperand(0).getReg() == MSP430::SR &&
860
16
        MI->getOperand(2).isImm() &&
861
16
        MI->getOperand(2).getImm() == 8) {
862
3
      // (BIC16rc SR, 8)
863
3
      AsmString = "dint";
864
3
      break;
865
3
    }
866
13
    if (MI->getNumOperands() == 3 &&
867
13
        MI->getOperand(0).getReg() == MSP430::SR &&
868
13
        MI->getOperand(2).isImm() &&
869
13
        MI->getOperand(2).getImm() == 1) {
870
9
      // (BIC16rc SR, 1)
871
9
      AsmString = "clrc";
872
9
      break;
873
9
    }
874
4
    if (MI->getNumOperands() == 3 &&
875
4
        MI->getOperand(0).getReg() == MSP430::SR &&
876
4
        MI->getOperand(2).isImm() &&
877
4
        MI->getOperand(2).getImm() == 4) {
878
2
      // (BIC16rc SR, 4)
879
2
      AsmString = "clrn";
880
2
      break;
881
2
    }
882
2
    if (MI->getNumOperands() == 3 &&
883
2
        MI->getOperand(0).getReg() == MSP430::SR &&
884
2
        MI->getOperand(2).isImm() &&
885
2
        MI->getOperand(2).getImm() == 2) {
886
2
      // (BIC16rc SR, 2)
887
2
      AsmString = "clrz";
888
2
      break;
889
2
    }
890
0
    return false;
891
9
  case MSP430::BIS16rc:
892
9
    if (MI->getNumOperands() == 3 &&
893
9
        MI->getOperand(0).getReg() == MSP430::SR &&
894
9
        
MI->getOperand(2).isImm()8
&&
895
9
        
MI->getOperand(2).getImm() == 88
) {
896
2
      // (BIS16rc SR, 8)
897
2
      AsmString = "eint";
898
2
      break;
899
2
    }
900
7
    if (MI->getNumOperands() == 3 &&
901
7
        MI->getOperand(0).getReg() == MSP430::SR &&
902
7
        
MI->getOperand(2).isImm()6
&&
903
7
        
MI->getOperand(2).getImm() == 16
) {
904
2
      // (BIS16rc SR, 1)
905
2
      AsmString = "setc";
906
2
      break;
907
2
    }
908
5
    if (MI->getNumOperands() == 3 &&
909
5
        MI->getOperand(0).getReg() == MSP430::SR &&
910
5
        
MI->getOperand(2).isImm()4
&&
911
5
        
MI->getOperand(2).getImm() == 44
) {
912
2
      // (BIS16rc SR, 4)
913
2
      AsmString = "setn";
914
2
      break;
915
2
    }
916
3
    if (MI->getNumOperands() == 3 &&
917
3
        MI->getOperand(0).getReg() == MSP430::SR &&
918
3
        
MI->getOperand(2).isImm()2
&&
919
3
        
MI->getOperand(2).getImm() == 22
) {
920
2
      // (BIS16rc SR, 2)
921
2
      AsmString = "setz";
922
2
      break;
923
2
    }
924
1
    return false;
925
3
  case MSP430::CMP16mc:
926
3
    if (MI->getNumOperands() == 3 &&
927
3
        MI->getOperand(2).isImm() &&
928
3
        MI->getOperand(2).getImm() == 0) {
929
2
      // (CMP16mc memdst:$dst, 0)
930
2
      AsmString = "tst  $\xFF\x01\x01";
931
2
      break;
932
2
    }
933
1
    return false;
934
46
  case MSP430::CMP16rc:
935
46
    if (MI->getNumOperands() == 2 &&
936
46
        MI->getOperand(0).isReg() &&
937
46
        MRI.getRegClass(MSP430::GR16RegClassID).contains(MI->getOperand(0).getReg()) &&
938
46
        MI->getOperand(1).isImm() &&
939
46
        MI->getOperand(1).getImm() == 0) {
940
39
      // (CMP16rc GR16:$dst, 0)
941
39
      AsmString = "tst  $\x01";
942
39
      break;
943
39
    }
944
7
    return false;
945
7
  case MSP430::CMP8mc:
946
0
    if (MI->getNumOperands() == 3 &&
947
0
        MI->getOperand(2).isImm() &&
948
0
        MI->getOperand(2).getImm() == 0) {
949
0
      // (CMP8mc memdst:$dst, 0)
950
0
      AsmString = "tst.b  $\xFF\x01\x01";
951
0
      break;
952
0
    }
953
0
    return false;
954
0
  case MSP430::CMP8rc:
955
0
    if (MI->getNumOperands() == 2 &&
956
0
        MI->getOperand(0).isReg() &&
957
0
        MRI.getRegClass(MSP430::GR8RegClassID).contains(MI->getOperand(0).getReg()) &&
958
0
        MI->getOperand(1).isImm() &&
959
0
        MI->getOperand(1).getImm() == 0) {
960
0
      // (CMP8rc GR8:$dst, 0)
961
0
      AsmString = "tst.b  $\x01";
962
0
      break;
963
0
    }
964
0
    return false;
965
0
  case MSP430::DADD16mc:
966
0
    if (MI->getNumOperands() == 3 &&
967
0
        MI->getOperand(2).isImm() &&
968
0
        MI->getOperand(2).getImm() == 0) {
969
0
      // (DADD16mc memdst:$dst, 0)
970
0
      AsmString = "dadc $\xFF\x01\x01";
971
0
      break;
972
0
    }
973
0
    return false;
974
2
  case MSP430::DADD16rc:
975
2
    if (MI->getNumOperands() == 3 &&
976
2
        MI->getOperand(0).isReg() &&
977
2
        MRI.getRegClass(MSP430::GR16RegClassID).contains(MI->getOperand(0).getReg()) &&
978
2
        MI->getOperand(2).isImm() &&
979
2
        MI->getOperand(2).getImm() == 0) {
980
2
      // (DADD16rc GR16:$dst, 0)
981
2
      AsmString = "dadc $\x01";
982
2
      break;
983
2
    }
984
0
    return false;
985
0
  case MSP430::DADD8mc:
986
0
    if (MI->getNumOperands() == 3 &&
987
0
        MI->getOperand(2).isImm() &&
988
0
        MI->getOperand(2).getImm() == 0) {
989
0
      // (DADD8mc memdst:$dst, 0)
990
0
      AsmString = "dadc.b $\xFF\x01\x01";
991
0
      break;
992
0
    }
993
0
    return false;
994
0
  case MSP430::DADD8rc:
995
0
    if (MI->getNumOperands() == 3 &&
996
0
        MI->getOperand(0).isReg() &&
997
0
        MRI.getRegClass(MSP430::GR8RegClassID).contains(MI->getOperand(0).getReg()) &&
998
0
        MI->getOperand(2).isImm() &&
999
0
        MI->getOperand(2).getImm() == 0) {
1000
0
      // (DADD8rc GR8:$dst, 0)
1001
0
      AsmString = "dadc.b $\x01";
1002
0
      break;
1003
0
    }
1004
0
    return false;
1005
67
  case MSP430::MOV16mc:
1006
67
    if (MI->getNumOperands() == 3 &&
1007
67
        MI->getOperand(2).isImm() &&
1008
67
        MI->getOperand(2).getImm() == 0) {
1009
44
      // (MOV16mc memdst:$dst, 0)
1010
44
      AsmString = "clr  $\xFF\x01\x01";
1011
44
      break;
1012
44
    }
1013
23
    return false;
1014
105
  case MSP430::MOV16rc:
1015
105
    if (MI->getNumOperands() == 2 &&
1016
105
        MI->getOperand(0).getReg() == MSP430::CG &&
1017
105
        
MI->getOperand(1).isImm()4
&&
1018
105
        
MI->getOperand(1).getImm() == 04
) {
1019
4
      // (MOV16rc CG, 0)
1020
4
      AsmString = "nop";
1021
4
      break;
1022
4
    }
1023
101
    if (MI->getNumOperands() == 2 &&
1024
101
        MI->getOperand(0).isReg() &&
1025
101
        MRI.getRegClass(MSP430::GR16RegClassID).contains(MI->getOperand(0).getReg()) &&
1026
101
        MI->getOperand(1).isImm() &&
1027
101
        MI->getOperand(1).getImm() == 0) {
1028
49
      // (MOV16rc GR16:$dst, 0)
1029
49
      AsmString = "clr  $\x01";
1030
49
      break;
1031
49
    }
1032
52
    return false;
1033
52
  case MSP430::MOV8mc:
1034
12
    if (MI->getNumOperands() == 3 &&
1035
12
        MI->getOperand(2).isImm() &&
1036
12
        MI->getOperand(2).getImm() == 0) {
1037
3
      // (MOV8mc memdst:$dst, 0)
1038
3
      AsmString = "clr.b  $\xFF\x01\x01";
1039
3
      break;
1040
3
    }
1041
9
    return false;
1042
9
  case MSP430::MOV8rc:
1043
3
    if (MI->getNumOperands() == 2 &&
1044
3
        MI->getOperand(0).isReg() &&
1045
3
        MRI.getRegClass(MSP430::GR8RegClassID).contains(MI->getOperand(0).getReg()) &&
1046
3
        MI->getOperand(1).isImm() &&
1047
3
        MI->getOperand(1).getImm() == 0) {
1048
2
      // (MOV8rc GR8:$dst, 0)
1049
2
      AsmString = "clr.b  $\x01";
1050
2
      break;
1051
2
    }
1052
1
    return false;
1053
1
  case MSP430::SUB16mc:
1054
0
    if (MI->getNumOperands() == 3 &&
1055
0
        MI->getOperand(2).isImm() &&
1056
0
        MI->getOperand(2).getImm() == 1) {
1057
0
      // (SUB16mc memdst:$dst, 1)
1058
0
      AsmString = "dec  $\xFF\x01\x01";
1059
0
      break;
1060
0
    }
1061
0
    if (MI->getNumOperands() == 3 &&
1062
0
        MI->getOperand(2).isImm() &&
1063
0
        MI->getOperand(2).getImm() == 2) {
1064
0
      // (SUB16mc memdst:$dst, 2)
1065
0
      AsmString = "decd $\xFF\x01\x01";
1066
0
      break;
1067
0
    }
1068
0
    return false;
1069
4
  case MSP430::SUB16rc:
1070
4
    if (MI->getNumOperands() == 3 &&
1071
4
        MI->getOperand(0).isReg() &&
1072
4
        MRI.getRegClass(MSP430::GR16RegClassID).contains(MI->getOperand(0).getReg()) &&
1073
4
        MI->getOperand(2).isImm() &&
1074
4
        MI->getOperand(2).getImm() == 1) {
1075
2
      // (SUB16rc GR16:$dst, 1)
1076
2
      AsmString = "dec  $\x01";
1077
2
      break;
1078
2
    }
1079
2
    if (MI->getNumOperands() == 3 &&
1080
2
        MI->getOperand(0).isReg() &&
1081
2
        MRI.getRegClass(MSP430::GR16RegClassID).contains(MI->getOperand(0).getReg()) &&
1082
2
        MI->getOperand(2).isImm() &&
1083
2
        MI->getOperand(2).getImm() == 2) {
1084
2
      // (SUB16rc GR16:$dst, 2)
1085
2
      AsmString = "decd $\x01";
1086
2
      break;
1087
2
    }
1088
0
    return false;
1089
0
  case MSP430::SUB8mc:
1090
0
    if (MI->getNumOperands() == 3 &&
1091
0
        MI->getOperand(2).isImm() &&
1092
0
        MI->getOperand(2).getImm() == 1) {
1093
0
      // (SUB8mc memdst:$dst, 1)
1094
0
      AsmString = "dec.b  $\xFF\x01\x01";
1095
0
      break;
1096
0
    }
1097
0
    if (MI->getNumOperands() == 3 &&
1098
0
        MI->getOperand(2).isImm() &&
1099
0
        MI->getOperand(2).getImm() == 2) {
1100
0
      // (SUB8mc memdst:$dst, 2)
1101
0
      AsmString = "decd.b $\xFF\x01\x01";
1102
0
      break;
1103
0
    }
1104
0
    return false;
1105
0
  case MSP430::SUB8rc:
1106
0
    if (MI->getNumOperands() == 3 &&
1107
0
        MI->getOperand(0).isReg() &&
1108
0
        MRI.getRegClass(MSP430::GR8RegClassID).contains(MI->getOperand(0).getReg()) &&
1109
0
        MI->getOperand(2).isImm() &&
1110
0
        MI->getOperand(2).getImm() == 1) {
1111
0
      // (SUB8rc GR8:$dst, 1)
1112
0
      AsmString = "dec.b  $\x01";
1113
0
      break;
1114
0
    }
1115
0
    if (MI->getNumOperands() == 3 &&
1116
0
        MI->getOperand(0).isReg() &&
1117
0
        MRI.getRegClass(MSP430::GR8RegClassID).contains(MI->getOperand(0).getReg()) &&
1118
0
        MI->getOperand(2).isImm() &&
1119
0
        MI->getOperand(2).getImm() == 2) {
1120
0
      // (SUB8rc GR8:$dst, 2)
1121
0
      AsmString = "decd.b $\x01";
1122
0
      break;
1123
0
    }
1124
0
    return false;
1125
0
  case MSP430::SUBC16mc:
1126
0
    if (MI->getNumOperands() == 3 &&
1127
0
        MI->getOperand(2).isImm() &&
1128
0
        MI->getOperand(2).getImm() == 0) {
1129
0
      // (SUBC16mc memdst:$dst, 0)
1130
0
      AsmString = "sbc  $\xFF\x01\x01";
1131
0
      break;
1132
0
    }
1133
0
    return false;
1134
2
  case MSP430::SUBC16rc:
1135
2
    if (MI->getNumOperands() == 3 &&
1136
2
        MI->getOperand(0).isReg() &&
1137
2
        MRI.getRegClass(MSP430::GR16RegClassID).contains(MI->getOperand(0).getReg()) &&
1138
2
        MI->getOperand(2).isImm() &&
1139
2
        MI->getOperand(2).getImm() == 0) {
1140
2
      // (SUBC16rc GR16:$dst, 0)
1141
2
      AsmString = "sbc  $\x01";
1142
2
      break;
1143
2
    }
1144
0
    return false;
1145
0
  case MSP430::SUBC8mc:
1146
0
    if (MI->getNumOperands() == 3 &&
1147
0
        MI->getOperand(2).isImm() &&
1148
0
        MI->getOperand(2).getImm() == 0) {
1149
0
      // (SUBC8mc memdst:$dst, 0)
1150
0
      AsmString = "sbc.b  $\xFF\x01\x01";
1151
0
      break;
1152
0
    }
1153
0
    return false;
1154
0
  case MSP430::SUBC8rc:
1155
0
    if (MI->getNumOperands() == 3 &&
1156
0
        MI->getOperand(0).isReg() &&
1157
0
        MRI.getRegClass(MSP430::GR8RegClassID).contains(MI->getOperand(0).getReg()) &&
1158
0
        MI->getOperand(2).isImm() &&
1159
0
        MI->getOperand(2).getImm() == 0) {
1160
0
      // (SUBC8rc GR8:$dst, 0)
1161
0
      AsmString = "sbc.b  $\x01";
1162
0
      break;
1163
0
    }
1164
0
    return false;
1165
1
  case MSP430::XOR16mc:
1166
1
    if (MI->getNumOperands() == 3 &&
1167
1
        MI->getOperand(2).isImm() &&
1168
1
        MI->getOperand(2).getImm() == -1) {
1169
0
      // (XOR16mc memdst:$dst, -1)
1170
0
      AsmString = "inv  $\xFF\x01\x01";
1171
0
      break;
1172
0
    }
1173
1
    return false;
1174
4
  case MSP430::XOR16rc:
1175
4
    if (MI->getNumOperands() == 3 &&
1176
4
        MI->getOperand(0).isReg() &&
1177
4
        MRI.getRegClass(MSP430::GR16RegClassID).contains(MI->getOperand(0).getReg()) &&
1178
4
        MI->getOperand(2).isImm() &&
1179
4
        MI->getOperand(2).getImm() == -1) {
1180
3
      // (XOR16rc GR16:$dst, -1)
1181
3
      AsmString = "inv  $\x01";
1182
3
      break;
1183
3
    }
1184
1
    return false;
1185
1
  case MSP430::XOR8mc:
1186
1
    if (MI->getNumOperands() == 3 &&
1187
1
        MI->getOperand(2).isImm() &&
1188
1
        MI->getOperand(2).getImm() == -1) {
1189
0
      // (XOR8mc memdst:$dst, -1)
1190
0
      AsmString = "inv.b  $\xFF\x01\x01";
1191
0
      break;
1192
0
    }
1193
1
    return false;
1194
1
  case MSP430::XOR8rc:
1195
1
    if (MI->getNumOperands() == 3 &&
1196
1
        MI->getOperand(0).isReg() &&
1197
1
        MRI.getRegClass(MSP430::GR8RegClassID).contains(MI->getOperand(0).getReg()) &&
1198
1
        MI->getOperand(2).isImm() &&
1199
1
        MI->getOperand(2).getImm() == -1) {
1200
0
      // (XOR8rc GR8:$dst, -1)
1201
0
      AsmString = "inv.b  $\x01";
1202
0
      break;
1203
0
    }
1204
1
    return false;
1205
193
  }
1206
193
1207
193
  unsigned I = 0;
1208
822
  while (AsmString[I] != ' ' && AsmString[I] != '\t' &&
1209
822
         
AsmString[I] != '$'657
&&
AsmString[I] != '\0'657
)
1210
629
    ++I;
1211
193
  OS << '\t' << StringRef(AsmString, I);
1212
193
  if (AsmString[I] != '\0') {
1213
165
    if (AsmString[I] == ' ' || AsmString[I] == '\t') {
1214
165
      OS << '\t';
1215
165
      ++I;
1216
165
    }
1217
165
    do {
1218
165
      if (AsmString[I] == '$') {
1219
165
        ++I;
1220
165
        if (AsmString[I] == (char)0xff) {
1221
52
          ++I;
1222
52
          int OpIdx = AsmString[I++] - 1;
1223
52
          int PrintMethodIdx = AsmString[I++] - 1;
1224
52
          printCustomAliasOperand(MI, OpIdx, PrintMethodIdx, OS);
1225
52
        } else
1226
113
          printOperand(MI, unsigned(AsmString[I++]) - 1, OS);
1227
165
      } else {
1228
0
        OS << AsmString[I++];
1229
0
      }
1230
165
    } while (AsmString[I] != '\0');
1231
165
  }
1232
193
1233
193
  return true;
1234
193
}
1235
1236
void MSP430InstPrinter::printCustomAliasOperand(
1237
         const MCInst *MI, unsigned OpIdx,
1238
         unsigned PrintMethodIdx,
1239
52
         raw_ostream &OS) {
1240
52
  switch (PrintMethodIdx) {
1241
52
  default:
1242
0
    llvm_unreachable("Unknown PrintMethod kind");
1243
52
    
break0
;
1244
52
  case 0:
1245
52
    printSrcMemOperand(MI, OpIdx, OS);
1246
52
    break;
1247
52
  }
1248
52
}
1249
1250
#endif // PRINT_ALIAS_INSTR