Coverage Report

Created: 2018-12-11 00:00

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