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