• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1@ RUN: llvm-mc -mcpu=cortex-a8 -triple thumb-unknown-unknown -show-encoding < %s | FileCheck %s
2@ XFAIL: *
3.code 16
4
5@ CHECK: adc	r1, r1, #171            @ encoding: [0xab,0x01,0x41,0xf1]
6  adc	r1, r1, #171
7@ CHECK: adc	r1, r1, #1179666        @ encoding: [0x12,0x11,0x41,0xf1]
8  adc	r1, r1, #1179666
9@ CHECK: adc	r1, r1, #872428544      @ encoding: [0x34,0x21,0x41,0xf1]
10  adc	r1, r1, #872428544
11@ CHECK: adc	r1, r1, #1448498774     @ encoding: [0x56,0x31,0x41,0xf1]
12  adc	r1, r1, #1448498774
13@ CHECK: adc	r1, r1, #66846720       @ encoding: [0x7f,0x71,0x41,0xf1]
14  adc	r1, r1, #66846720
15
16@ CHECK: mvn	r0, #187                @ encoding: [0xbb,0x00,0x6f,0xf0]
17  mvn	r0, #187
18@ CHECK: mvn	r0, #11141290           @ encoding: [0xaa,0x10,0x6f,0xf0]
19  mvn	r0, #11141290
20@ CHECK: mvn	r0, #-872363008         @ encoding: [0xcc,0x20,0x6f,0xf0]
21  mvn	r0, #-872363008
22@ CHECK: mvn	r0, #1114112            @ encoding: [0x88,0x10,0x6f,0xf4]
23  mvn	r0, #1114112
24
25@ CHECK: cmp.w	r0, #11141290           @ encoding: [0xaa,0x1f,0xb0,0xf1]
26  cmp.w	r0, #11141290
27@ CHECK: cmp.w	r0, #-872363008         @ encoding: [0xcc,0x2f,0xb0,0xf1]
28  cmp.w	r0, #-872363008
29@ CHECK: cmp.w	r0, #-572662307         @ encoding: [0xdd,0x3f,0xb0,0xf1]
30  cmp.w	r0, #-572662307
31@ CHECK: cmp.w	r0, #1114112            @ encoding: [0x88,0x1f,0xb0,0xf5]
32  cmp.w	r0, #1114112
33@ CHECK: cmp.w	r0, r1, lsl #5          @ encoding: [0x41,0x1f,0xb0,0xeb]
34  cmp.w	r0, r1, lsl #5
35
36@ CHECK: sxtab	r0, r1, r0              @ encoding: [0x80,0xf0,0x41,0xfa]
37  sxtab	r0, r1, r0              @ encoding: [0x80,0xf0,0x41,0xfa]
38
39@ CHECK: movw	r0, #65535              @ encoding: [0xff,0x70,0x4f,0xf6]
40  movw	r0, #65535
41@ CHECK: movw	r1, #43777              @ encoding: [0x01,0x31,0x4a,0xf6]
42  movw	r1, #43777
43@ CHECK: movt	r1, #427                @ encoding: [0xab,0x11,0xc0,0xf2]
44  movt	r1, #427
45@ CHECK: movw	r1, #43792              @ encoding: [0x10,0x31,0x4a,0xf6]
46  movw	r1, #43792
47@ CHECK: movt	r1, #4267               @ encoding: [0xab,0x01,0xc0,0xf2]
48  movt	r1, #4267
49@ CHECK: mov.w	r0, #66846720           @ encoding: [0x7f,0x70,0x4f,0xf0]
50  mov.w	r0, #66846720
51
52@ Aliases w/ the vanilla 'mov' mnemonic, and explicit alternative selection.
53  mov r2, #0xbf000000
54  mov r1, #0x100
55  mov r3, #32
56  mov.w r3, #32
57  movw r3, #32
58
59@ CHECK: mov.w r2, #3204448256 @ encoding: [0x4f,0xf0,0x3f,0x42]
60@ CHECK: mov.w r1, #256 @ encoding: [0x4f,0xf4,0x80,0x71]
61@ CHECK: mov r3, #32 @ encoding: [0x20,0x23]
62@ CHECK: mov.w r3, #32 @ encoding: [0x4f,0xf0,0x20,0x03]
63@ CHECK: movw  r3, #32 @ encoding: [0x40,0xf2,0x20,0x03]
64
65
66
67
68@ CHECK: rrx	r0, r0                  @ encoding: [0x30,0x00,0x4f,0xea]
69  rrx	r0, r0
70
71@ CHECK: bfc	r0, #4, #20             @ encoding: [0x17,0x10,0x6f,0xf3]
72  bfc	r0, #4, #20
73@ CHECK: bfc	r0, #0, #23             @ encoding: [0x16,0x00,0x6f,0xf3]
74  bfc	r0, #0, #23
75@ CHECK: bfc	r0, #12, #20            @ encoding: [0x1f,0x30,0x6f,0xf3]
76  bfc	r0, #12, #20
77
78@ CHECK: sbfx	r0, r0, #7, #11         @ encoding: [0xca,0x10,0x40,0xf3]
79  sbfx	r0, r0, #7, #11
80@ CHECK: ubfx	r0, r0, #7, #11         @ encoding: [0xca,0x10,0xc0,0xf3]
81  ubfx	r0, r0, #7, #11
82
83@ CHECK: mla	r0, r0, r1, r2          @ encoding: [0x01,0x20,0x00,0xfb]
84  mla	r0, r0, r1, r2
85@ CHECK: mls	r0, r0, r1, r2          @ encoding: [0x11,0x20,0x00,0xfb]
86  mls	r0, r0, r1, r2
87
88@ CHECK: smlabt	r0, r1, r2, r0          @ encoding: [0x12,0x00,0x11,0xfb]
89  smlabt	r0, r1, r2, r0
90
91@ CHECK: clz	r0, r0                  @ encoding: [0x80,0xf0,0xb0,0xfa]
92  clz	r0, r0
93
94@ CHECK: pkhbt	r0, r0, r1, lsl #16     @ encoding: [0x01,0x40,0xc0,0xea]
95  pkhbt	r0, r0, r1, lsl #16
96@ CHECK: pkhbt	r0, r0, r1, lsl #12     @ encoding: [0x01,0x30,0xc0,0xea]
97  pkhbt	r0, r0, r1, lsl #16
98@ CHECK: pkhbt	r0, r0, r1, lsl #18     @ encoding: [0x81,0x40,0xc0,0xea]
99  pkhbt	r0, r0, r1, lsl #18
100@ CHECK: pkhbt	r0, r0, r1              @ encoding: [0x01,0x00,0xc0,0xea]
101  pkhbt	r0, r0, r1
102@ CHECK: pkhtb	r0, r0, r1, asr #16     @ encoding: [0x21,0x40,0xc0,0xea]
103  pkhtb	r0, r0, r1, asr #16
104@ CHECK: pkhtb	r0, r0, r1, asr #12     @ encoding: [0x21,0x30,0xc0,0xea]
105  pkhtb	r0, r0, r1, asr #12
106@ CHECK: pkhtb	r0, r0, r1, asr #18     @ encoding: [0xa1,0x40,0xc0,0xea]
107  pkhtb	r0, r0, r1, asr #18
108@ CHECK: pkhtb	r0, r0, r1, asr #22     @ encoding: [0xa1,0x50,0xc0,0xea]
109  pkhtb	r0, r0, r1, asr #22
110
111@ CHECK: str.w	r0, [r1, #4092]         @ encoding: [0xfc,0x0f,0xc1,0xf8]
112  str.w	r0, [r1, #4092]
113@ CHECK: str	r0, [r1, #-128]         @ encoding: [0x80,0x0c,0x41,0xf8]
114  str	r0, [r1, #-128]
115@ CHECK: str.w	r0, [r1, r2, lsl #2]    @ encoding: [0x22,0x00,0x41,0xf8
116  str.w	r0, [r1, r2, lsl #2]
117
118@ CHECK: ldr.w	r0, [r0, #4092]         @ encoding: [0xfc,0x0f,0xd0,0xf8]
119  ldr.w	r0, [r0, #4092]
120@ CHECK: ldr	r0, [r0, #-128]         @ encoding: [0x80,0x0c,0x50,0xf8]
121  ldr	r0, [r0, #-128]
122@ CHECK: ldr.w	r0, [r0, r1, lsl #2]    @ encoding: [0x21,0x00,0x50,0xf8]
123  ldr.w	r0, [r0, r1, lsl #2]
124
125@ CHECK: str	r1, [r0, #16]!          @ encoding: [0x10,0x1f,0x40,0xf8]
126  str	r1, [r0, #16]!
127@ CHECK: strh	r1, [r0, #8]!           @ encoding: [0x08,0x1f,0x20,0xf8]
128  strh	r1, [r0, #8]!
129@ CHECK: strh	r2, [r0], #-4           @ encoding: [0x04,0x29,0x20,0xf8]
130  strh	r2, [r0], #-4
131@ CHECK: str	r2, [r0], #-4           @ encoding: [0x04,0x29,0x40,0xf8]
132  str	r2, [r0], #-4
133
134@ CHECK: ldr	r2, [r0, #16]!          @ encoding: [0x10,0x2f,0x50,0xf8]
135  ldr	r2, [r0, #16]!
136@ CHECK: ldr	r2, [r0, #-64]!         @ encoding: [0x40,0x2d,0x50,0xf8]
137  ldr	r2, [r0, #-64]!
138@ CHECK: ldrsb	r2, [r0, #4]!           @ encoding: [0x04,0x2f,0x10,0xf9]
139  ldrsb	r2, [r0, #4]!
140
141@ CHECK: strb.w	r0, [r1, #4092]         @ encoding: [0xfc,0x0f,0x81,0xf8]
142  strb.w	r0, [r1, #4092]
143@ CHECK: strb	r0, [r1, #-128]         @ encoding: [0x80,0x0c,0x01,0xf8]
144  strb	r0, [r1, #-128]
145@ CHECK: strb.w	r0, [r1, r2, lsl #2]    @ encoding: [0x22,0x00,0x01,0xf8]
146  strb.w	r0, [r1, r2, lsl #2]
147@ CHECK: strh.w	r0, [r1, #4092]         @ encoding: [0xfc,0x0f,0xa1,0xf8]
148  strh.w	r0, [r1, #4092]
149@ CHECK: strh	r0, [r1, #-128]         @ encoding: [0x80,0x0c,0x21,0xf8]
150  strh	r0, [r1, #-128]
151@ CHECK: strh	r0, [r1, #-128]         @ encoding: [0x80,0x0c,0x21,0xf8]
152  strh	r0, [r1, #-128]
153@ CHECK: strh.w	r0, [r1, r2, lsl #2]    @ encoding: [0x22,0x00,0x21,0xf8]
154  strh.w	r0, [r1, r2, lsl #2]
155
156@ CHECK: ldrb	r0, [r0, #-1]           @ encoding: [0x01,0x0c,0x10,0xf8]
157  ldrb	r0, [r0, #-1]
158@ CHECK: ldrb	r0, [r0, #-128]         @ encoding: [0x80,0x0c,0x10,0xf8]
159  ldrb	r0, [r0, #-128]
160@ CHECK: ldrb.w	r0, [r0, r1, lsl #2]    @ encoding: [0x21,0x00,0x10,0xf8]
161  ldrb.w	r0, [r0, r1, lsl #2]
162@ CHECK: ldrh.w	r0, [r0, #2046]         @ encoding: [0xfe,0x07,0xb0,0xf8]
163  ldrh.w	r0, [r0, #2046]
164@ CHECK: ldrh	r0, [r0, #-128]         @ encoding: [0x80,0x0c,0x30,0xf8]
165  ldrh	r0, [r0, #-128]
166@ CHECK: ldrh.w	r0, [r0, r1, lsl #2]    @ encoding: [0x21,0x00,0x30,0xf8]
167  ldrh.w	r0, [r0, r1, lsl #2]
168@ CHECK: ldrsb.w	r0, [r0]                @ encoding: [0x00,0x00,0x90,0xf9]
169  ldrsb.w	r0, [r0]
170@ CHECK: ldrsh.w	r0, [r0]                @ encoding: [0x00,0x00,0xb0,0xf9]
171  ldrsh.w	r0, [r0]
172@ CHECK: bfi  r0, r0, #5, #7 @ encoding: [0x60,0xf3,0x4b,0x10]
173  bfi  r0, r0, #5, #7
174@ CHECK: isb @ encoding: [0xbf,0xf3,0x6f,0x8f]
175  isb
176@ CHECK: mrs  r0, cpsr @ encoding: [0xef,0xf3,0x00,0x80]
177  mrs  r0, cpsr
178@ CHECK: vmrs  r0, fpscr @ encoding: [0xf1,0xee,0x10,0x0a]
179  vmrs  r0, fpscr
180@ CHECK: vmrs  r0, fpexc @ encoding: [0xf8,0xee,0x10,0x0a]
181  vmrs  r0, fpexc
182@ CHECK: vmrs  r0, fpsid @ encoding: [0xf0,0xee,0x10,0x0a]
183  vmrs  r0, fpsid
184
185@ CHECK: vmsr  fpscr, r0 @ encoding: [0xe1,0xee,0x10,0x0a]
186  vmsr  fpscr, r0
187@ CHECK: vmsr  fpexc, r0 @ encoding: [0xe8,0xee,0x10,0x0a]
188  vmsr  fpexc, r0
189@ CHECK: vmsr  fpsid, r0 @ encoding: [0xe0,0xee,0x10,0x0a]
190  vmsr  fpsid, r0
191
192@ CHECK: mcr  p7, #1, r5, c1, c1, #4 @ encoding: [0x21,0xee,0x91,0x57]
193        mcr  p7, #1, r5, c1, c1, #4
194
195@ CHECK: mrc  p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xee,0x92,0x1e]
196        mrc  p14, #0, r1, c1, c2, #4
197
198@ CHECK: mcrr  p7, #1, r5, r4, c1 @ encoding: [0x44,0xec,0x11,0x57]
199        mcrr  p7, #1, r5, r4, c1
200
201@ CHECK: mrrc  p7, #1, r5, r4, c1 @ encoding: [0x54,0xec,0x11,0x57]
202        mrrc  p7, #1, r5, r4, c1
203
204@ CHECK: mcr2  p7, #1, r5, c1, c1, #4 @ encoding: [0x21,0xfe,0x91,0x57]
205        mcr2  p7, #1, r5, c1, c1, #4
206
207@ CHECK: mrc2  p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xfe,0x92,0x1e]
208        mrc2  p14, #0, r1, c1, c2, #4
209
210@ CHECK: mcrr2  p7, #1, r5, r4, c1 @ encoding: [0x44,0xfc,0x11,0x57]
211        mcrr2  p7, #1, r5, r4, c1
212
213@ CHECK: mrrc2  p7, #1, r5, r4, c1 @ encoding: [0x54,0xfc,0x11,0x57]
214        mrrc2  p7, #1, r5, r4, c1
215
216@ CHECK: cdp  p7, #1, c1, c1, c1, #4 @ encoding: [0x11,0xee,0x81,0x17]
217        cdp  p7, #1, c1, c1, c1, #4
218
219@ CHECK: cdp2  p7, #1, c1, c1, c1, #4 @ encoding: [0x11,0xfe,0x81,0x17]
220        cdp2  p7, #1, c1, c1, c1, #4
221
222@ CHECK: clrex @ encoding: [0xbf,0xf3,0x2f,0x8f]
223        clrex
224
225@ CHECK: clz  r9, r0 @ encoding: [0xb0,0xfa,0x80,0xf9]
226        clz  r9, r0
227
228@ CHECK: qadd  r1, r2, r3 @ encoding: [0x83,0xfa,0x82,0xf1]
229        qadd  r1, r2, r3
230
231@ CHECK: qsub  r1, r2, r3 @ encoding: [0x83,0xfa,0xa2,0xf1]
232        qsub  r1, r2, r3
233
234@ CHECK: qdadd  r1, r2, r3 @ encoding: [0x83,0xfa,0x92,0xf1]
235        qdadd  r1, r2, r3
236
237@ CHECK: qdsub  r1, r2, r3 @ encoding: [0x83,0xfa,0xb2,0xf1]
238        qdsub  r1, r2, r3
239
240@ CHECK: nop.w @ encoding: [0xaf,0xf3,0x00,0x80]
241        nop.w
242
243@ CHECK: yield.w @ encoding: [0xaf,0xf3,0x01,0x80]
244        yield.w
245
246@ CHECK: wfe.w @ encoding: [0xaf,0xf3,0x02,0x80]
247        wfe.w
248
249@ CHECK: wfi.w @ encoding: [0xaf,0xf3,0x03,0x80]
250        wfi.w
251
252@ CHECK: dmb  sy @ encoding: [0xbf,0xf3,0x5f,0x8f]
253  dmb  sy
254@ CHECK: dmb  st @ encoding: [0xbf,0xf3,0x5e,0x8f]
255  dmb  st
256@ CHECK: dmb  ish @ encoding: [0xbf,0xf3,0x5b,0x8f]
257  dmb  ish
258@ CHECK: dmb  ishst @ encoding: [0xbf,0xf3,0x5a,0x8f]
259  dmb  ishst
260@ CHECK: dmb  nsh @ encoding: [0xbf,0xf3,0x57,0x8f]
261  dmb  nsh
262@ CHECK: dmb  nshst @ encoding: [0xbf,0xf3,0x56,0x8f]
263  dmb  nshst
264@ CHECK: dmb  osh @ encoding: [0xbf,0xf3,0x53,0x8f]
265  dmb  osh
266@ CHECK: dmb  oshst @ encoding: [0xbf,0xf3,0x52,0x8f]
267  dmb  oshst
268
269@ CHECK: dsb  sy @ encoding: [0xbf,0xf3,0x4f,0x8f]
270  dsb  sy
271@ CHECK: dsb  st @ encoding: [0xbf,0xf3,0x4e,0x8f]
272  dsb  st
273@ CHECK: dsb  ish @ encoding: [0xbf,0xf3,0x4b,0x8f]
274  dsb  ish
275@ CHECK: dsb  ishst @ encoding: [0xbf,0xf3,0x4a,0x8f]
276  dsb  ishst
277@ CHECK: dsb  nsh @ encoding: [0xbf,0xf3,0x47,0x8f]
278  dsb  nsh
279@ CHECK: dsb  nshst @ encoding: [0xbf,0xf3,0x46,0x8f]
280  dsb  nshst
281@ CHECK: dsb  osh @ encoding: [0xbf,0xf3,0x43,0x8f]
282  dsb  osh
283@ CHECK: dsb  oshst @ encoding: [0xbf,0xf3,0x42,0x8f]
284  dsb  oshst
285
286@ CHECK: cpsie.w  aif @ encoding: [0xaf,0xf3,0xe0,0x84]
287  cpsie.w  aif
288@ CHECK: cps  #15 @ encoding: [0xaf,0xf3,0x0f,0x81]
289  cps  #15
290@ CHECK: cpsie.w  if, #10 @ encoding: [0xaf,0xf3,0x6a,0x85]
291  cpsie.w  if, #10
292
293@ CHECK: msr  cpsr_fc, r0 @ encoding: [0x80,0xf3,0x00,0x89]
294  msr  apsr, r0
295@ CHECK: msr  cpsr_s, r0 @ encoding: [0x80,0xf3,0x00,0x84]
296  msr  apsr_g, r0
297@ CHECK: msr  cpsr_f, r0 @ encoding: [0x80,0xf3,0x00,0x88]
298  msr  apsr_nzcvq, r0
299@ CHECK: msr  cpsr_fs, r0 @ encoding: [0x80,0xf3,0x00,0x8c]
300  msr  apsr_nzcvqg, r0
301@ CHECK: msr  cpsr_fc, r0 @ encoding: [0x80,0xf3,0x00,0x89]
302  msr  cpsr_fc, r0
303@ CHECK: msr  cpsr_c, r0 @ encoding: [0x80,0xf3,0x00,0x81]
304  msr  cpsr_c, r0
305@ CHECK: msr  cpsr_x, r0 @ encoding: [0x80,0xf3,0x00,0x82]
306  msr  cpsr_x, r0
307@ CHECK: msr  cpsr_fc, r0 @ encoding: [0x80,0xf3,0x00,0x89]
308  msr  cpsr_fc, r0
309@ CHECK: msr  cpsr_fsx, r0 @ encoding: [0x80,0xf3,0x00,0x8e]
310  msr  cpsr_fsx, r0
311@ CHECK: msr  spsr_fc, r0 @ encoding: [0x90,0xf3,0x00,0x89]
312  msr  spsr_fc, r0
313@ CHECK: msr  spsr_fsxc, r0 @ encoding: [0x90,0xf3,0x00,0x8f]
314  msr  spsr_fsxc, r0
315@ CHECK: msr  cpsr_fsxc, r0 @ encoding: [0x80,0xf3,0x00,0x8f]
316  msr  cpsr_fsxc, r0
317
318@ CHECK: strexb  r0, r1, [r2] @ encoding: [0xc2,0xe8,0x40,0x1f]
319  strexb  r0, r1, [r2]
320@ CHECK: strexh  r0, r1, [r2] @ encoding: [0xc2,0xe8,0x50,0x1f]
321  strexh  r0, r1, [r2]
322@ CHECK: strex  r0, r1, [r2] @ encoding: [0x42,0xe8,0x00,0x10]
323  strex  r0, r1, [r2]
324@ CHECK: strexd  r0, r2, r3, [r1] @ encoding: [0xc1,0xe8,0x70,0x23]
325  strexd  r0, r2, r3, [r1]
326@ CHECK: ldrexb  r0, [r0] @ encoding: [0xd0,0xe8,0x4f,0x0f]
327  ldrexb  r0, [r0]
328@ CHECK: ldrexh  r0, [r0] @ encoding: [0xd0,0xe8,0x5f,0x0f]
329  ldrexh  r0, [r0]
330@ CHECK: ldrex  r0, [r0] @ encoding: [0x50,0xe8,0x00,0x0f]
331  ldrex  r0, [r0]
332@ CHECK: ldrexd  r0, r1, [r0] @ encoding: [0xd0,0xe8,0x7f,0x01]
333  ldrexd  r0, r1, [r0]
334@ CHECK: ssat16  r0, #7, r0 @ encoding: [0x20,0xf3,0x06,0x00]
335  ssat16  r0, #7, r0
336
337  and r1, #0xff
338  and r1, r1, #0xff
339  orr r1, 0x100
340  orr r1, r1, 0x100
341  eor r1, 0x100
342  eor r1, r1, 0x100
343  bic r1, 0x100
344  bic r1, r1, 0x100
345
346@ CHECK: and r1, r1, #255 @ encoding: [0x01,0xf0,0xff,0x01]
347@ CHECK: and r1, r1, #255 @ encoding: [0x01,0xf0,0xff,0x01]
348@ CHECK: orr r1, r1, #256 @ encoding: [0x41,0xf4,0x80,0x71]
349@ CHECK: orr r1, r1, #256 @ encoding: [0x41,0xf4,0x80,0x71]
350@ CHECK: eor r1, r1, #256 @ encoding: [0x81,0xf4,0x80,0x71]
351@ CHECK: eor r1, r1, #256 @ encoding: [0x81,0xf4,0x80,0x71]
352@ CHECK: bic r1, r1, #256 @ encoding: [0x21,0xf4,0x80,0x71]
353@ CHECK: bic r1, r1, #256 @ encoding: [0x21,0xf4,0x80,0x71]
354
355
356