eb5b6149da7634096bea9b7822ccc89e1a829739
[oota-llvm.git] / test / MC / ARM / basic-thumb2-instructions.s
1 @ RUN: llvm-mc -triple=thumbv7-apple-darwin -mcpu=cortex-a8 -show-encoding < %s | FileCheck %s
2   .syntax unified
3   .globl _func
4
5 @ Check that the assembler can handle the documented syntax from the ARM ARM.
6 @ For complex constructs like shifter operands, check more thoroughly for them
7 @ once then spot check that following instructions accept the form generally.
8 @ This gives us good coverage while keeping the overall size of the test
9 @ more reasonable.
10
11
12 @ FIXME: Some 3-operand instructions have a 2-operand assembly syntax.
13
14 _func:
15 @ CHECK: _func
16
17 @------------------------------------------------------------------------------
18 @ ADC (immediate)
19 @------------------------------------------------------------------------------
20         adc r0, r1, #4
21         adcs r0, r1, #0
22         adc r1, r2, #255
23         adc r3, r7, #0x00550055
24         adc r8, r12, #0xaa00aa00
25         adc r9, r7, #0xa5a5a5a5
26         adc r5, r3, #0x87000000
27         adc r4, r2, #0x7f800000
28         adc r4, r2, #0x00000680
29
30 @ CHECK: adc    r0, r1, #4              @ encoding: [0x41,0xf1,0x04,0x00]
31 @ CHECK: adcs   r0, r1, #0              @ encoding: [0x51,0xf1,0x00,0x00]
32 @ CHECK: adc    r1, r2, #255            @ encoding: [0x42,0xf1,0xff,0x01]
33 @ CHECK: adc    r3, r7, #5570645        @ encoding: [0x47,0xf1,0x55,0x13]
34 @ CHECK: adc    r8, r12, #2852170240    @ encoding: [0x4c,0xf1,0xaa,0x28]
35 @ CHECK: adc    r9, r7, #2779096485     @ encoding: [0x47,0xf1,0xa5,0x39]
36 @ CHECK: adc    r5, r3, #2264924160     @ encoding: [0x43,0xf1,0x07,0x45]
37 @ CHECK: adc    r4, r2, #2139095040     @ encoding: [0x42,0xf1,0xff,0x44]
38 @ CHECK: adc    r4, r2, #1664           @ encoding: [0x42,0xf5,0xd0,0x64]
39
40 @------------------------------------------------------------------------------
41 @ ADC (register)
42 @------------------------------------------------------------------------------
43         adc r4, r5, r6
44         adcs r4, r5, r6
45         adc.w r9, r1, r3
46         adcs.w r9, r1, r3
47         adc     r0, r1, r3, ror #4
48         adcs    r0, r1, r3, lsl #7
49         adc.w   r0, r1, r3, lsr #31
50         adcs.w  r0, r1, r3, asr #32
51         add r2, sp, ip
52
53 @ CHECK: adc.w  r4, r5, r6              @ encoding: [0x45,0xeb,0x06,0x04]
54 @ CHECK: adcs.w r4, r5, r6              @ encoding: [0x55,0xeb,0x06,0x04]
55 @ CHECK: adc.w  r9, r1, r3              @ encoding: [0x41,0xeb,0x03,0x09]
56 @ CHECK: adcs.w r9, r1, r3              @ encoding: [0x51,0xeb,0x03,0x09]
57 @ CHECK: adc.w  r0, r1, r3, ror #4      @ encoding: [0x41,0xeb,0x33,0x10]
58 @ CHECK: adcs.w r0, r1, r3, lsl #7      @ encoding: [0x51,0xeb,0xc3,0x10]
59 @ CHECK: adc.w  r0, r1, r3, lsr #31     @ encoding: [0x41,0xeb,0xd3,0x70]
60 @ CHECK: adcs.w r0, r1, r3, asr #32     @ encoding: [0x51,0xeb,0x23,0x00]
61 @ CHECK: add.w  r2, sp, r12             @ encoding: [0x0d,0xeb,0x0c,0x02]
62
63
64 @------------------------------------------------------------------------------
65 @ ADD (immediate)
66 @------------------------------------------------------------------------------
67         itet eq
68         addeq r1, r2, #4
69         addwne r5, r3, #1023
70         addeq r4, r5, #293
71         add r2, sp, #1024
72         add r2, r8, #0xff00
73         add r2, r3, #257
74         addw r2, r3, #257
75         add r12, r6, #0x100
76         addw r12, r6, #0x100
77         adds r1, r2, #0x1f0
78         add r2, #1
79         add r0, r0, #32
80         adds r2, r2, #56
81         adds r2, #56
82         add r1, r7, #0xcbcbcbcb
83         add sp, sp, #0x1fe0000
84
85         adds.w r2, #-16
86         adds.w r2, r2, #-16
87         addw r2, #-16
88         addw r2, #-16
89         addw r2, r2, #-16
90
91 @ CHECK: itet   eq                      @ encoding: [0x0a,0xbf]
92 @ CHECK: addeq  r1, r2, #4              @ encoding: [0x11,0x1d]
93 @ CHECK: addwne r5, r3, #1023           @ encoding: [0x03,0xf2,0xff,0x35]
94 @ CHECK: addweq r4, r5, #293            @ encoding: [0x05,0xf2,0x25,0x14]
95 @ CHECK: add.w  r2, sp, #1024           @ encoding: [0x0d,0xf5,0x80,0x62]
96 @ CHECK: add.w  r2, r8, #65280          @ encoding: [0x08,0xf5,0x7f,0x42]
97 @ CHECK: addw   r2, r3, #257            @ encoding: [0x03,0xf2,0x01,0x12]
98 @ CHECK: addw   r2, r3, #257            @ encoding: [0x03,0xf2,0x01,0x12]
99 @ CHECK: add.w  r12, r6, #256           @ encoding: [0x06,0xf5,0x80,0x7c]
100 @ CHECK: addw   r12, r6, #256           @ encoding: [0x06,0xf2,0x00,0x1c]
101 @ CHECK: adds.w r1, r2, #496            @ encoding: [0x12,0xf5,0xf8,0x71]
102 @ CHECK: add.w  r2, r2, #1              @ encoding: [0x02,0xf1,0x01,0x02]
103 @ CHECK: add.w  r0, r0, #32             @ encoding: [0x00,0xf1,0x20,0x00]
104 @ CHECK: adds   r2, #56                 @ encoding: [0x38,0x32]
105 @ CHECK: adds   r2, #56                 @ encoding: [0x38,0x32]
106 @ CHECK: add.w  r1, r7, #3419130827     @ encoding: [0x07,0xf1,0xcb,0x31]
107 @ CHECK: add.w  sp, sp, #33423360       @ encoding: [0x0d,0xf1,0xff,0x7d]
108
109 @ CHECK: subs.w r2, r2, #16             @ encoding: [0xb2,0xf1,0x10,0x02]
110 @ CHECK: subs.w r2, r2, #16             @ encoding: [0xb2,0xf1,0x10,0x02]
111 @ CHECK: subw   r2, r2, #16             @ encoding: [0xa2,0xf2,0x10,0x02]
112 @ CHECK: subw   r2, r2, #16             @ encoding: [0xa2,0xf2,0x10,0x02]
113 @ CHECK: subw   r2, r2, #16             @ encoding: [0xa2,0xf2,0x10,0x02]
114
115
116 @------------------------------------------------------------------------------
117 @ ADD (register)
118 @------------------------------------------------------------------------------
119         add r1, r2, r8
120         add r5, r9, r2, asr #32
121         adds r7, r3, r1, lsl #31
122         adds.w r0, r3, r6, lsr #25
123         add.w r4, r8, r1, ror #12
124         add r10, r8
125         add r10, r10, r8
126
127 @ CHECK: add.w  r1, r2, r8              @ encoding: [0x02,0xeb,0x08,0x01]
128 @ CHECK: add.w  r5, r9, r2, asr #32     @ encoding: [0x09,0xeb,0x22,0x05]
129 @ CHECK: adds.w r7, r3, r1, lsl #31     @ encoding: [0x13,0xeb,0xc1,0x77]
130 @ CHECK: adds.w r0, r3, r6, lsr #25     @ encoding: [0x13,0xeb,0x56,0x60]
131 @ CHECK: add.w  r4, r8, r1, ror #12     @ encoding: [0x08,0xeb,0x31,0x34]
132 @ CHECK: add    r10, r8                 @ encoding: [0xc2,0x44]
133 @ CHECK: add    r10, r8                 @ encoding: [0xc2,0x44]
134
135
136 @------------------------------------------------------------------------------
137 @ FIXME: ADR
138 @------------------------------------------------------------------------------
139
140         subw r11, pc, #3270
141         adr.w r2, #3
142         adr.w r11, #-826
143         adr.w r1, #-0x0
144
145 @ CHECK: subw  r11, pc, #3270          @ encoding: [0xaf,0xf6,0xc6,0x4b]
146 @ CHECK: adr.w r2, #3                  @ encoding: [0x0f,0xf2,0x03,0x02]
147 @ CHECK: adr.w r11, #-826              @ encoding: [0xaf,0xf2,0x3a,0x3b]
148 @ CHECK: adr.w r1, #-0                 @ encoding: [0xaf,0xf2,0x00,0x01]
149
150 @------------------------------------------------------------------------------
151 @ AND (immediate)
152 @------------------------------------------------------------------------------
153         and r2, r5, #0xff000
154         ands r3, r12, #0xf
155         and r1, #0xff
156         and r1, r1, #0xff
157         and r5, r4, #0xffffffff
158         ands r1, r9, #0xffffffff
159
160 @ CHECK: and    r2, r5, #1044480        @ encoding: [0x05,0xf4,0x7f,0x22]
161 @ CHECK: ands   r3, r12, #15            @ encoding: [0x1c,0xf0,0x0f,0x03]
162 @ CHECK: and    r1, r1, #255            @ encoding: [0x01,0xf0,0xff,0x01]
163 @ CHECK: and    r1, r1, #255            @ encoding: [0x01,0xf0,0xff,0x01]
164 @ CHECK: and    r5, r4, #4294967295     @ encoding: [0x04,0xf0,0xff,0x35]
165 @ CHECK: ands   r1, r9, #4294967295     @ encoding: [0x19,0xf0,0xff,0x31]
166
167 @------------------------------------------------------------------------------
168 @ AND (register)
169 @------------------------------------------------------------------------------
170         and r4, r9, r8
171         and r1, r4, r8, asr #3
172         ands r2, r1, r7, lsl #1
173         ands.w r4, r5, r2, lsr #20
174         and.w r9, r12, r1, ror #17
175
176 @ CHECK: and.w  r4, r9, r8              @ encoding: [0x09,0xea,0x08,0x04]
177 @ CHECK: and.w  r1, r4, r8, asr #3      @ encoding: [0x04,0xea,0xe8,0x01]
178 @ CHECK: ands.w r2, r1, r7, lsl #1      @ encoding: [0x11,0xea,0x47,0x02]
179 @ CHECK: ands.w r4, r5, r2, lsr #20     @ encoding: [0x15,0xea,0x12,0x54]
180 @ CHECK: and.w  r9, r12, r1, ror #17    @ encoding: [0x0c,0xea,0x71,0x49]
181
182 @------------------------------------------------------------------------------
183 @ ASR (immediate)
184 @------------------------------------------------------------------------------
185         asr r2, r3, #12
186         asrs r8, r3, #32
187         asrs.w r2, r3, #1
188         asr r2, r3, #4
189         asrs r2, r12, #15
190
191         asr r3, #19
192         asrs r8, #2
193         asrs.w r7, #5
194         asr.w r12, #21
195
196 @ CHECK: asr.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x23,0x32]
197 @ CHECK: asrs.w r8, r3, #32             @ encoding: [0x5f,0xea,0x23,0x08]
198 @ CHECK: asrs.w r2, r3, #1              @ encoding: [0x5f,0xea,0x63,0x02]
199 @ CHECK: asr.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x23,0x12]
200 @ CHECK: asrs.w r2, r12, #15            @ encoding: [0x5f,0xea,0xec,0x32]
201
202 @ CHECK: asr.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xe3,0x43]
203 @ CHECK: asrs.w r8, r8, #2              @ encoding: [0x5f,0xea,0xa8,0x08]
204 @ CHECK: asrs.w r7, r7, #5              @ encoding: [0x5f,0xea,0x67,0x17]
205 @ CHECK: asr.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x6c,0x5c]
206
207
208 @------------------------------------------------------------------------------
209 @ ASR (register)
210 @------------------------------------------------------------------------------
211         asr r3, r4, r2
212         asr.w r1, r2
213         asrs r3, r4, r8
214
215 @ CHECK: asr.w  r3, r4, r2              @ encoding: [0x44,0xfa,0x02,0xf3]
216 @ CHECK: asr.w  r1, r1, r2              @ encoding: [0x41,0xfa,0x02,0xf1]
217 @ CHECK: asrs.w r3, r4, r8              @ encoding: [0x54,0xfa,0x08,0xf3]
218
219
220 @------------------------------------------------------------------------------
221 @ B
222 @------------------------------------------------------------------------------
223         b.w   _bar
224         beq.w   _bar
225         it eq
226         beq.w _bar
227         bmi.w   #-183396
228
229 @ CHECK: b.w    _bar                    @ encoding: [A,0xf0'A',A,0xb8'A']
230           @   fixup A - offset: 0, value: _bar, kind: fixup_t2_uncondbranch
231 @ CHECK: beq.w  _bar                    @ encoding: [A,0xf0'A',A,0x80'A']
232           @   fixup A - offset: 0, value: _bar, kind: fixup_t2_condbranch
233 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
234 @ CHECK: beq.w  _bar                    @ encoding: [A,0xf0'A',A,0xb8'A']
235           @   fixup A - offset: 0, value: _bar, kind: fixup_t2_uncondbranch
236 @ CHECK: bmi.w   #-183396                @ encoding: [0x13,0xf5,0xce,0xa9]
237
238
239 @------------------------------------------------------------------------------
240 @ BFC
241 @------------------------------------------------------------------------------
242         bfc r5, #3, #17
243         it lo
244         bfccc r5, #3, #17
245
246 @ CHECK: bfc    r5, #3, #17             @ encoding: [0x6f,0xf3,0xd3,0x05]
247 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
248 @ CHECK: bfclo  r5, #3, #17             @ encoding: [0x6f,0xf3,0xd3,0x05]
249
250
251 @------------------------------------------------------------------------------
252 @ BFI
253 @------------------------------------------------------------------------------
254         bfi r5, r2, #3, #17
255         it ne
256         bfine r5, r2, #3, #17
257
258 @ CHECK: bfi    r5, r2, #3, #17         @ encoding: [0x62,0xf3,0xd3,0x05]
259 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
260 @ CHECK: bfine  r5, r2, #3, #17         @ encoding: [0x62,0xf3,0xd3,0x05]
261
262
263 @------------------------------------------------------------------------------
264 @ BIC
265 @------------------------------------------------------------------------------
266         bic r10, r1, #0xf
267         bic r5, r2, #0xffffffff
268         bics r11, r10, #0xffffffff
269         bic r12, r3, r6
270         bic r11, r2, r6, lsl #12
271         bic r8, r4, r1, lsr #11
272         bic r7, r5, r7, lsr #15
273         bic r6, r7, r9, asr #32
274         bic r5, r6, r8, ror #1
275
276         @ destination register is optional
277         bic r1, #0xf
278         bic r1, r1
279         bic r4, r2, lsl #31
280         bic r6, r3, lsr #12
281         bic r7, r4, lsr #7
282         bic r8, r5, asr #15
283         bic r12, r6, ror #29
284
285 @ CHECK: bic    r10, r1, #15            @ encoding: [0x21,0xf0,0x0f,0x0a]
286 @ CHECK: bic    r5, r2, #4294967295     @ encoding: [0x22,0xf0,0xff,0x35]
287 @ CHECK: bics   r11, r10, #4294967295   @ encoding: [0x3a,0xf0,0xff,0x3b]
288 @ CHECK: bic.w  r12, r3, r6             @ encoding: [0x23,0xea,0x06,0x0c]
289 @ CHECK: bic.w  r11, r2, r6, lsl #12    @ encoding: [0x22,0xea,0x06,0x3b]
290 @ CHECK: bic.w  r8, r4, r1, lsr #11     @ encoding: [0x24,0xea,0xd1,0x28]
291 @ CHECK: bic.w  r7, r5, r7, lsr #15     @ encoding: [0x25,0xea,0xd7,0x37]
292 @ CHECK: bic.w  r6, r7, r9, asr #32     @ encoding: [0x27,0xea,0x29,0x06]
293 @ CHECK: bic.w  r5, r6, r8, ror #1      @ encoding: [0x26,0xea,0x78,0x05]
294
295 @ CHECK: bic    r1, r1, #15             @ encoding: [0x21,0xf0,0x0f,0x01]
296 @ CHECK: bic.w  r1, r1, r1              @ encoding: [0x21,0xea,0x01,0x01]
297 @ CHECK: bic.w  r4, r4, r2, lsl #31     @ encoding: [0x24,0xea,0xc2,0x74]
298 @ CHECK: bic.w  r6, r6, r3, lsr #12     @ encoding: [0x26,0xea,0x13,0x36]
299 @ CHECK: bic.w  r7, r7, r4, lsr #7      @ encoding: [0x27,0xea,0xd4,0x17]
300 @ CHECK: bic.w  r8, r8, r5, asr #15     @ encoding: [0x28,0xea,0xe5,0x38]
301 @ CHECK: bic.w  r12, r12, r6, ror #29   @ encoding: [0x2c,0xea,0x76,0x7c]
302
303 @------------------------------------------------------------------------------
304 @ BKPT
305 @------------------------------------------------------------------------------
306         it pl
307         bkpt #234
308
309 @ CHECK: it pl                      @ encoding: [0x58,0xbf]
310 @ CHECK: bkpt #234                    @ encoding: [0xea,0xbe]
311
312 @------------------------------------------------------------------------------
313 @ BXJ
314 @------------------------------------------------------------------------------
315         bxj r5
316         it ne
317         bxjne r7
318
319 @ CHECK: bxj    r5                      @ encoding: [0xc5,0xf3,0x00,0x8f]
320 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
321 @ CHECK: bxjne  r7                      @ encoding: [0xc7,0xf3,0x00,0x8f]
322
323
324 @------------------------------------------------------------------------------
325 @ CBZ/CBNZ
326 @------------------------------------------------------------------------------
327         cbnz    r7, #6
328         cbnz    r7, #12
329         cbz   r6, _bar
330         cbnz   r6, _bar
331
332 @ CHECK: cbnz    r7, #6                  @ encoding: [0x1f,0xb9]
333 @ CHECK: cbnz    r7, #12                 @ encoding: [0x37,0xb9]
334 @ CHECK: cbz    r6, _bar                @ encoding: [0x06'A',0xb1'A']
335            @   fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_cb
336 @ CHECK: cbnz   r6, _bar                @ encoding: [0x06'A',0xb9'A']
337            @   fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_cb
338
339
340 @------------------------------------------------------------------------------
341 @ CDP/CDP2
342 @------------------------------------------------------------------------------
343   cdp  p7, #1, c1, c1, c1, #4
344   cdp2  p7, #1, c1, c1, c1, #4
345
346 @ CHECK: cdp    p7, #1, c1, c1, c1, #4  @ encoding: [0x11,0xee,0x81,0x17]
347 @ CHECK: cdp2   p7, #1, c1, c1, c1, #4  @ encoding: [0x11,0xfe,0x81,0x17]
348
349
350 @------------------------------------------------------------------------------
351 @ CLREX
352 @------------------------------------------------------------------------------
353         clrex
354         it ne
355         clrexne
356
357 @ CHECK: clrex                           @ encoding: [0xbf,0xf3,0x2f,0x8f]
358 @ CHECK: it     ne                       @ encoding: [0x18,0xbf]
359 @ CHECK: clrexne                         @ encoding: [0xbf,0xf3,0x2f,0x8f]
360
361
362 @------------------------------------------------------------------------------
363 @ CLZ
364 @------------------------------------------------------------------------------
365         clz r1, r2
366         it eq
367         clzeq r1, r2
368
369 @ CHECK: clz    r1, r2                  @ encoding: [0xb2,0xfa,0x82,0xf1]
370 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
371 @ CHECK: clzeq  r1, r2                  @ encoding: [0xb2,0xfa,0x82,0xf1]
372
373
374 @------------------------------------------------------------------------------
375 @ CMN
376 @------------------------------------------------------------------------------
377         cmn r1, #0xf
378         cmn r8, r6
379         cmn r1, r6, lsl #10
380         cmn r1, r6, lsr #10
381         cmn sp, r6, lsr #10
382         cmn r1, r6, asr #10
383         cmn r1, r6, ror #10
384
385 @ CHECK: cmn.w  r1, #15                 @ encoding: [0x11,0xf1,0x0f,0x0f]
386 @ CHECK: cmn.w  r8, r6                  @ encoding: [0x18,0xeb,0x06,0x0f]
387 @ CHECK: cmn.w  r1, r6, lsl #10         @ encoding: [0x11,0xeb,0x86,0x2f]
388 @ CHECK: cmn.w  r1, r6, lsr #10         @ encoding: [0x11,0xeb,0x96,0x2f]
389 @ CHECK: cmn.w  sp, r6, lsr #10         @ encoding: [0x1d,0xeb,0x96,0x2f]
390 @ CHECK: cmn.w  r1, r6, asr #10         @ encoding: [0x11,0xeb,0xa6,0x2f]
391 @ CHECK: cmn.w  r1, r6, ror #10         @ encoding: [0x11,0xeb,0xb6,0x2f]
392
393
394 @------------------------------------------------------------------------------
395 @ CMP
396 @------------------------------------------------------------------------------
397         cmp r5, #0xff00
398         cmp.w r4, r12
399         cmp r9, r6, lsl #12
400         cmp r3, r7, lsr #31
401         cmp sp, r6, lsr #1
402         cmp r2, r5, asr #24
403         cmp r1, r4, ror #15
404         cmp r2, #-2
405         cmp r9, #1
406
407 @ CHECK: cmp.w  r5, #65280              @ encoding: [0xb5,0xf5,0x7f,0x4f]
408 @ CHECK: cmp.w  r4, r12                 @ encoding: [0xb4,0xeb,0x0c,0x0f]
409 @ CHECK: cmp.w  r9, r6, lsl #12         @ encoding: [0xb9,0xeb,0x06,0x3f]
410 @ CHECK: cmp.w  r3, r7, lsr #31         @ encoding: [0xb3,0xeb,0xd7,0x7f]
411 @ CHECK: cmp.w  sp, r6, lsr #1          @ encoding: [0xbd,0xeb,0x56,0x0f]
412 @ CHECK: cmp.w  r2, r5, asr #24         @ encoding: [0xb2,0xeb,0x25,0x6f]
413 @ CHECK: cmp.w  r1, r4, ror #15         @ encoding: [0xb1,0xeb,0xf4,0x3f]
414 @ CHECK: cmn.w  r2, #2                  @ encoding: [0x12,0xf1,0x02,0x0f]
415 @ CHECK: cmp.w  r9, #1                  @ encoding: [0xb9,0xf1,0x01,0x0f]
416
417 @------------------------------------------------------------------------------
418 @ CPS
419 @------------------------------------------------------------------------------
420
421         cpsie f
422         cpsid a
423         cpsie.w f
424         cpsid.w a
425         cpsie i, #3
426         cpsie.w i, #3
427         cpsid f, #9
428         cpsid.w f, #9
429         cps #0
430         cps.w #0
431
432 @ CHECK: cpsie f                        @ encoding: [0x61,0xb6]
433 @ CHECK: cpsid a                        @ encoding: [0x74,0xb6]
434 @ CHECK: cpsie.w f                      @ encoding: [0xaf,0xf3,0x20,0x84]
435 @ CHECK: cpsid.w a                      @ encoding: [0xaf,0xf3,0x80,0x86]
436 @ CHECK: cpsie i, #3                    @ encoding: [0xaf,0xf3,0x43,0x85]
437 @ CHECK: cpsie i, #3                    @ encoding: [0xaf,0xf3,0x43,0x85]
438 @ CHECK: cpsid f, #9                    @ encoding: [0xaf,0xf3,0x29,0x87]
439 @ CHECK: cpsid f, #9                    @ encoding: [0xaf,0xf3,0x29,0x87]
440 @ CHECK: cps   #0                       @ encoding: [0xaf,0xf3,0x00,0x81]
441 @ CHECK: cps   #0                       @ encoding: [0xaf,0xf3,0x00,0x81]
442
443 @------------------------------------------------------------------------------
444 @ DBG
445 @------------------------------------------------------------------------------
446         dbg #5
447         dbg #0
448         dbg #15
449
450 @ CHECK: dbg    #5                      @ encoding: [0xaf,0xf3,0xf5,0x80]
451 @ CHECK: dbg    #0                      @ encoding: [0xaf,0xf3,0xf0,0x80]
452 @ CHECK: dbg    #15                     @ encoding: [0xaf,0xf3,0xff,0x80]
453
454
455 @------------------------------------------------------------------------------
456 @ DMB
457 @------------------------------------------------------------------------------
458         dmb #0xf
459         dmb #0xe
460         dmb #0xd
461         dmb #0xc
462         dmb #0xb
463         dmb #0xa
464         dmb #0x9
465         dmb #0x8
466         dmb #0x7
467         dmb #0x6
468         dmb #0x5
469         dmb #0x4
470         dmb #0x3
471         dmb #0x2
472         dmb #0x1
473         dmb #0x0
474
475         dmb sy
476         dmb st
477         dmb sh
478         dmb ish
479         dmb shst
480         dmb ishst
481         dmb un
482         dmb nsh
483         dmb unst
484         dmb nshst
485         dmb osh
486         dmb oshst
487         dmb
488
489 @ CHECK: dmb    sy                      @ encoding: [0xbf,0xf3,0x5f,0x8f]
490 @ CHECK: dmb    st                      @ encoding: [0xbf,0xf3,0x5e,0x8f]
491 @ CHECK: dmb    #0xd                    @ encoding: [0xbf,0xf3,0x5d,0x8f]
492 @ CHECK: dmb    #0xc                    @ encoding: [0xbf,0xf3,0x5c,0x8f]
493 @ CHECK: dmb    ish                     @ encoding: [0xbf,0xf3,0x5b,0x8f]
494 @ CHECK: dmb    ishst                   @ encoding: [0xbf,0xf3,0x5a,0x8f]
495 @ CHECK: dmb    #0x9                    @ encoding: [0xbf,0xf3,0x59,0x8f]
496 @ CHECK: dmb    #0x8                    @ encoding: [0xbf,0xf3,0x58,0x8f]
497 @ CHECK: dmb    nsh                     @ encoding: [0xbf,0xf3,0x57,0x8f]
498 @ CHECK: dmb    nshst                   @ encoding: [0xbf,0xf3,0x56,0x8f]
499 @ CHECK: dmb    #0x5                    @ encoding: [0xbf,0xf3,0x55,0x8f]
500 @ CHECK: dmb    #0x4                    @ encoding: [0xbf,0xf3,0x54,0x8f]
501 @ CHECK: dmb    osh                     @ encoding: [0xbf,0xf3,0x53,0x8f]
502 @ CHECK: dmb    oshst                   @ encoding: [0xbf,0xf3,0x52,0x8f]
503 @ CHECK: dmb    #0x1                    @ encoding: [0xbf,0xf3,0x51,0x8f]
504 @ CHECK: dmb    #0x0                    @ encoding: [0xbf,0xf3,0x50,0x8f]
505
506 @ CHECK: dmb    sy                      @ encoding: [0xbf,0xf3,0x5f,0x8f]
507 @ CHECK: dmb    st                      @ encoding: [0xbf,0xf3,0x5e,0x8f]
508 @ CHECK: dmb    ish                     @ encoding: [0xbf,0xf3,0x5b,0x8f]
509 @ CHECK: dmb    ish                     @ encoding: [0xbf,0xf3,0x5b,0x8f]
510 @ CHECK: dmb    ishst                   @ encoding: [0xbf,0xf3,0x5a,0x8f]
511 @ CHECK: dmb    ishst                   @ encoding: [0xbf,0xf3,0x5a,0x8f]
512 @ CHECK: dmb    nsh                     @ encoding: [0xbf,0xf3,0x57,0x8f]
513 @ CHECK: dmb    nsh                     @ encoding: [0xbf,0xf3,0x57,0x8f]
514 @ CHECK: dmb    nshst                   @ encoding: [0xbf,0xf3,0x56,0x8f]
515 @ CHECK: dmb    nshst                   @ encoding: [0xbf,0xf3,0x56,0x8f]
516 @ CHECK: dmb    osh                     @ encoding: [0xbf,0xf3,0x53,0x8f]
517 @ CHECK: dmb    oshst                   @ encoding: [0xbf,0xf3,0x52,0x8f]
518 @ CHECK: dmb    sy                      @ encoding: [0xbf,0xf3,0x5f,0x8f]
519
520
521 @------------------------------------------------------------------------------
522 @ DSB
523 @------------------------------------------------------------------------------
524         dsb #0xf
525         dsb #0xe
526         dsb #0xd
527         dsb #0xc
528         dsb #0xb
529         dsb #0xa
530         dsb #0x9
531         dsb #0x8
532         dsb #0x7
533         dsb #0x6
534         dsb #0x5
535         dsb #0x4
536         dsb #0x3
537         dsb #0x2
538         dsb #0x1
539         dsb #0x0
540
541         dsb sy
542         dsb st
543         dsb sh
544         dsb ish
545         dsb shst
546         dsb ishst
547         dsb un
548         dsb nsh
549         dsb unst
550         dsb nshst
551         dsb osh
552         dsb oshst
553         dsb
554
555 @ CHECK: dsb    sy                      @ encoding: [0xbf,0xf3,0x4f,0x8f]
556 @ CHECK: dsb    st                      @ encoding: [0xbf,0xf3,0x4e,0x8f]
557 @ CHECK: dsb    #0xd                    @ encoding: [0xbf,0xf3,0x4d,0x8f]
558 @ CHECK: dsb    #0xc                    @ encoding: [0xbf,0xf3,0x4c,0x8f]
559 @ CHECK: dsb    ish                     @ encoding: [0xbf,0xf3,0x4b,0x8f]
560 @ CHECK: dsb    ishst                   @ encoding: [0xbf,0xf3,0x4a,0x8f]
561 @ CHECK: dsb    #0x9                    @ encoding: [0xbf,0xf3,0x49,0x8f]
562 @ CHECK: dsb    #0x8                    @ encoding: [0xbf,0xf3,0x48,0x8f]
563 @ CHECK: dsb    nsh                     @ encoding: [0xbf,0xf3,0x47,0x8f]
564 @ CHECK: dsb    nshst                   @ encoding: [0xbf,0xf3,0x46,0x8f]
565 @ CHECK: dsb    #0x5                    @ encoding: [0xbf,0xf3,0x45,0x8f]
566 @ CHECK: dsb    #0x4                    @ encoding: [0xbf,0xf3,0x44,0x8f]
567 @ CHECK: dsb    osh                     @ encoding: [0xbf,0xf3,0x43,0x8f]
568 @ CHECK: dsb    oshst                   @ encoding: [0xbf,0xf3,0x42,0x8f]
569 @ CHECK: dsb    #0x1                    @ encoding: [0xbf,0xf3,0x41,0x8f]
570 @ CHECK: dsb    #0x0                    @ encoding: [0xbf,0xf3,0x40,0x8f]
571
572 @ CHECK: dsb    sy                      @ encoding: [0xbf,0xf3,0x4f,0x8f]
573 @ CHECK: dsb    st                      @ encoding: [0xbf,0xf3,0x4e,0x8f]
574 @ CHECK: dsb    ish                     @ encoding: [0xbf,0xf3,0x4b,0x8f]
575 @ CHECK: dsb    ish                     @ encoding: [0xbf,0xf3,0x4b,0x8f]
576 @ CHECK: dsb    ishst                   @ encoding: [0xbf,0xf3,0x4a,0x8f]
577 @ CHECK: dsb    ishst                   @ encoding: [0xbf,0xf3,0x4a,0x8f]
578 @ CHECK: dsb    nsh                     @ encoding: [0xbf,0xf3,0x47,0x8f]
579 @ CHECK: dsb    nsh                     @ encoding: [0xbf,0xf3,0x47,0x8f]
580 @ CHECK: dsb    nshst                   @ encoding: [0xbf,0xf3,0x46,0x8f]
581 @ CHECK: dsb    nshst                   @ encoding: [0xbf,0xf3,0x46,0x8f]
582 @ CHECK: dsb    osh                     @ encoding: [0xbf,0xf3,0x43,0x8f]
583 @ CHECK: dsb    oshst                   @ encoding: [0xbf,0xf3,0x42,0x8f]
584 @ CHECK: dsb    sy                      @ encoding: [0xbf,0xf3,0x4f,0x8f]
585
586
587 @------------------------------------------------------------------------------
588 @ EOR
589 @------------------------------------------------------------------------------
590         eor r4, r5, #0xf000
591         eor r4, r5, r6
592         eor r4, r5, r6, lsl #5
593         eor r4, r5, r6, lsr #5
594         eor r4, r5, r6, lsr #5
595         eor r4, r5, r6, asr #5
596         eor r4, r5, r6, ror #5
597
598 @ CHECK: eor    r4, r5, #61440          @ encoding: [0x85,0xf4,0x70,0x44]
599 @ CHECK: eor.w  r4, r5, r6              @ encoding: [0x85,0xea,0x06,0x04]
600 @ CHECK: eor.w  r4, r5, r6, lsl #5      @ encoding: [0x85,0xea,0x46,0x14]
601 @ CHECK: eor.w  r4, r5, r6, lsr #5      @ encoding: [0x85,0xea,0x56,0x14]
602 @ CHECK: eor.w  r4, r5, r6, lsr #5      @ encoding: [0x85,0xea,0x56,0x14]
603 @ CHECK: eor.w  r4, r5, r6, asr #5      @ encoding: [0x85,0xea,0x66,0x14]
604 @ CHECK: eor.w  r4, r5, r6, ror #5      @ encoding: [0x85,0xea,0x76,0x14]
605
606
607 @------------------------------------------------------------------------------
608 @ ISB
609 @------------------------------------------------------------------------------
610         isb sy
611         isb
612         isb #15
613         isb #1
614
615 @ CHECK: isb    sy                      @ encoding: [0xbf,0xf3,0x6f,0x8f]
616 @ CHECK: isb    sy                      @ encoding: [0xbf,0xf3,0x6f,0x8f]
617 @ CHECK: isb    sy                      @ encoding: [0xbf,0xf3,0x6f,0x8f]
618 @ CHECK: isb    #0x1                    @ encoding: [0xbf,0xf3,0x61,0x8f]
619
620
621 @------------------------------------------------------------------------------
622 @ IT
623 @------------------------------------------------------------------------------
624 @ Test encodings of a few full IT blocks, not just the IT instruction
625
626         iteet eq
627         addeq r0, r1, r2
628         nopne
629         subne r5, r6, r7
630         addeq r1, r2, #4
631
632 @ CHECK: iteet  eq                      @ encoding: [0x0d,0xbf]
633 @ CHECK: addeq  r0, r1, r2              @ encoding: [0x88,0x18]
634 @ CHECK: nopne                          @ encoding: [0x00,0xbf]
635 @ CHECK: subne  r5, r6, r7              @ encoding: [0xf5,0x1b]
636 @ CHECK: addeq  r1, r2, #4              @ encoding: [0x11,0x1d]
637
638 @ Should also work for UPPER CASE condition codes.
639
640         ITEET EQ
641         ADDEQ R0, R1, R2
642         NOPNE
643         SUBNE R5, R6, R7
644         ADDEQ R1, R2, #4
645
646 @ CHECK: iteet  eq                      @ encoding: [0x0d,0xbf]
647 @ CHECK: addeq  r0, r1, r2              @ encoding: [0x88,0x18]
648 @ CHECK: nopne                          @ encoding: [0x00,0xbf]
649 @ CHECK: subne  r5, r6, r7              @ encoding: [0xf5,0x1b]
650 @ CHECK: addeq  r1, r2, #4              @ encoding: [0x11,0x1d]
651
652 @------------------------------------------------------------------------------
653 @ LDC{L}/LDC2{L}
654 @------------------------------------------------------------------------------
655         ldc2 p0, c8, [r1, #4]
656         ldc2 p1, c7, [r2]
657         ldc2 p2, c6, [r3, #-224]
658         ldc2 p3, c5, [r4, #-120]!
659         ldc2 p4, c4, [r5], #16
660         ldc2 p5, c3, [r6], #-72
661         ldc2l p6, c2, [r7, #4]
662         ldc2l p7, c1, [r8]
663         ldc2l p8, c0, [r9, #-224]
664         ldc2l p9, c1, [r10, #-120]!
665         ldc2l p10, c2, [r11], #16
666         ldc2l p11, c3, [r12], #-72
667
668         ldc p12, c4, [r0, #4]
669         ldc p13, c5, [r1]
670         ldc p14, c6, [r2, #-224]
671         ldc p15, c7, [r3, #-120]!
672         ldc p5, c8, [r4], #16
673         ldc p4, c9, [r5], #-72
674         ldcl p3, c10, [r6, #4]
675         ldcl p2, c11, [r7]
676         ldcl p1, c12, [r8, #-224]
677         ldcl p0, c13, [r9, #-120]!
678         ldcl p6, c14, [r10], #16
679         ldcl p7, c15, [r11], #-72
680
681         ldc2 p2, c8, [r1], { 25 }
682
683 @ CHECK: ldc2   p0, c8, [r1, #4]        @ encoding: [0x91,0xfd,0x01,0x80]
684 @ CHECK: ldc2   p1, c7, [r2]            @ encoding: [0x92,0xfd,0x00,0x71]
685 @ CHECK: ldc2   p2, c6, [r3, #-224]     @ encoding: [0x13,0xfd,0x38,0x62]
686 @ CHECK: ldc2   p3, c5, [r4, #-120]!    @ encoding: [0x34,0xfd,0x1e,0x53]
687 @ CHECK: ldc2   p4, c4, [r5], #16       @ encoding: [0xb5,0xfc,0x04,0x44]
688 @ CHECK: ldc2   p5, c3, [r6], #-72      @ encoding: [0x36,0xfc,0x12,0x35]
689 @ CHECK: ldc2l  p6, c2, [r7, #4]        @ encoding: [0xd7,0xfd,0x01,0x26]
690 @ CHECK: ldc2l  p7, c1, [r8]            @ encoding: [0xd8,0xfd,0x00,0x17]
691 @ CHECK: ldc2l  p8, c0, [r9, #-224]     @ encoding: [0x59,0xfd,0x38,0x08]
692 @ CHECK: ldc2l  p9, c1, [r10, #-120]!   @ encoding: [0x7a,0xfd,0x1e,0x19]
693 @ CHECK: ldc2l  p10, c2, [r11], #16     @ encoding: [0xfb,0xfc,0x04,0x2a]
694 @ CHECK: ldc2l  p11, c3, [r12], #-72    @ encoding: [0x7c,0xfc,0x12,0x3b]
695
696 @ CHECK: ldc    p12, c4, [r0, #4]       @ encoding: [0x90,0xed,0x01,0x4c]
697 @ CHECK: ldc    p13, c5, [r1]           @ encoding: [0x91,0xed,0x00,0x5d]
698 @ CHECK: ldc    p14, c6, [r2, #-224]    @ encoding: [0x12,0xed,0x38,0x6e]
699 @ CHECK: ldc    p15, c7, [r3, #-120]!   @ encoding: [0x33,0xed,0x1e,0x7f]
700 @ CHECK: ldc    p5, c8, [r4], #16       @ encoding: [0xb4,0xec,0x04,0x85]
701 @ CHECK: ldc    p4, c9, [r5], #-72      @ encoding: [0x35,0xec,0x12,0x94]
702 @ CHECK: ldcl   p3, c10, [r6, #4]       @ encoding: [0xd6,0xed,0x01,0xa3]
703 @ CHECK: ldcl   p2, c11, [r7]           @ encoding: [0xd7,0xed,0x00,0xb2]
704 @ CHECK: ldcl   p1, c12, [r8, #-224]    @ encoding: [0x58,0xed,0x38,0xc1]
705 @ CHECK: ldcl   p0, c13, [r9, #-120]!   @ encoding: [0x79,0xed,0x1e,0xd0]
706 @ CHECK: ldcl   p6, c14, [r10], #16     @ encoding: [0xfa,0xec,0x04,0xe6]
707 @ CHECK: ldcl   p7, c15, [r11], #-72    @ encoding: [0x7b,0xec,0x12,0xf7]
708
709 @ CHECK: ldc2   p2, c8, [r1], {25}      @ encoding: [0x91,0xfc,0x19,0x82]
710
711
712 @------------------------------------------------------------------------------
713 @ LDMIA
714 @------------------------------------------------------------------------------
715         ldmia.w r4, {r4, r5, r8, r9}
716         ldmia.w r4, {r5, r6}
717         ldmia.w r5!, {r3, r8}
718         ldm.w r4, {r4, r5, r8, r9}
719         ldm.w r4, {r5, r6}
720         ldm.w r5!, {r3, r8}
721         ldm.w r5!, {r1, r2}
722         ldm.w r2, {r1, r2}
723
724         ldmia r4, {r4, r5, r8, r9}
725         ldmia r4, {r5, r6}
726         ldmia r5!, {r3, r8}
727         ldm r4, {r4, r5, r8, r9}
728         ldm r4, {r5, r6}
729         ldm r5!, {r3, r8}
730         ldmfd r5!, {r3, r8}
731         ldmia sp!, {r4-r11, pc}
732
733 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
734 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
735 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
736 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
737 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
738 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
739 @ CHECK: ldm.w  r5!, {r1, r2}           @ encoding: [0xb5,0xe8,0x06,0x00]
740 @ CHECK: ldm.w  r2, {r1, r2}            @ encoding: [0x92,0xe8,0x06,0x00]
741
742 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
743 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
744 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
745 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
746 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
747 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
748 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
749 @ CHECK: pop.w  {r4, r5, r6, r7, r8, r9, r10, r11, pc} @ encoding: [0xbd,0xe8,0xf0,0x8f]
750
751
752 @------------------------------------------------------------------------------
753 @ LDMDB
754 @------------------------------------------------------------------------------
755         ldmdb r4, {r4, r5, r8, r9}
756         ldmdb r4, {r5, r6}
757         ldmdb r5!, {r3, r8}
758         ldmea r5!, {r3, r8}
759         ldmdb.w r4, {r5, r6}
760         ldmdb.w r5!, {r3, r8}
761
762 @ CHECK: ldmdb  r4, {r4, r5, r8, r9}    @ encoding: [0x14,0xe9,0x30,0x03]
763 @ CHECK: ldmdb  r4, {r5, r6}            @ encoding: [0x14,0xe9,0x60,0x00]
764 @ CHECK: ldmdb  r5!, {r3, r8}           @ encoding: [0x35,0xe9,0x08,0x01]
765 @ CHECK: ldmdb  r5!, {r3, r8}           @ encoding: [0x35,0xe9,0x08,0x01]
766 @ CHECK: ldmdb  r4, {r5, r6}            @ encoding: [0x14,0xe9,0x60,0x00]
767 @ CHECK: ldmdb  r5!, {r3, r8}           @ encoding: [0x35,0xe9,0x08,0x01]
768
769
770 @------------------------------------------------------------------------------
771 @ LDR(immediate)
772 @------------------------------------------------------------------------------
773         ldr r5, [r5, #-4]
774         ldr r5, [r6, #32]
775         ldr r5, [r6, #33]
776         ldr r5, [r6, #257]
777         ldr.w pc, [r7, #257]
778         ldr r2, [r4, #255]!
779         ldr r8, [sp, #4]!
780         ldr lr, [sp, #-4]!
781         ldr r2, [r4], #255
782         ldr r8, [sp], #4
783         ldr lr, [sp], #-4
784
785 @ CHECK: ldr    r5, [r5, #-4]           @ encoding: [0x55,0xf8,0x04,0x5c]
786 @ CHECK: ldr    r5, [r6, #32]           @ encoding: [0x35,0x6a]
787 @ CHECK: ldr.w  r5, [r6, #33]           @ encoding: [0xd6,0xf8,0x21,0x50]
788 @ CHECK: ldr.w  r5, [r6, #257]          @ encoding: [0xd6,0xf8,0x01,0x51]
789 @ CHECK: ldr.w  pc, [r7, #257]          @ encoding: [0xd7,0xf8,0x01,0xf1]
790 @ CHECK: ldr    r2, [r4, #255]!         @ encoding: [0x54,0xf8,0xff,0x2f]
791 @ CHECK: ldr    r8, [sp, #4]!           @ encoding: [0x5d,0xf8,0x04,0x8f]
792 @ CHECK: ldr    lr, [sp, #-4]!          @ encoding: [0x5d,0xf8,0x04,0xed]
793 @ CHECK: ldr    r2, [r4], #255          @ encoding: [0x54,0xf8,0xff,0x2b]
794 @ CHECK: ldr    r8, [sp], #4            @ encoding: [0x5d,0xf8,0x04,0x8b]
795 @ CHECK: ldr    lr, [sp], #-4           @ encoding: [0x5d,0xf8,0x04,0xe9]
796
797
798 @------------------------------------------------------------------------------
799 @ LDR(literal)
800 @------------------------------------------------------------------------------
801         ldr.w r5, _foo
802         ldr   lr, (_strcmp-4)
803
804 @ CHECK: ldr.w  r5, _foo                @ encoding: [0x5f'A',0xf8'A',A,0x50'A']
805 @ CHECK: @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
806 @ CHECK: ldr.w  lr, _strcmp-4           @ encoding: [0x5f'A',0xf8'A',A,0xe0'A']
807 @ CHECK: @   fixup A - offset: 0, value: _strcmp-4, kind: fixup_t2_ldst_pcrel_12
808
809         ldr r7, [pc, #8]
810         ldr.n r7, [pc, #8]
811         ldr.w r7, [pc, #8]
812         ldr r4, [pc, #1020]
813         ldr r3, [pc, #-1020]
814         ldr r6, [pc, #1024]
815         ldr r0, [pc, #-1024]
816         ldr r2, [pc, #4095]
817         ldr r1, [pc, #-4095]
818         ldr r8, [pc, #132]
819         ldr pc, [pc, #256]
820         ldr pc, [pc, #-400]
821
822 @ CHECK: ldr    r7, [pc, #8]            @ encoding: [0x02,0x4f]
823 @ CHECK: ldr    r7, [pc, #8]            @ encoding: [0x02,0x4f]
824 @ CHECK: ldr.w  r7, [pc, #8]            @ encoding: [0xdf,0xf8,0x08,0x70]
825 @ CHECK: ldr    r4, [pc, #1020]       @ encoding: [0xff,0x4c]
826 @ CHECK: ldr.w  r3, [pc, #-1020]        @ encoding: [0x5f,0xf8,0xfc,0x33]
827 @ CHECK: ldr.w  r6, [pc, #1024]       @ encoding: [0xdf,0xf8,0x00,0x64]
828 @ CHECK: ldr.w  r0, [pc, #-1024]      @ encoding: [0x5f,0xf8,0x00,0x04]
829 @ CHECK: ldr.w  r2, [pc, #4095]       @ encoding: [0xdf,0xf8,0xff,0x2f]
830 @ CHECK: ldr.w  r1, [pc, #-4095]      @ encoding: [0x5f,0xf8,0xff,0x1f]
831 @ CHECK: ldr.w  r8, [pc, #132]        @ encoding: [0xdf,0xf8,0x84,0x80]
832 @ CHECK: ldr.w  pc, [pc, #256]          @ encoding: [0xdf,0xf8,0x00,0xf1]
833 @ CHECK: ldr.w  pc, [pc, #-400]         @ encoding: [0x5f,0xf8,0x90,0xf1]
834
835         ldrb  r9, [pc, #-0]
836         ldrsb r11, [pc, #-0]
837         ldrh  r10, [pc, #-0]
838         ldrsh r1, [pc, #-0]
839         ldr   r5, [pc, #-0]
840
841 @ CHECK: ldrb.w r9, [pc, #-0]           @ encoding: [0x1f,0xf8,0x00,0x90]
842 @ CHECK: ldrsb.w        r11, [pc, #-0]        @ encoding: [0x1f,0xf9,0x00,0xb0]
843 @ CHECK: ldrh.w r10, [pc, #-0]          @ encoding: [0x3f,0xf8,0x00,0xa0]
844 @ CHECK: ldrsh.w        r1, [pc, #-0]         @ encoding: [0x3f,0xf9,0x00,0x10]
845 @ CHECK: ldr.w  r5, [pc, #-0]           @ encoding: [0x5f,0xf8,0x00,0x50]
846
847 @------------------------------------------------------------------------------
848 @ LDR(register)
849 @------------------------------------------------------------------------------
850         ldr r1, [r8, r1]
851         ldr.w r4, [r5, r2]
852         ldr r6, [r0, r2, lsl #3]
853         ldr r8, [r8, r2, lsl #2]
854         ldr r7, [sp, r2, lsl #1]
855         ldr r7, [sp, r2, lsl #0]
856
857 @ CHECK: ldr.w  r1, [r8, r1]            @ encoding: [0x58,0xf8,0x01,0x10]
858 @ CHECK: ldr.w  r4, [r5, r2]            @ encoding: [0x55,0xf8,0x02,0x40]
859 @ CHECK: ldr.w  r6, [r0, r2, lsl #3]    @ encoding: [0x50,0xf8,0x32,0x60]
860 @ CHECK: ldr.w  r8, [r8, r2, lsl #2]    @ encoding: [0x58,0xf8,0x22,0x80]
861 @ CHECK: ldr.w  r7, [sp, r2, lsl #1]    @ encoding: [0x5d,0xf8,0x12,0x70]
862 @ CHECK: ldr.w  r7, [sp, r2]            @ encoding: [0x5d,0xf8,0x02,0x70]
863
864
865 @------------------------------------------------------------------------------
866 @ LDRB(immediate)
867 @------------------------------------------------------------------------------
868         ldrb r5, [r5, #-4]
869         ldrb r5, [r6, #32]
870         ldrb r5, [r6, #33]
871         ldrb r5, [r6, #257]
872         ldrb.w lr, [r7, #257]
873         ldrb r5, [r8, #255]!
874         ldrb r2, [r5, #4]!
875         ldrb r1, [r4, #-4]!
876         ldrb lr, [r3], #255
877         ldrb r9, [r2], #4
878         ldrb r3, [sp], #-4
879
880 @ CHECK: ldrb   r5, [r5, #-4]           @ encoding: [0x15,0xf8,0x04,0x5c]
881 @ CHECK: ldrb.w r5, [r6, #32]           @ encoding: [0x96,0xf8,0x20,0x50]
882 @ CHECK: ldrb.w r5, [r6, #33]           @ encoding: [0x96,0xf8,0x21,0x50]
883 @ CHECK: ldrb.w r5, [r6, #257]          @ encoding: [0x96,0xf8,0x01,0x51]
884 @ CHECK: ldrb.w lr, [r7, #257]          @ encoding: [0x97,0xf8,0x01,0xe1]
885 @ CHECK: ldrb   r5, [r8, #255]!         @ encoding: [0x18,0xf8,0xff,0x5f]
886 @ CHECK: ldrb   r2, [r5, #4]!           @ encoding: [0x15,0xf8,0x04,0x2f]
887 @ CHECK: ldrb   r1, [r4, #-4]!          @ encoding: [0x14,0xf8,0x04,0x1d]
888 @ CHECK: ldrb   lr, [r3], #255          @ encoding: [0x13,0xf8,0xff,0xeb]
889 @ CHECK: ldrb   r9, [r2], #4            @ encoding: [0x12,0xf8,0x04,0x9b]
890 @ CHECK: ldrb   r3, [sp], #-4           @ encoding: [0x1d,0xf8,0x04,0x39]
891
892
893 @------------------------------------------------------------------------------
894 @ LDRB(register)
895 @------------------------------------------------------------------------------
896         ldrb r1, [r8, r1]
897         ldrb.w r4, [r5, r2]
898         ldrb r6, [r0, r2, lsl #3]
899         ldrb r8, [r8, r2, lsl #2]
900         ldrb r7, [sp, r2, lsl #1]
901         ldrb r7, [sp, r2, lsl #0]
902
903 @ CHECK: ldrb.w r1, [r8, r1]            @ encoding: [0x18,0xf8,0x01,0x10]
904 @ CHECK: ldrb.w r4, [r5, r2]            @ encoding: [0x15,0xf8,0x02,0x40]
905 @ CHECK: ldrb.w r6, [r0, r2, lsl #3]    @ encoding: [0x10,0xf8,0x32,0x60]
906 @ CHECK: ldrb.w r8, [r8, r2, lsl #2]    @ encoding: [0x18,0xf8,0x22,0x80]
907 @ CHECK: ldrb.w r7, [sp, r2, lsl #1]    @ encoding: [0x1d,0xf8,0x12,0x70]
908 @ CHECK: ldrb.w r7, [sp, r2]            @ encoding: [0x1d,0xf8,0x02,0x70]
909
910
911 @------------------------------------------------------------------------------
912 @ LDRBT
913 @------------------------------------------------------------------------------
914         ldrbt r1, [r2]
915         ldrbt r1, [r8, #0]
916         ldrbt r1, [r8, #3]
917         ldrbt r1, [r8, #255]
918
919 @ CHECK: ldrbt  r1, [r2]                @ encoding: [0x12,0xf8,0x00,0x1e]
920 @ CHECK: ldrbt  r1, [r8]                @ encoding: [0x18,0xf8,0x00,0x1e]
921 @ CHECK: ldrbt  r1, [r8, #3]            @ encoding: [0x18,0xf8,0x03,0x1e]
922 @ CHECK: ldrbt  r1, [r8, #255]          @ encoding: [0x18,0xf8,0xff,0x1e]
923
924
925 @------------------------------------------------------------------------------
926 @ LDRD
927 @------------------------------------------------------------------------------
928         ldrd r3, r5, [r6, #24]
929         ldrd r3, r5, [r6, #24]!
930         ldrd r3, r5, [r6], #4
931         ldrd r3, r5, [r6], #-8
932         ldrd r3, r5, [r6]
933         ldrd r8, r1, [r3, #0]
934         ldrd r0, r1, [r2, #-0]
935         ldrd r0, r1, [r2, #-0]!
936         ldrd r0, r1, [r2], #-0
937
938 @ CHECK: ldrd   r3, r5, [r6, #24]       @ encoding: [0xd6,0xe9,0x06,0x35]
939 @ CHECK: ldrd   r3, r5, [r6, #24]!      @ encoding: [0xf6,0xe9,0x06,0x35]
940 @ CHECK: ldrd   r3, r5, [r6], #4        @ encoding: [0xf6,0xe8,0x01,0x35]
941 @ CHECK: ldrd   r3, r5, [r6], #-8       @ encoding: [0x76,0xe8,0x02,0x35]
942 @ CHECK: ldrd   r3, r5, [r6]            @ encoding: [0xd6,0xe9,0x00,0x35]
943 @ CHECK: ldrd   r8, r1, [r3]            @ encoding: [0xd3,0xe9,0x00,0x81]
944 @ CHECK: ldrd   r0, r1, [r2, #-0]       @ encoding: [0x52,0xe9,0x00,0x01]
945 @ CHECK: ldrd   r0, r1, [r2, #-0]!      @ encoding: [0x72,0xe9,0x00,0x01]
946 @ CHECK: ldrd   r0, r1, [r2], #-0       @ encoding: [0x72,0xe8,0x00,0x01]
947
948
949 @------------------------------------------------------------------------------
950 @ FIXME: LDRD(literal)
951 @------------------------------------------------------------------------------
952
953
954 @------------------------------------------------------------------------------
955 @ LDREX/LDREXB/LDREXH/LDREXD
956 @------------------------------------------------------------------------------
957         ldrex r1, [r4]
958         ldrex r8, [r4, #0]
959         ldrex r2, [sp, #128]
960         ldrexb r5, [r7]
961         ldrexh r9, [r12]
962         ldrexd r9, r3, [r4]
963
964 @ CHECK: ldrex  r1, [r4]                @ encoding: [0x54,0xe8,0x00,0x1f]
965 @ CHECK: ldrex  r8, [r4]                @ encoding: [0x54,0xe8,0x00,0x8f]
966 @ CHECK: ldrex  r2, [sp, #128]          @ encoding: [0x5d,0xe8,0x20,0x2f]
967 @ CHECK: ldrexb r5, [r7]                @ encoding: [0xd7,0xe8,0x4f,0x5f]
968 @ CHECK: ldrexh r9, [r12]               @ encoding: [0xdc,0xe8,0x5f,0x9f]
969 @ CHECK: ldrexd r9, r3, [r4]            @ encoding: [0xd4,0xe8,0x7f,0x93]
970
971
972 @------------------------------------------------------------------------------
973 @ LDRH(immediate)
974 @------------------------------------------------------------------------------
975         ldrh r5, [r5, #-4]
976         ldrh r5, [r6, #32]
977         ldrh r5, [r6, #33]
978         ldrh r5, [r6, #257]
979         ldrh.w lr, [r7, #257]
980         ldrh r5, [r8, #255]!
981         ldrh r2, [r5, #4]!
982         ldrh r1, [r4, #-4]!
983         ldrh lr, [r3], #255
984         ldrh r9, [r2], #4
985         ldrh r3, [sp], #-4
986
987 @ CHECK: ldrh   r5, [r5, #-4]           @ encoding: [0x35,0xf8,0x04,0x5c]
988 @ CHECK: ldrh   r5, [r6, #32]           @ encoding: [0x35,0x8c]
989 @ CHECK: ldrh.w r5, [r6, #33]           @ encoding: [0xb6,0xf8,0x21,0x50]
990 @ CHECK: ldrh.w r5, [r6, #257]          @ encoding: [0xb6,0xf8,0x01,0x51]
991 @ CHECK: ldrh.w lr, [r7, #257]          @ encoding: [0xb7,0xf8,0x01,0xe1]
992 @ CHECK: ldrh   r5, [r8, #255]!         @ encoding: [0x38,0xf8,0xff,0x5f]
993 @ CHECK: ldrh   r2, [r5, #4]!           @ encoding: [0x35,0xf8,0x04,0x2f]
994 @ CHECK: ldrh   r1, [r4, #-4]!          @ encoding: [0x34,0xf8,0x04,0x1d]
995 @ CHECK: ldrh   lr, [r3], #255          @ encoding: [0x33,0xf8,0xff,0xeb]
996 @ CHECK: ldrh   r9, [r2], #4            @ encoding: [0x32,0xf8,0x04,0x9b]
997 @ CHECK: ldrh   r3, [sp], #-4           @ encoding: [0x3d,0xf8,0x04,0x39]
998
999
1000 @------------------------------------------------------------------------------
1001 @ LDRH(register)
1002 @------------------------------------------------------------------------------
1003         ldrh r1, [r8, r1]
1004         ldrh.w r4, [r5, r2]
1005         ldrh r6, [r0, r2, lsl #3]
1006         ldrh r8, [r8, r2, lsl #2]
1007         ldrh r7, [sp, r2, lsl #1]
1008         ldrh r7, [sp, r2, lsl #0]
1009
1010 @ CHECK: ldrh.w r1, [r8, r1]            @ encoding: [0x38,0xf8,0x01,0x10]
1011 @ CHECK: ldrh.w r4, [r5, r2]            @ encoding: [0x35,0xf8,0x02,0x40]
1012 @ CHECK: ldrh.w r6, [r0, r2, lsl #3]    @ encoding: [0x30,0xf8,0x32,0x60]
1013 @ CHECK: ldrh.w r8, [r8, r2, lsl #2]    @ encoding: [0x38,0xf8,0x22,0x80]
1014 @ CHECK: ldrh.w r7, [sp, r2, lsl #1]    @ encoding: [0x3d,0xf8,0x12,0x70]
1015 @ CHECK: ldrh.w r7, [sp, r2]            @ encoding: [0x3d,0xf8,0x02,0x70]
1016
1017
1018 @------------------------------------------------------------------------------
1019 @ LDRH(literal)
1020 @------------------------------------------------------------------------------
1021         ldrh r5, _bar
1022
1023 @ CHECK: ldrh.w r5, _bar                @ encoding: [0x3f'A',0xf8'A',A,0x50'A']
1024 @ CHECK:     @   fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12
1025
1026
1027 @------------------------------------------------------------------------------
1028 @ LDRHT
1029 @------------------------------------------------------------------------------
1030         ldrht r1, [r2]
1031         ldrht r1, [r8, #0]
1032         ldrht r1, [r8, #3]
1033         ldrht r1, [r8, #255]
1034
1035 @ CHECK: ldrht  r1, [r2]                @ encoding: [0x32,0xf8,0x00,0x1e]
1036 @ CHECK: ldrht  r1, [r8]                @ encoding: [0x38,0xf8,0x00,0x1e]
1037 @ CHECK: ldrht  r1, [r8, #3]            @ encoding: [0x38,0xf8,0x03,0x1e]
1038 @ CHECK: ldrht  r1, [r8, #255]          @ encoding: [0x38,0xf8,0xff,0x1e]
1039
1040
1041 @------------------------------------------------------------------------------
1042 @ LDRSB(immediate)
1043 @------------------------------------------------------------------------------
1044         ldrsb r5, [r5, #-4]
1045         ldrsb r5, [r6, #32]
1046         ldrsb r5, [r6, #33]
1047         ldrsb r5, [r6, #257]
1048         ldrsb.w lr, [r7, #257]
1049
1050 @ CHECK: ldrsb  r5, [r5, #-4]            @ encoding: [0x15,0xf9,0x04,0x5c]
1051 @ CHECK: ldrsb.w r5, [r6, #32]           @ encoding: [0x96,0xf9,0x20,0x50]
1052 @ CHECK: ldrsb.w r5, [r6, #33]           @ encoding: [0x96,0xf9,0x21,0x50]
1053 @ CHECK: ldrsb.w r5, [r6, #257]          @ encoding: [0x96,0xf9,0x01,0x51]
1054 @ CHECK: ldrsb.w lr, [r7, #257]          @ encoding: [0x97,0xf9,0x01,0xe1]
1055
1056
1057 @------------------------------------------------------------------------------
1058 @ LDRSB(register)
1059 @------------------------------------------------------------------------------
1060         ldrsb r1, [r8, r1]
1061         ldrsb.w r4, [r5, r2]
1062         ldrsb r6, [r0, r2, lsl #3]
1063         ldrsb r8, [r8, r2, lsl #2]
1064         ldrsb r7, [sp, r2, lsl #1]
1065         ldrsb r7, [sp, r2, lsl #0]
1066         ldrsb r5, [r8, #255]!
1067         ldrsb r2, [r5, #4]!
1068         ldrsb r1, [r4, #-4]!
1069         ldrsb lr, [r3], #255
1070         ldrsb r9, [r2], #4
1071         ldrsb r3, [sp], #-4
1072
1073 @ CHECK: ldrsb.w r1, [r8, r1]           @ encoding: [0x18,0xf9,0x01,0x10]
1074 @ CHECK: ldrsb.w r4, [r5, r2]           @ encoding: [0x15,0xf9,0x02,0x40]
1075 @ CHECK: ldrsb.w r6, [r0, r2, lsl #3]   @ encoding: [0x10,0xf9,0x32,0x60]
1076 @ CHECK: ldrsb.w r8, [r8, r2, lsl #2]   @ encoding: [0x18,0xf9,0x22,0x80]
1077 @ CHECK: ldrsb.w r7, [sp, r2, lsl #1]   @ encoding: [0x1d,0xf9,0x12,0x70]
1078 @ CHECK: ldrsb.w r7, [sp, r2]           @ encoding: [0x1d,0xf9,0x02,0x70]
1079 @ CHECK: ldrsb  r5, [r8, #255]!         @ encoding: [0x18,0xf9,0xff,0x5f]
1080 @ CHECK: ldrsb  r2, [r5, #4]!           @ encoding: [0x15,0xf9,0x04,0x2f]
1081 @ CHECK: ldrsb  r1, [r4, #-4]!          @ encoding: [0x14,0xf9,0x04,0x1d]
1082 @ CHECK: ldrsb  lr, [r3], #255          @ encoding: [0x13,0xf9,0xff,0xeb]
1083 @ CHECK: ldrsb  r9, [r2], #4            @ encoding: [0x12,0xf9,0x04,0x9b]
1084 @ CHECK: ldrsb  r3, [sp], #-4           @ encoding: [0x1d,0xf9,0x04,0x39]
1085
1086
1087 @------------------------------------------------------------------------------
1088 @ LDRSB(literal)
1089 @------------------------------------------------------------------------------
1090         ldrsb r5, _bar
1091
1092 @ CHECK: ldrsb.w r5, _bar               @ encoding: [0x1f'A',0xf9'A',A,0x50'A']
1093 @ CHECK:      @   fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12
1094
1095
1096 @------------------------------------------------------------------------------
1097 @ LDRSBT
1098 @------------------------------------------------------------------------------
1099         ldrsbt r1, [r2]
1100         ldrsbt r1, [r8, #0]
1101         ldrsbt r1, [r8, #3]
1102         ldrsbt r1, [r8, #255]
1103
1104 @ CHECK: ldrsbt r1, [r2]                @ encoding: [0x12,0xf9,0x00,0x1e]
1105 @ CHECK: ldrsbt r1, [r8]                @ encoding: [0x18,0xf9,0x00,0x1e]
1106 @ CHECK: ldrsbt r1, [r8, #3]            @ encoding: [0x18,0xf9,0x03,0x1e]
1107 @ CHECK: ldrsbt r1, [r8, #255]          @ encoding: [0x18,0xf9,0xff,0x1e]
1108
1109
1110 @------------------------------------------------------------------------------
1111 @ LDRSH(immediate)
1112 @------------------------------------------------------------------------------
1113         ldrsh r5, [r5, #-4]
1114         ldrsh r5, [r6, #32]
1115         ldrsh r5, [r6, #33]
1116         ldrsh r5, [r6, #257]
1117         ldrsh.w lr, [r7, #257]
1118
1119 @ CHECK: ldrsh  r5, [r5, #-4]           @ encoding: [0x35,0xf9,0x04,0x5c]
1120 @ CHECK: ldrsh.w r5, [r6, #32]          @ encoding: [0xb6,0xf9,0x20,0x50]
1121 @ CHECK: ldrsh.w r5, [r6, #33]          @ encoding: [0xb6,0xf9,0x21,0x50]
1122 @ CHECK: ldrsh.w r5, [r6, #257]         @ encoding: [0xb6,0xf9,0x01,0x51]
1123 @ CHECK: ldrsh.w lr, [r7, #257]         @ encoding: [0xb7,0xf9,0x01,0xe1]
1124
1125
1126 @------------------------------------------------------------------------------
1127 @ LDRSH(register)
1128 @------------------------------------------------------------------------------
1129         ldrsh r1, [r8, r1]
1130         ldrsh.w r4, [r5, r2]
1131         ldrsh r6, [r0, r2, lsl #3]
1132         ldrsh r8, [r8, r2, lsl #2]
1133         ldrsh r7, [sp, r2, lsl #1]
1134         ldrsh r7, [sp, r2, lsl #0]
1135         ldrsh r5, [r8, #255]!
1136         ldrsh r2, [r5, #4]!
1137         ldrsh r1, [r4, #-4]!
1138         ldrsh lr, [r3], #255
1139         ldrsh r9, [r2], #4
1140         ldrsh r3, [sp], #-4
1141
1142 @ CHECK: ldrsh.w r1, [r8, r1]           @ encoding: [0x38,0xf9,0x01,0x10]
1143 @ CHECK: ldrsh.w r4, [r5, r2]           @ encoding: [0x35,0xf9,0x02,0x40]
1144 @ CHECK: ldrsh.w r6, [r0, r2, lsl #3]   @ encoding: [0x30,0xf9,0x32,0x60]
1145 @ CHECK: ldrsh.w r8, [r8, r2, lsl #2]   @ encoding: [0x38,0xf9,0x22,0x80]
1146 @ CHECK: ldrsh.w r7, [sp, r2, lsl #1]   @ encoding: [0x3d,0xf9,0x12,0x70]
1147 @ CHECK: ldrsh.w r7, [sp, r2]           @ encoding: [0x3d,0xf9,0x02,0x70]
1148 @ CHECK: ldrsh  r5, [r8, #255]!         @ encoding: [0x38,0xf9,0xff,0x5f]
1149 @ CHECK: ldrsh  r2, [r5, #4]!           @ encoding: [0x35,0xf9,0x04,0x2f]
1150 @ CHECK: ldrsh  r1, [r4, #-4]!          @ encoding: [0x34,0xf9,0x04,0x1d]
1151 @ CHECK: ldrsh  lr, [r3], #255          @ encoding: [0x33,0xf9,0xff,0xeb]
1152 @ CHECK: ldrsh  r9, [r2], #4            @ encoding: [0x32,0xf9,0x04,0x9b]
1153 @ CHECK: ldrsh  r3, [sp], #-4           @ encoding: [0x3d,0xf9,0x04,0x39]
1154
1155
1156 @------------------------------------------------------------------------------
1157 @ LDRSH(literal)
1158 @------------------------------------------------------------------------------
1159         ldrsh r5, _bar
1160
1161 @ CHECK: ldrsh.w r5, _bar               @ encoding: [0x3f'A',0xf9'A',A,0x50'A']
1162 @ CHECK:      @   fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12
1163
1164 @ TEMPORARILY DISABLED:
1165 @        ldrsh.w r4, [pc, #1435]
1166 @      : ldrsh.w r4, [pc, #1435]               @ encoding: [0x3f,0xf9,0x9b,0x45]
1167
1168 @------------------------------------------------------------------------------
1169 @ LDRSHT
1170 @------------------------------------------------------------------------------
1171         ldrsht r1, [r2]
1172         ldrsht r1, [r8, #0]
1173         ldrsht r1, [r8, #3]
1174         ldrsht r1, [r8, #255]
1175
1176 @ CHECK: ldrsht r1, [r2]                @ encoding: [0x32,0xf9,0x00,0x1e]
1177 @ CHECK: ldrsht r1, [r8]                @ encoding: [0x38,0xf9,0x00,0x1e]
1178 @ CHECK: ldrsht r1, [r8, #3]            @ encoding: [0x38,0xf9,0x03,0x1e]
1179 @ CHECK: ldrsht r1, [r8, #255]          @ encoding: [0x38,0xf9,0xff,0x1e]
1180
1181
1182 @------------------------------------------------------------------------------
1183 @ LDRT
1184 @------------------------------------------------------------------------------
1185         ldrt r1, [r2]
1186         ldrt r2, [r6, #0]
1187         ldrt r3, [r7, #3]
1188         ldrt r4, [r9, #255]
1189
1190 @ CHECK: ldrt   r1, [r2]                @ encoding: [0x52,0xf8,0x00,0x1e]
1191 @ CHECK: ldrt   r2, [r6]                @ encoding: [0x56,0xf8,0x00,0x2e]
1192 @ CHECK: ldrt   r3, [r7, #3]            @ encoding: [0x57,0xf8,0x03,0x3e]
1193 @ CHECK: ldrt   r4, [r9, #255]          @ encoding: [0x59,0xf8,0xff,0x4e]
1194
1195
1196 @------------------------------------------------------------------------------
1197 @ LSL (immediate)
1198 @------------------------------------------------------------------------------
1199         lsl r2, r3, #12
1200         lsls r8, r3, #31
1201         lsls.w r2, r3, #1
1202         lsl r2, r3, #4
1203         lsls r2, r12, #15
1204
1205         lsl r3, #19
1206         lsls r8, #2
1207         lsls.w r7, #5
1208         lsl.w r12, #21
1209
1210 @ CHECK: lsl.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x03,0x32]
1211 @ CHECK: lsls.w r8, r3, #31             @ encoding: [0x5f,0xea,0xc3,0x78]
1212 @ CHECK: lsls.w r2, r3, #1              @ encoding: [0x5f,0xea,0x43,0x02]
1213 @ CHECK: lsl.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x03,0x12]
1214 @ CHECK: lsls.w r2, r12, #15            @ encoding: [0x5f,0xea,0xcc,0x32]
1215
1216 @ CHECK: lsl.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xc3,0x43]
1217 @ CHECK: lsls.w r8, r8, #2              @ encoding: [0x5f,0xea,0x88,0x08]
1218 @ CHECK: lsls.w r7, r7, #5              @ encoding: [0x5f,0xea,0x47,0x17]
1219 @ CHECK: lsl.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x4c,0x5c]
1220
1221
1222 @------------------------------------------------------------------------------
1223 @ LSL (register)
1224 @------------------------------------------------------------------------------
1225         lsl r3, r4, r2
1226         lsl.w r1, r2
1227         lsls r3, r4, r8
1228
1229 @ CHECK: lsl.w  r3, r4, r2              @ encoding: [0x04,0xfa,0x02,0xf3]
1230 @ CHECK: lsl.w  r1, r1, r2              @ encoding: [0x01,0xfa,0x02,0xf1]
1231 @ CHECK: lsls.w r3, r4, r8              @ encoding: [0x14,0xfa,0x08,0xf3]
1232
1233
1234 @------------------------------------------------------------------------------
1235 @ LSR (immediate)
1236 @------------------------------------------------------------------------------
1237         lsr r2, r3, #12
1238         lsrs r8, r3, #32
1239         lsrs.w r2, r3, #1
1240         lsr r2, r3, #4
1241         lsrs r2, r12, #15
1242
1243         lsr r3, #19
1244         lsrs r8, #2
1245         lsrs.w r7, #5
1246         lsr.w r12, #21
1247
1248 @ CHECK: lsr.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x13,0x32]
1249 @ CHECK: lsrs.w r8, r3, #32             @ encoding: [0x5f,0xea,0x13,0x08]
1250 @ CHECK: lsrs.w r2, r3, #1              @ encoding: [0x5f,0xea,0x53,0x02]
1251 @ CHECK: lsr.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x13,0x12]
1252 @ CHECK: lsrs.w r2, r12, #15            @ encoding: [0x5f,0xea,0xdc,0x32]
1253
1254 @ CHECK: lsr.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xd3,0x43]
1255 @ CHECK: lsrs.w r8, r8, #2              @ encoding: [0x5f,0xea,0x98,0x08]
1256 @ CHECK: lsrs.w r7, r7, #5              @ encoding: [0x5f,0xea,0x57,0x17]
1257 @ CHECK: lsr.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x5c,0x5c]
1258
1259
1260 @------------------------------------------------------------------------------
1261 @ LSR (register)
1262 @------------------------------------------------------------------------------
1263         lsr r3, r4, r2
1264         lsr.w r1, r2
1265         lsrs r3, r4, r8
1266
1267 @ CHECK: lsr.w  r3, r4, r2              @ encoding: [0x24,0xfa,0x02,0xf3]
1268 @ CHECK: lsr.w  r1, r1, r2              @ encoding: [0x21,0xfa,0x02,0xf1]
1269 @ CHECK: lsrs.w r3, r4, r8              @ encoding: [0x34,0xfa,0x08,0xf3]
1270
1271 @------------------------------------------------------------------------------
1272 @ MCR/MCR2
1273 @------------------------------------------------------------------------------
1274         mcr  p7, #1, r5, c1, c1, #4
1275         mcr2  p7, #1, r5, c1, c1, #4
1276         mcr p14, #0, r4, c0, c5
1277         mcr2 p4, #2, r2, c1, c3
1278
1279 @ CHECK: mcr    p7, #1, r5, c1, c1, #4  @ encoding: [0x21,0xee,0x91,0x57]
1280 @ CHECK: mcr2   p7, #1, r5, c1, c1, #4  @ encoding: [0x21,0xfe,0x91,0x57]
1281 @ CHECK: mcr    p14, #0, r4, c0, c5, #0 @ encoding: [0x00,0xee,0x15,0x4e]
1282 @ CHECK: mcr2   p4, #2, r2, c1, c3, #0  @ encoding: [0x41,0xfe,0x13,0x24]
1283
1284
1285 @------------------------------------------------------------------------------
1286 @ MCRR/MCRR2
1287 @------------------------------------------------------------------------------
1288         mcrr  p7, #15, r5, r4, c1
1289         mcrr2  p7, #15, r5, r4, c1
1290
1291 @ CHECK: mcrr   p7, #15, r5, r4, c1     @ encoding: [0x44,0xec,0xf1,0x57]
1292 @ CHECK: mcrr2  p7, #15, r5, r4, c1     @ encoding: [0x44,0xfc,0xf1,0x57]
1293
1294
1295 @------------------------------------------------------------------------------
1296 @ MLA/MLS
1297 @------------------------------------------------------------------------------
1298         mla  r1,r2,r3,r4
1299         mls  r1,r2,r3,r4
1300
1301 @ CHECK: mla    r1, r2, r3, r4          @ encoding: [0x02,0xfb,0x03,0x41]
1302 @ CHECK: mls    r1, r2, r3, r4          @ encoding: [0x02,0xfb,0x13,0x41]
1303
1304
1305 @------------------------------------------------------------------------------
1306 @ MOV(immediate)
1307 @------------------------------------------------------------------------------
1308         movs r1, #21
1309         movs.w r1, #21
1310         movs r8, #21
1311         movw r0, #65535
1312         movw r1, #43777
1313         movw r1, #43792
1314         mov.w r0, #0x3fc0000
1315         mov r0, #0x3fc0000
1316         movs.w r0, #0x3fc0000
1317         itte eq
1318         movseq r1, #12
1319         moveq r1, #12
1320         movne.w r1, #12
1321         mov.w r6, #450
1322         it lo
1323         movlo r1, #-1
1324
1325         @ alias for mvn
1326         mov r3, #-3
1327         mov r11, #0xabcd
1328         movs r0, #1
1329         it ne
1330         movne r3, #15
1331
1332         itt eq
1333         moveq r0, #255
1334         moveq r1, #256
1335
1336 @ CHECK: movs   r1, #21                 @ encoding: [0x15,0x21]
1337 @ CHECK: movs.w r1, #21                 @ encoding: [0x5f,0xf0,0x15,0x01]
1338 @ CHECK: movs.w r8, #21                 @ encoding: [0x5f,0xf0,0x15,0x08]
1339 @ CHECK: movw   r0, #65535              @ encoding: [0x4f,0xf6,0xff,0x70]
1340 @ CHECK: movw   r1, #43777              @ encoding: [0x4a,0xf6,0x01,0x31]
1341 @ CHECK: movw   r1, #43792              @ encoding: [0x4a,0xf6,0x10,0x31]
1342 @ CHECK: mov.w  r0, #66846720           @ encoding: [0x4f,0xf0,0x7f,0x70]
1343 @ CHECK: mov.w  r0, #66846720           @ encoding: [0x4f,0xf0,0x7f,0x70]
1344 @ CHECK: movs.w r0, #66846720           @ encoding: [0x5f,0xf0,0x7f,0x70]
1345 @ CHECK: itte   eq                      @ encoding: [0x06,0xbf]
1346 @ CHECK: movseq.w       r1, #12         @ encoding: [0x5f,0xf0,0x0c,0x01]
1347 @ CHECK: moveq  r1, #12                 @ encoding: [0x0c,0x21]
1348 @ CHECK: movne.w r1, #12                @ encoding: [0x4f,0xf0,0x0c,0x01]
1349 @ CHECK: mov.w  r6, #450                @ encoding: [0x4f,0xf4,0xe1,0x76]
1350 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
1351 @ CHECK: movlo.w        r1, #-1         @ encoding: [0x4f,0xf0,0xff,0x31]
1352 @ CHECK: mvn    r3, #2                  @ encoding: [0x6f,0xf0,0x02,0x03]
1353 @ CHECK: movw   r11, #43981             @ encoding: [0x4a,0xf6,0xcd,0x3b]
1354 @ CHECK: movs   r0, #1                  @ encoding: [0x01,0x20]
1355 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1356 @ CHECK: movne  r3, #15                 @ encoding: [0x0f,0x23]
1357
1358 @ CHECK: itt    eq                      @ encoding: [0x04,0xbf]
1359 @ CHECK: moveq  r0, #255                @ encoding: [0xff,0x20]
1360 @ CHECK: movweq r1, #256                @ encoding: [0x40,0xf2,0x00,0x11]
1361
1362 @------------------------------------------------------------------------------
1363 @ MOV(shifted register)
1364 @------------------------------------------------------------------------------
1365         mov r6, r2, lsl #16
1366         mov r6, r2, lsr #16
1367         movs r6, r2, asr #32
1368         movs r6, r2, ror #5
1369         movs r4, r4, lsl r5
1370         movs r4, r4, lsr r5
1371         movs r4, r4, asr r5
1372         movs r4, r4, ror r5
1373         mov r4, r4, lsl r5
1374         movs r4, r4, ror r8
1375         movs r4, r5, lsr r6
1376         itttt eq
1377         moveq r4, r4, lsl r5
1378         moveq r4, r4, lsr r5
1379         moveq r4, r4, asr r5
1380         moveq r4, r4, ror r5
1381         mov r4, r4, rrx
1382
1383 @ CHECK: lsl.w  r6, r2, #16             @ encoding: [0x4f,0xea,0x02,0x46]
1384 @ CHECK: lsr.w  r6, r2, #16             @ encoding: [0x4f,0xea,0x12,0x46]
1385 @ CHECK: asrs   r6, r2, #32             @ encoding: [0x16,0x10]
1386 @ CHECK: rors.w r6, r2, #5              @ encoding: [0x5f,0xea,0x72,0x16]
1387 @ CHECK: lsls   r4, r5                  @ encoding: [0xac,0x40]
1388 @ CHECK: lsrs   r4, r5                  @ encoding: [0xec,0x40]
1389 @ CHECK: asrs   r4, r5                  @ encoding: [0x2c,0x41]
1390 @ CHECK: rors   r4, r5                  @ encoding: [0xec,0x41]
1391 @ CHECK: lsl.w  r4, r4, r5              @ encoding: [0x04,0xfa,0x05,0xf4]
1392 @ CHECK: rors.w r4, r4, r8              @ encoding: [0x74,0xfa,0x08,0xf4]
1393 @ CHECK: lsrs.w r4, r5, r6              @ encoding: [0x35,0xfa,0x06,0xf4]
1394 @ CHECK: itttt  eq                      @ encoding: [0x01,0xbf]
1395 @ CHECK: lsleq  r4, r5                  @ encoding: [0xac,0x40]
1396 @ CHECK: lsreq  r4, r5                  @ encoding: [0xec,0x40]
1397 @ CHECK: asreq  r4, r5                  @ encoding: [0x2c,0x41]
1398 @ CHECK: roreq  r4, r5                  @ encoding: [0xec,0x41]
1399 @ CHECK: rrx    r4, r4                  @ encoding: [0x4f,0xea,0x34,0x04]
1400
1401
1402 @------------------------------------------------------------------------------
1403 @ MOVT
1404 @------------------------------------------------------------------------------
1405         movt r3, #7
1406         movt r6, #0xffff
1407         it eq
1408         movteq r4, #0xff0
1409
1410 @ CHECK: movt   r3, #7                  @ encoding: [0xc0,0xf2,0x07,0x03]
1411 @ CHECK: movt   r6, #65535              @ encoding: [0xcf,0xf6,0xff,0x76]
1412 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1413 @ CHECK: movteq r4, #4080               @ encoding: [0xc0,0xf6,0xf0,0x74]
1414
1415 @------------------------------------------------------------------------------
1416 @ MRC/MRC2
1417 @------------------------------------------------------------------------------
1418         mrc  p14, #0, r1, c1, c2, #4
1419         mrc  p15, #7, apsr_nzcv, c15, c6, #6
1420         mrc  p11, #1, r1, c2, c2
1421         mrc2 p12, #3, r3, c3, c4
1422         mrc2 p14, #0, r1, c1, c2, #4
1423         mrc2 p10, #7, apsr_nzcv, c15, c0, #1
1424  
1425 @ CHECK: mrc  p14, #0, r1, c1, c2, #4            @ encoding: [0x11,0xee,0x92,0x1e]
1426 @ CHECK: mrc  p15, #7, apsr_nzcv, c15, c6, #6    @ encoding: [0xff,0xee,0xd6,0xff]
1427 @ CHECK: mrc  p11, #1, r1, c2, c2, #0            @ encoding: [0x32,0xee,0x12,0x1b]
1428 @ CHECK: mrc2 p12, #3, r3, c3, c4, #0            @ encoding: [0x73,0xfe,0x14,0x3c]
1429 @ CHECK: mrc2 p14, #0, r1, c1, c2, #4            @ encoding: [0x11,0xfe,0x92,0x1e]
1430 @ CHECK: mrc2 p10, #7, apsr_nzcv, c15, c0, #1    @ encoding: [0xff,0xfe,0x30,0xfa]
1431  
1432 @------------------------------------------------------------------------------
1433 @ MRRC/MRRC2
1434 @------------------------------------------------------------------------------
1435         mrrc  p7, #1, r5, r4, c1
1436         mrrc2  p7, #1, r5, r4, c1
1437
1438 @ CHECK: mrrc   p7, #1, r5, r4, c1      @ encoding: [0x54,0xec,0x11,0x57]
1439 @ CHECK: mrrc2  p7, #1, r5, r4, c1      @ encoding: [0x54,0xfc,0x11,0x57]
1440
1441
1442 @------------------------------------------------------------------------------
1443 @ MRS
1444 @------------------------------------------------------------------------------
1445         mrs  r8, apsr
1446         mrs  r8, cpsr
1447         mrs  r8, spsr
1448
1449 @ CHECK: mrs    r8, apsr                @ encoding: [0xef,0xf3,0x00,0x88]
1450 @ CHECK: mrs    r8, apsr                @ encoding: [0xef,0xf3,0x00,0x88]
1451 @ CHECK: mrs    r8, spsr                @ encoding: [0xff,0xf3,0x00,0x88]
1452
1453
1454 @------------------------------------------------------------------------------
1455 @ MSR
1456 @------------------------------------------------------------------------------
1457         msr  apsr, r1
1458         msr  apsr_g, r2
1459         msr  apsr_nzcvq, r3
1460         msr  APSR_nzcvq, r4
1461         msr  apsr_nzcvqg, r5
1462         msr  cpsr_fc, r6
1463         msr  cpsr_c, r7
1464         msr  cpsr_x, r8
1465         msr  cpsr_fc, r9
1466         msr  cpsr_all, r11
1467         msr  cpsr_fsx, r12
1468         msr  spsr_fc, r0
1469         msr  SPSR_fsxc, r5
1470         msr  cpsr_fsxc, r8
1471         msr  cpsr, r3
1472
1473 @ CHECK: msr    APSR_nzcvq, r1          @ encoding: [0x81,0xf3,0x00,0x88]
1474 @ CHECK: msr    APSR_g, r2              @ encoding: [0x82,0xf3,0x00,0x84]
1475 @ CHECK: msr    APSR_nzcvq, r3          @ encoding: [0x83,0xf3,0x00,0x88]
1476 @ CHECK: msr    APSR_nzcvq, r4          @ encoding: [0x84,0xf3,0x00,0x88]
1477 @ CHECK: msr    APSR_nzcvqg, r5         @ encoding: [0x85,0xf3,0x00,0x8c]
1478 @ CHECK: msr    CPSR_fc, r6             @ encoding: [0x86,0xf3,0x00,0x89]
1479 @ CHECK: msr    CPSR_c, r7              @ encoding: [0x87,0xf3,0x00,0x81]
1480 @ CHECK: msr    CPSR_x, r8              @ encoding: [0x88,0xf3,0x00,0x82]
1481 @ CHECK: msr    CPSR_fc, r9             @ encoding: [0x89,0xf3,0x00,0x89]
1482 @ CHECK: msr    CPSR_fc, r11            @ encoding: [0x8b,0xf3,0x00,0x89]
1483 @ CHECK: msr    CPSR_fsx, r12           @ encoding: [0x8c,0xf3,0x00,0x8e]
1484 @ CHECK: msr    SPSR_fc, r0             @ encoding: [0x90,0xf3,0x00,0x89]
1485 @ CHECK: msr    SPSR_fsxc, r5           @ encoding: [0x95,0xf3,0x00,0x8f]
1486 @ CHECK: msr    CPSR_fsxc, r8           @ encoding: [0x88,0xf3,0x00,0x8f]
1487 @ CHECK: msr    CPSR_fc, r3             @ encoding: [0x83,0xf3,0x00,0x89]
1488
1489
1490 @------------------------------------------------------------------------------
1491 @ MUL
1492 @------------------------------------------------------------------------------
1493         muls r3, r4, r3
1494         mul r3, r4, r3
1495         mul r3, r4, r6
1496         it eq
1497         muleq r3, r4, r5
1498         it le
1499         mulle r4, r4, r8
1500         mul r5, r6
1501
1502 @ CHECK: muls   r3, r4, r3              @ encoding: [0x63,0x43]
1503 @ CHECK: mul    r3, r4, r3              @ encoding: [0x04,0xfb,0x03,0xf3]
1504 @ CHECK: mul    r3, r4, r6              @ encoding: [0x04,0xfb,0x06,0xf3]
1505 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1506 @ CHECK: muleq  r3, r4, r5              @ encoding: [0x04,0xfb,0x05,0xf3]
1507 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
1508 @ CHECK: mulle  r4, r4, r8              @ encoding: [0x04,0xfb,0x08,0xf4]
1509 @ CHECK: mul    r5, r6, r5              @ encoding: [0x06,0xfb,0x05,0xf5]
1510
1511
1512 @------------------------------------------------------------------------------
1513 @ MVN(immediate)
1514 @------------------------------------------------------------------------------
1515         mvns r8, #21
1516         mvn r0, #0x3fc0000
1517         mvns r0, #0x3fc0000
1518         itte eq
1519         mvnseq r1, #12
1520         mvneq.w r1, #12
1521         mvnne r1, #12
1522
1523 @ CHECK: mvns   r8, #21                 @ encoding: [0x7f,0xf0,0x15,0x08]
1524 @ CHECK: mvn    r0, #66846720           @ encoding: [0x6f,0xf0,0x7f,0x70]
1525 @ CHECK: mvns   r0, #66846720           @ encoding: [0x7f,0xf0,0x7f,0x70]
1526 @ CHECK: itte   eq                      @ encoding: [0x06,0xbf]
1527 @ CHECK: mvnseq r1, #12                 @ encoding: [0x7f,0xf0,0x0c,0x01]
1528 @ CHECK: mvneq  r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
1529 @ CHECK: mvnne  r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
1530
1531
1532 @------------------------------------------------------------------------------
1533 @ MVN(register)
1534 @------------------------------------------------------------------------------
1535         mvn r2, r3
1536         mvns r2, r3
1537         mvn r5, r6, lsl #19
1538         mvn r5, r6, lsr #9
1539         mvn.w r5, r6, asr #4
1540         mvn r5, r6, ror #6
1541         mvn r5, r6, rrx
1542         it eq
1543         mvneq r2, r3
1544
1545 @ CHECK: mvn.w  r2, r3                  @ encoding: [0x6f,0xea,0x03,0x02]
1546 @ CHECK: mvns   r2, r3                  @ encoding: [0xda,0x43]
1547 @ CHECK: mvn.w  r5, r6, lsl #19         @ encoding: [0x6f,0xea,0xc6,0x45]
1548 @ CHECK: mvn.w  r5, r6, lsr #9          @ encoding: [0x6f,0xea,0x56,0x25]
1549 @ CHECK: mvn.w  r5, r6, asr #4          @ encoding: [0x6f,0xea,0x26,0x15]
1550 @ CHECK: mvn.w  r5, r6, ror #6          @ encoding: [0x6f,0xea,0xb6,0x15]
1551 @ CHECK: mvn.w  r5, r6, rrx             @ encoding: [0x6f,0xea,0x36,0x05]
1552 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1553 @ CHECK: mvneq  r2, r3                  @ encoding: [0xda,0x43]
1554
1555 @------------------------------------------------------------------------------
1556 @ NEG
1557 @------------------------------------------------------------------------------
1558         neg r5, r2
1559         neg r5, r8
1560
1561 @ CHECK: rsb.w  r5, r2, #0              @ encoding: [0xc2,0xf1,0x00,0x05]
1562 @ CHECK: rsb.w  r5, r8, #0              @ encoding: [0xc8,0xf1,0x00,0x05]
1563
1564
1565 @------------------------------------------------------------------------------
1566 @ NOP
1567 @------------------------------------------------------------------------------
1568         nop.w
1569
1570 @ CHECK: nop.w                          @ encoding: [0xaf,0xf3,0x00,0x80]
1571
1572
1573 @------------------------------------------------------------------------------
1574 @ ORN
1575 @------------------------------------------------------------------------------
1576         orn r4, r5, #0xf000
1577         orn r4, r5, r6
1578         orns r4, r5, r6
1579         orn r4, r5, r6, lsl #5
1580         orns r4, r5, r6, lsr #5
1581         orn r4, r5, r6, lsr #5
1582         orns r4, r5, r6, asr #5
1583         orn r4, r5, r6, ror #5
1584
1585 @ CHECK: orn    r4, r5, #61440          @ encoding: [0x65,0xf4,0x70,0x44]
1586 @ CHECK: orn    r4, r5, r6              @ encoding: [0x65,0xea,0x06,0x04]
1587 @ CHECK: orns   r4, r5, r6              @ encoding: [0x75,0xea,0x06,0x04]
1588 @ CHECK: orn    r4, r5, r6, lsl #5      @ encoding: [0x65,0xea,0x46,0x14]
1589 @ CHECK: orns   r4, r5, r6, lsr #5      @ encoding: [0x75,0xea,0x56,0x14]
1590 @ CHECK: orn    r4, r5, r6, lsr #5      @ encoding: [0x65,0xea,0x56,0x14]
1591 @ CHECK: orns   r4, r5, r6, asr #5      @ encoding: [0x75,0xea,0x66,0x14]
1592 @ CHECK: orn    r4, r5, r6, ror #5      @ encoding: [0x65,0xea,0x76,0x14]
1593
1594
1595 @------------------------------------------------------------------------------
1596 @ ORR
1597 @------------------------------------------------------------------------------
1598         orr r4, r5, #0xf000
1599         orr r4, r5, r6
1600         orr r4, r5, r6, lsl #5
1601         orrs r4, r5, r6, lsr #5
1602         orr r4, r5, r6, lsr #5
1603         orrs r4, r5, r6, asr #5
1604         orr r4, r5, r6, ror #5
1605
1606 @ CHECK: orr    r4, r5, #61440          @ encoding: [0x45,0xf4,0x70,0x44]
1607 @ CHECK: orr.w  r4, r5, r6              @ encoding: [0x45,0xea,0x06,0x04]
1608 @ CHECK: orr.w  r4, r5, r6, lsl #5      @ encoding: [0x45,0xea,0x46,0x14]
1609 @ CHECK: orrs.w r4, r5, r6, lsr #5      @ encoding: [0x55,0xea,0x56,0x14]
1610 @ CHECK: orr.w  r4, r5, r6, lsr #5      @ encoding: [0x45,0xea,0x56,0x14]
1611 @ CHECK: orrs.w r4, r5, r6, asr #5      @ encoding: [0x55,0xea,0x66,0x14]
1612 @ CHECK: orr.w  r4, r5, r6, ror #5      @ encoding: [0x45,0xea,0x76,0x14]
1613
1614
1615 @------------------------------------------------------------------------------
1616 @ PKH
1617 @------------------------------------------------------------------------------
1618         pkhbt r2, r2, r3
1619         pkhbt r2, r2, r3, lsl #31
1620         pkhbt r2, r2, r3, lsl #0
1621         pkhbt r2, r2, r3, lsl #15
1622
1623         pkhtb r2, r2, r3
1624         pkhtb r2, r2, r3, asr #31
1625         pkhtb r2, r2, r3, asr #15
1626
1627 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1628 @ CHECK: pkhbt  r2, r2, r3, lsl #31     @ encoding: [0xc2,0xea,0xc3,0x72]
1629 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1630 @ CHECK: pkhbt  r2, r2, r3, lsl #15     @ encoding: [0xc2,0xea,0xc3,0x32]
1631
1632 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1633 @ CHECK: pkhtb  r2, r2, r3, asr #31     @ encoding: [0xc2,0xea,0xe3,0x72]
1634 @ CHECK: pkhtb  r2, r2, r3, asr #15     @ encoding: [0xc2,0xea,0xe3,0x32]
1635
1636
1637 @------------------------------------------------------------------------------
1638 @ PLD(immediate)
1639 @------------------------------------------------------------------------------
1640         pld [r5, #-4]
1641         pld [r6, #32]
1642         pld [r6, #33]
1643         pld [r6, #257]
1644         pld [r7, #257]
1645         pld [r1, #0]
1646         pld [r1, #-0]
1647
1648 @ CHECK: pld    [r5, #-4]               @ encoding: [0x15,0xf8,0x04,0xfc]
1649 @ CHECK: pld    [r6, #32]               @ encoding: [0x96,0xf8,0x20,0xf0]
1650 @ CHECK: pld    [r6, #33]               @ encoding: [0x96,0xf8,0x21,0xf0]
1651 @ CHECK: pld    [r6, #257]              @ encoding: [0x96,0xf8,0x01,0xf1]
1652 @ CHECK: pld    [r7, #257]              @ encoding: [0x97,0xf8,0x01,0xf1]
1653 @ CHECK: pld    [r1]                    @ encoding: [0x91,0xf8,0x00,0xf0]
1654 @ CHECK: pld    [r1, #-0]               @ encoding: [0x11,0xf8,0x00,0xfc]
1655
1656
1657 @------------------------------------------------------------------------------
1658 @ PLD(literal)
1659 @------------------------------------------------------------------------------
1660 @        pld  _foo
1661
1662 @ FIXME: pld    _foo                    @ encoding: [0x9f'A',0xf8'A',A,0xf0'A']
1663             @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1664
1665         pld [pc,#-4095]
1666 @ CHECK: pld [pc, #-4095]            @ encoding: [0x1f,0xf8,0xff,0xff]
1667
1668
1669 @------------------------------------------------------------------------------
1670 @ PLD(register)
1671 @------------------------------------------------------------------------------
1672         pld [r8, r1]
1673         pld [r5, r2]
1674         pld [r0, r2, lsl #3]
1675         pld [r8, r2, lsl #2]
1676         pld [sp, r2, lsl #1]
1677         pld [sp, r2, lsl #0]
1678
1679 @ CHECK: pld    [r8, r1]                @ encoding: [0x18,0xf8,0x01,0xf0]
1680 @ CHECK: pld    [r5, r2]                @ encoding: [0x15,0xf8,0x02,0xf0]
1681 @ CHECK: pld    [r0, r2, lsl #3]        @ encoding: [0x10,0xf8,0x32,0xf0]
1682 @ CHECK: pld    [r8, r2, lsl #2]        @ encoding: [0x18,0xf8,0x22,0xf0]
1683 @ CHECK: pld    [sp, r2, lsl #1]        @ encoding: [0x1d,0xf8,0x12,0xf0]
1684 @ CHECK: pld    [sp, r2]                @ encoding: [0x1d,0xf8,0x02,0xf0]
1685
1686 @------------------------------------------------------------------------------
1687 @ PLI(immediate)
1688 @------------------------------------------------------------------------------
1689         pli [r5, #-4]
1690         pli [r6, #32]
1691         pli [r6, #33]
1692         pli [r6, #257]
1693         pli [r7, #257]
1694         pli [pc, #+4095]
1695         pli [pc, #-4095]
1696
1697 @ CHECK: pli    [r5, #-4]               @ encoding: [0x15,0xf9,0x04,0xfc]
1698 @ CHECK: pli    [r6, #32]               @ encoding: [0x96,0xf9,0x20,0xf0]
1699 @ CHECK: pli    [r6, #33]               @ encoding: [0x96,0xf9,0x21,0xf0]
1700 @ CHECK: pli    [r6, #257]              @ encoding: [0x96,0xf9,0x01,0xf1]
1701 @ CHECK: pli    [r7, #257]              @ encoding: [0x97,0xf9,0x01,0xf1]
1702 @ CHECK: pli    [pc, #4095]             @ encoding: [0x9f,0xf9,0xff,0xff]
1703 @ CHECK: pli    [pc, #-4095]            @ encoding: [0x1f,0xf9,0xff,0xff]
1704
1705
1706 @------------------------------------------------------------------------------
1707 @ PLI(literal)
1708 @------------------------------------------------------------------------------
1709 @        pli  _foo
1710
1711
1712 @ FIXME: pli    _foo                    @ encoding: [0x9f'A',0xf9'A',A,0xf0'A']
1713            @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1714
1715
1716 @------------------------------------------------------------------------------
1717 @ PLI(register)
1718 @------------------------------------------------------------------------------
1719         pli [r8, r1]
1720         pli [r5, r2]
1721         pli [r0, r2, lsl #3]
1722         pli [r8, r2, lsl #2]
1723         pli [sp, r2, lsl #1]
1724         pli [sp, r2, lsl #0]
1725
1726 @ CHECK: pli    [r8, r1]                @ encoding: [0x18,0xf9,0x01,0xf0]
1727 @ CHECK: pli    [r5, r2]                @ encoding: [0x15,0xf9,0x02,0xf0]
1728 @ CHECK: pli    [r0, r2, lsl #3]        @ encoding: [0x10,0xf9,0x32,0xf0]
1729 @ CHECK: pli    [r8, r2, lsl #2]        @ encoding: [0x18,0xf9,0x22,0xf0]
1730 @ CHECK: pli    [sp, r2, lsl #1]        @ encoding: [0x1d,0xf9,0x12,0xf0]
1731 @ CHECK: pli    [sp, r2]                @ encoding: [0x1d,0xf9,0x02,0xf0]
1732
1733 @------------------------------------------------------------------------------
1734 @ POP (alias)
1735 @------------------------------------------------------------------------------
1736         pop {r2, r9}
1737
1738 @ CHECK: pop.w  {r2, r9}                @ encoding: [0xbd,0xe8,0x04,0x02]
1739
1740
1741 @------------------------------------------------------------------------------
1742 @ PUSH (alias)
1743 @------------------------------------------------------------------------------
1744         push {r2, r9}
1745
1746 @ CHECK: push.w {r2, r9}                @ encoding: [0x2d,0xe9,0x04,0x02]
1747
1748
1749 @------------------------------------------------------------------------------
1750 @ QADD/QADD16/QADD8
1751 @------------------------------------------------------------------------------
1752         qadd r1, r2, r3
1753         qadd16 r1, r2, r3
1754         qadd8 r1, r2, r3
1755         itte gt
1756         qaddgt r1, r2, r3
1757         qadd16gt r1, r2, r3
1758         qadd8le r1, r2, r3
1759
1760 @ CHECK: qadd   r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1761 @ CHECK: qadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x13,0xf1]
1762 @ CHECK: qadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x13,0xf1]
1763 @ CHECK: itte   gt                      @ encoding: [0xc6,0xbf]
1764 @ CHECK: qaddgt r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1765 @ CHECK: qadd16gt r1, r2, r3            @ encoding: [0x92,0xfa,0x13,0xf1]
1766 @ CHECK: qadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x13,0xf1]
1767
1768
1769 @------------------------------------------------------------------------------
1770 @ QDADD/QDSUB
1771 @------------------------------------------------------------------------------
1772         qdadd r6, r7, r8
1773         qdsub r6, r7, r8
1774         itt hi
1775         qdaddhi r6, r7, r8
1776         qdsubhi r6, r7, r8
1777
1778 @ CHECK: qdadd  r6, r7, r8              @ encoding: [0x88,0xfa,0x97,0xf6]
1779 @ CHECK: qdsub  r6, r7, r8              @ encoding: [0x88,0xfa,0xb7,0xf6]
1780 @ CHECK: itt    hi                      @ encoding: [0x84,0xbf]
1781 @ CHECK: qdaddhi r6, r7, r8             @ encoding: [0x88,0xfa,0x97,0xf6]
1782 @ CHECK: qdsubhi r6, r7, r8             @ encoding: [0x88,0xfa,0xb7,0xf6]
1783
1784
1785 @------------------------------------------------------------------------------
1786 @ QSAX
1787 @------------------------------------------------------------------------------
1788         qsax r9, r12, r0
1789         it eq
1790         qsaxeq r9, r12, r0
1791
1792 @ CHECK: qsax   r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1793 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1794 @ CHECK: qsaxeq r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1795
1796
1797 @------------------------------------------------------------------------------
1798 @ QSUB/QSUB16/QSUB8
1799 @------------------------------------------------------------------------------
1800         qsub r1, r2, r3
1801         qsub16 r1, r2, r3
1802         qsub8 r1, r2, r3
1803         itet le
1804         qsuble r1, r2, r3
1805         qsub16gt r1, r2, r3
1806         qsub8le r1, r2, r3
1807
1808 @ CHECK: qsub   r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1809 @ CHECK: qsub16 r1, r2, r3              @ encoding: [0xd2,0xfa,0x13,0xf1]
1810 @ CHECK: qsub8  r1, r2, r3              @ encoding: [0xc2,0xfa,0x13,0xf1]
1811 @ CHECK: itet   le                      @ encoding: [0xd6,0xbf]
1812 @ CHECK: qsuble r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1813 @ CHECK: qsub16gt       r1, r2, r3      @ encoding: [0xd2,0xfa,0x13,0xf1]
1814 @ CHECK: qsub8le r1, r2, r3             @ encoding: [0xc2,0xfa,0x13,0xf1]
1815
1816
1817 @------------------------------------------------------------------------------
1818 @ RBIT
1819 @------------------------------------------------------------------------------
1820         rbit r1, r2
1821         it ne
1822         rbitne r1, r2
1823
1824 @ CHECK: rbit   r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1825 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1826 @ CHECK: rbitne r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1827
1828
1829 @------------------------------------------------------------------------------
1830 @ REV
1831 @------------------------------------------------------------------------------
1832         rev.w r1, r2
1833         rev r2, r8
1834         itt ne
1835         revne r1, r2
1836         revne r1, r8
1837
1838 @ CHECK: rev.w  r1, r2                  @ encoding: [0x92,0xfa,0x82,0xf1]
1839 @ CHECK: rev.w  r2, r8                  @ encoding: [0x98,0xfa,0x88,0xf2]
1840 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1841 @ CHECK: revne  r1, r2                  @ encoding: [0x11,0xba]
1842 @ CHECK: revne.w r1, r8                 @ encoding: [0x98,0xfa,0x88,0xf1]
1843
1844
1845 @------------------------------------------------------------------------------
1846 @ REV16
1847 @------------------------------------------------------------------------------
1848         rev16.w r1, r2
1849         rev16 r2, r8
1850         itt ne
1851         rev16ne r1, r2
1852         rev16ne r1, r8
1853
1854 @ CHECK: rev16.w r1, r2                 @ encoding: [0x92,0xfa,0x92,0xf1]
1855 @ CHECK: rev16.w r2, r8                 @ encoding: [0x98,0xfa,0x98,0xf2]
1856 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1857 @ CHECK: rev16ne r1, r2                 @ encoding: [0x51,0xba]
1858 @ CHECK: rev16ne.w      r1, r8          @ encoding: [0x98,0xfa,0x98,0xf1]
1859
1860
1861 @------------------------------------------------------------------------------
1862 @ REVSH
1863 @------------------------------------------------------------------------------
1864         revsh.w r1, r2
1865         revsh r2, r8
1866         itt ne
1867         revshne r1, r2
1868         revshne r1, r8
1869
1870 @ CHECK: revsh.w r1, r2                 @ encoding: [0x92,0xfa,0xb2,0xf1]
1871 @ CHECK: revsh.w r2, r8                 @ encoding: [0x98,0xfa,0xb8,0xf2]
1872 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1873 @ CHECK: revshne r1, r2                 @ encoding: [0xd1,0xba]
1874 @ CHECK: revshne.w      r1, r8          @ encoding: [0x98,0xfa,0xb8,0xf1]
1875
1876
1877 @------------------------------------------------------------------------------
1878 @ ROR (immediate)
1879 @------------------------------------------------------------------------------
1880         ror r2, r3, #12
1881         rors r8, r3, #31
1882         rors.w r2, r3, #1
1883         ror r2, r3, #4
1884         rors r2, r12, #15
1885
1886         ror r3, #19
1887         rors r8, #2
1888         rors.w r7, #5
1889         ror.w r12, #21
1890
1891 @ CHECK: ror.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x33,0x32]
1892 @ CHECK: rors.w r8, r3, #31             @ encoding: [0x5f,0xea,0xf3,0x78]
1893 @ CHECK: rors.w r2, r3, #1              @ encoding: [0x5f,0xea,0x73,0x02]
1894 @ CHECK: ror.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x33,0x12]
1895 @ CHECK: rors.w r2, r12, #15            @ encoding: [0x5f,0xea,0xfc,0x32]
1896
1897 @ CHECK: ror.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xf3,0x43]
1898 @ CHECK: rors.w r8, r8, #2              @ encoding: [0x5f,0xea,0xb8,0x08]
1899 @ CHECK: rors.w r7, r7, #5              @ encoding: [0x5f,0xea,0x77,0x17]
1900 @ CHECK: ror.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x7c,0x5c]
1901
1902
1903 @------------------------------------------------------------------------------
1904 @ ROR (register)
1905 @------------------------------------------------------------------------------
1906         ror r3, r4, r2
1907         ror.w r1, r2
1908         rors r3, r4, r8
1909
1910 @ CHECK: ror.w  r3, r4, r2              @ encoding: [0x64,0xfa,0x02,0xf3]
1911 @ CHECK: ror.w  r1, r1, r2              @ encoding: [0x61,0xfa,0x02,0xf1]
1912 @ CHECK: rors.w r3, r4, r8              @ encoding: [0x74,0xfa,0x08,0xf3]
1913
1914
1915 @------------------------------------------------------------------------------
1916 @ RRX
1917 @------------------------------------------------------------------------------
1918         rrx r1, r2
1919         rrxs r1, r2
1920         ite lt
1921         rrxlt r9, r12
1922         rrxsge r8, r3
1923
1924 @ CHECK: rrx    r1, r2                  @ encoding: [0x4f,0xea,0x32,0x01]
1925 @ CHECK: rrxs   r1, r2                  @ encoding: [0x5f,0xea,0x32,0x01]
1926 @ CHECK: ite    lt                      @ encoding: [0xb4,0xbf]
1927 @ CHECK: rrxlt  r9, r12                 @ encoding: [0x4f,0xea,0x3c,0x09]
1928 @ CHECK: rrxsge r8, r3                  @ encoding: [0x5f,0xea,0x33,0x08]
1929
1930 @------------------------------------------------------------------------------
1931 @ RSB (immediate)
1932 @------------------------------------------------------------------------------
1933         rsb r2, r5, #0xff000
1934         rsbs r3, r12, #0xf
1935         rsb r1, #0xff
1936         rsb r1, r1, #0xff
1937         rsb r11, r11, #0
1938         rsb r9, #0
1939         rsbs r3, r1, #0
1940         rsb r3, r1, #0
1941
1942 @ CHECK: rsb.w  r2, r5, #1044480        @ encoding: [0xc5,0xf5,0x7f,0x22]
1943 @ CHECK: rsbs.w r3, r12, #15            @ encoding: [0xdc,0xf1,0x0f,0x03]
1944 @ CHECK: rsb.w  r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1945 @ CHECK: rsb.w  r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1946 @ CHECK: rsb.w  r11, r11, #0            @ encoding: [0xcb,0xf1,0x00,0x0b]
1947 @ CHECK: rsb.w  r9, r9, #0              @ encoding: [0xc9,0xf1,0x00,0x09]
1948 @ CHECK: rsbs   r3, r1, #0              @ encoding: [0x4b,0x42]
1949 @ CHECK: rsb.w  r3, r1, #0              @ encoding: [0xc1,0xf1,0x00,0x03]
1950
1951
1952 @------------------------------------------------------------------------------
1953 @ RSB (register)
1954 @------------------------------------------------------------------------------
1955         rsb r4, r8
1956         rsb r4, r9, r8
1957         rsb r1, r4, r8, asr #3
1958         rsbs r2, r1, r7, lsl #1
1959
1960 @ CHECK: rsb    r4, r4, r8              @ encoding: [0xc4,0xeb,0x08,0x04]
1961 @ CHECK: rsb    r4, r9, r8              @ encoding: [0xc9,0xeb,0x08,0x04]
1962 @ CHECK: rsb    r1, r4, r8, asr #3      @ encoding: [0xc4,0xeb,0xe8,0x01]
1963 @ CHECK: rsbs   r2, r1, r7, lsl #1      @ encoding: [0xd1,0xeb,0x47,0x02]
1964
1965
1966 @------------------------------------------------------------------------------
1967 @ SADD16
1968 @------------------------------------------------------------------------------
1969         sadd16 r3, r4, r8
1970         it ne
1971         sadd16ne r3, r4, r8
1972
1973 @ CHECK: sadd16 r3, r4, r8              @ encoding: [0x94,0xfa,0x08,0xf3]
1974 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1975 @ CHECK: sadd16ne       r3, r4, r8      @ encoding: [0x94,0xfa,0x08,0xf3]
1976
1977
1978 @------------------------------------------------------------------------------
1979 @ SADD8
1980 @------------------------------------------------------------------------------
1981         sadd8 r3, r4, r8
1982         it ne
1983         sadd8ne r3, r4, r8
1984
1985 @ CHECK: sadd8  r3, r4, r8              @ encoding: [0x84,0xfa,0x08,0xf3]
1986 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1987 @ CHECK: sadd8ne r3, r4, r8             @ encoding: [0x84,0xfa,0x08,0xf3]
1988
1989
1990 @------------------------------------------------------------------------------
1991 @ SASX
1992 @------------------------------------------------------------------------------
1993         saddsubx r9, r2, r7
1994         it ne
1995         saddsubxne r2, r5, r6
1996         sasx r9, r2, r7
1997         it ne
1998         sasxne r2, r5, r6
1999
2000 @ CHECK: sasx   r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
2001 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
2002 @ CHECK: sasxne r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
2003 @ CHECK: sasx   r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
2004 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
2005 @ CHECK: sasxne r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
2006
2007
2008 @------------------------------------------------------------------------------
2009 @ SBC (immediate)
2010 @------------------------------------------------------------------------------
2011         sbc r0, r1, #4
2012         sbcs r0, r1, #0
2013         sbc r1, r2, #255
2014         sbc r3, r7, #0x00550055
2015         sbc r8, r12, #0xaa00aa00
2016         sbc r9, r7, #0xa5a5a5a5
2017         sbc r5, r3, #0x87000000
2018         sbc r4, r2, #0x7f800000
2019         sbc r4, r2, #0x00000680
2020
2021 @ CHECK: sbc    r0, r1, #4              @ encoding: [0x61,0xf1,0x04,0x00]
2022 @ CHECK: sbcs   r0, r1, #0              @ encoding: [0x71,0xf1,0x00,0x00]
2023 @ CHECK: sbc    r1, r2, #255            @ encoding: [0x62,0xf1,0xff,0x01]
2024 @ CHECK: sbc    r3, r7, #5570645        @ encoding: [0x67,0xf1,0x55,0x13]
2025 @ CHECK: sbc    r8, r12, #2852170240    @ encoding: [0x6c,0xf1,0xaa,0x28]
2026 @ CHECK: sbc    r9, r7, #2779096485     @ encoding: [0x67,0xf1,0xa5,0x39]
2027 @ CHECK: sbc    r5, r3, #2264924160     @ encoding: [0x63,0xf1,0x07,0x45]
2028 @ CHECK: sbc    r4, r2, #2139095040     @ encoding: [0x62,0xf1,0xff,0x44]
2029 @ CHECK: sbc    r4, r2, #1664           @ encoding: [0x62,0xf5,0xd0,0x64]
2030
2031
2032 @------------------------------------------------------------------------------
2033 @ SBC (register)
2034 @------------------------------------------------------------------------------
2035         sbc r4, r5, r6
2036         sbcs r4, r5, r6
2037         sbc.w r9, r1, r3
2038         sbcs.w r9, r1, r3
2039         sbc     r0, r1, r3, ror #4
2040         sbcs    r0, r1, r3, lsl #7
2041         sbc.w   r0, r1, r3, lsr #31
2042         sbcs.w  r0, r1, r3, asr #32
2043
2044 @ CHECK: sbc.w  r4, r5, r6              @ encoding: [0x65,0xeb,0x06,0x04]
2045 @ CHECK: sbcs.w r4, r5, r6              @ encoding: [0x75,0xeb,0x06,0x04]
2046 @ CHECK: sbc.w  r9, r1, r3              @ encoding: [0x61,0xeb,0x03,0x09]
2047 @ CHECK: sbcs.w r9, r1, r3              @ encoding: [0x71,0xeb,0x03,0x09]
2048 @ CHECK: sbc.w  r0, r1, r3, ror #4      @ encoding: [0x61,0xeb,0x33,0x10]
2049 @ CHECK: sbcs.w r0, r1, r3, lsl #7      @ encoding: [0x71,0xeb,0xc3,0x10]
2050 @ CHECK: sbc.w  r0, r1, r3, lsr #31     @ encoding: [0x61,0xeb,0xd3,0x70]
2051 @ CHECK: sbcs.w r0, r1, r3, asr #32     @ encoding: [0x71,0xeb,0x23,0x00]
2052
2053
2054 @------------------------------------------------------------------------------
2055 @ SBFX
2056 @------------------------------------------------------------------------------
2057         sbfx r4, r5, #16, #1
2058         it gt
2059         sbfxgt r4, r5, #16, #16
2060
2061 @ CHECK: sbfx   r4, r5, #16, #1         @ encoding: [0x45,0xf3,0x00,0x44]
2062 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2063 @ CHECK: sbfxgt r4, r5, #16, #16        @ encoding: [0x45,0xf3,0x0f,0x44]
2064
2065
2066 @------------------------------------------------------------------------------
2067 @ SEL
2068 @------------------------------------------------------------------------------
2069         sel r5, r9, r2
2070         it le
2071         selle r5, r9, r2
2072
2073 @ CHECK: sel    r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
2074 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
2075 @ CHECK: selle  r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
2076
2077
2078 @------------------------------------------------------------------------------
2079 @ SEV
2080 @------------------------------------------------------------------------------
2081         sev.w
2082         it eq
2083         seveq.w
2084
2085 @ CHECK: sev.w                           @ encoding: [0xaf,0xf3,0x04,0x80]
2086 @ CHECK: it     eq                       @ encoding: [0x08,0xbf]
2087 @ CHECK: seveq.w                         @ encoding: [0xaf,0xf3,0x04,0x80]
2088
2089
2090 @------------------------------------------------------------------------------
2091 @ SADD16/SADD8
2092 @------------------------------------------------------------------------------
2093         sadd16 r1, r2, r3
2094         sadd8 r1, r2, r3
2095         ite gt
2096         sadd16gt r1, r2, r3
2097         sadd8le r1, r2, r3
2098
2099 @ CHECK: sadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x03,0xf1]
2100 @ CHECK: sadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x03,0xf1]
2101 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
2102 @ CHECK: sadd16gt       r1, r2, r3      @ encoding: [0x92,0xfa,0x03,0xf1]
2103 @ CHECK: sadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x03,0xf1]
2104
2105
2106 @------------------------------------------------------------------------------
2107 @ SHASX
2108 @------------------------------------------------------------------------------
2109         shasx r4, r8, r2
2110         it gt
2111         shasxgt r4, r8, r2
2112         shaddsubx r4, r8, r2
2113         it gt
2114         shaddsubxgt r4, r8, r2
2115
2116 @ CHECK: shasx  r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
2117 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2118 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
2119 @ CHECK: shasx  r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
2120 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2121 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
2122
2123
2124 @------------------------------------------------------------------------------
2125 @ SHASX
2126 @------------------------------------------------------------------------------
2127         shsax r4, r8, r2
2128         it gt
2129         shsaxgt r4, r8, r2
2130         shsubaddx r4, r8, r2
2131         it gt
2132         shsubaddxgt r4, r8, r2
2133
2134 @ CHECK: shsax  r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
2135 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2136 @ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
2137 @ CHECK: shsax  r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
2138 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2139 @ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
2140
2141
2142 @------------------------------------------------------------------------------
2143 @ SHSUB16/SHSUB8
2144 @------------------------------------------------------------------------------
2145         shsub16 r4, r8, r2
2146         shsub8 r4, r8, r2
2147         itt gt
2148         shsub16gt r4, r8, r2
2149         shsub8gt r4, r8, r2
2150
2151 @ CHECK: shsub16 r4, r8, r2             @ encoding: [0xd8,0xfa,0x22,0xf4]
2152 @ CHECK: shsub8 r4, r8, r2              @ encoding: [0xc8,0xfa,0x22,0xf4]
2153 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
2154 @ CHECK: shsub16gt      r4, r8, r2      @ encoding: [0xd8,0xfa,0x22,0xf4]
2155 @ CHECK: shsub8gt       r4, r8, r2      @ encoding: [0xc8,0xfa,0x22,0xf4]
2156
2157
2158 @------------------------------------------------------------------------------
2159 @ SMLABB/SMLABT/SMLATB/SMLATT
2160 @------------------------------------------------------------------------------
2161         smlabb r3, r1, r9, r0
2162         smlabt r5, r6, r4, r1
2163         smlatb r4, r2, r3, r2
2164         smlatt r8, r3, r8, r4
2165         itete gt
2166         smlabbgt r3, r1, r9, r0
2167         smlabtle r5, r6, r4, r1
2168         smlatbgt r4, r2, r3, r2
2169         smlattle r8, r3, r8, r4
2170
2171 @ CHECK: smlabb r3, r1, r9, r0          @ encoding: [0x11,0xfb,0x09,0x03]
2172 @ CHECK: smlabt r5, r6, r4, r1          @ encoding: [0x16,0xfb,0x14,0x15]
2173 @ CHECK: smlatb r4, r2, r3, r2          @ encoding: [0x12,0xfb,0x23,0x24]
2174 @ CHECK: smlatt r8, r3, r8, r4          @ encoding: [0x13,0xfb,0x38,0x48]
2175 @ CHECK: itete  gt                      @ encoding: [0xcb,0xbf]
2176 @ CHECK: smlabbgt       r3, r1, r9, r0  @ encoding: [0x11,0xfb,0x09,0x03]
2177 @ CHECK: smlabtle       r5, r6, r4, r1  @ encoding: [0x16,0xfb,0x14,0x15]
2178 @ CHECK: smlatbgt       r4, r2, r3, r2  @ encoding: [0x12,0xfb,0x23,0x24]
2179 @ CHECK: smlattle       r8, r3, r8, r4  @ encoding: [0x13,0xfb,0x38,0x48]
2180
2181
2182 @------------------------------------------------------------------------------
2183 @ SMLAD/SMLADX
2184 @------------------------------------------------------------------------------
2185         smlad r2, r3, r5, r8
2186         smladx r2, r3, r5, r8
2187         itt hi
2188         smladhi r2, r3, r5, r8
2189         smladxhi r2, r3, r5, r8
2190
2191 @ CHECK: smlad  r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x05,0x82]
2192 @ CHECK: smladx r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x15,0x82]
2193 @ CHECK: itt    hi                      @ encoding: [0x84,0xbf]
2194 @ CHECK: smladhi r2, r3, r5, r8         @ encoding: [0x23,0xfb,0x05,0x82]
2195 @ CHECK: smladxhi       r2, r3, r5, r8  @ encoding: [0x23,0xfb,0x15,0x82]
2196
2197
2198 @------------------------------------------------------------------------------
2199 @ SMLAL
2200 @------------------------------------------------------------------------------
2201         smlal r2, r3, r5, r8
2202         it eq
2203         smlaleq r2, r3, r5, r8
2204
2205 @ CHECK: smlal  r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0x08,0x23]
2206 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2207 @ CHECK: smlaleq r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0x08,0x23]
2208
2209
2210 @------------------------------------------------------------------------------
2211 @ SMLALBB/SMLALBT/SMLALTB/SMLALTT
2212 @------------------------------------------------------------------------------
2213         smlalbb r3, r1, r9, r0
2214         smlalbt r5, r6, r4, r1
2215         smlaltb r4, r2, r3, r2
2216         smlaltt r8, r3, r8, r4
2217         iteet ge
2218         smlalbbge r3, r1, r9, r0
2219         smlalbtlt r5, r6, r4, r1
2220         smlaltblt r4, r2, r3, r2
2221         smlalttge r8, r3, r8, r4
2222
2223 @ CHECK: smlalbb r3, r1, r9, r0         @ encoding: [0xc9,0xfb,0x80,0x31]
2224 @ CHECK: smlalbt r5, r6, r4, r1         @ encoding: [0xc4,0xfb,0x91,0x56]
2225 @ CHECK: smlaltb r4, r2, r3, r2         @ encoding: [0xc3,0xfb,0xa2,0x42]
2226 @ CHECK: smlaltt r8, r3, r8, r4         @ encoding: [0xc8,0xfb,0xb4,0x83]
2227 @ CHECK: iteet  ge                      @ encoding: [0xad,0xbf]
2228 @ CHECK: smlalbbge      r3, r1, r9, r0  @ encoding: [0xc9,0xfb,0x80,0x31]
2229 @ CHECK: smlalbtlt      r5, r6, r4, r1  @ encoding: [0xc4,0xfb,0x91,0x56]
2230 @ CHECK: smlaltblt      r4, r2, r3, r2  @ encoding: [0xc3,0xfb,0xa2,0x42]
2231 @ CHECK: smlalttge      r8, r3, r8, r4  @ encoding: [0xc8,0xfb,0xb4,0x83]
2232
2233
2234 @------------------------------------------------------------------------------
2235 @ SMLALD/SMLALDX
2236 @------------------------------------------------------------------------------
2237         smlald r2, r3, r5, r8
2238         smlaldx r2, r3, r5, r8
2239         ite eq
2240         smlaldeq r2, r3, r5, r8
2241         smlaldxne r2, r3, r5, r8
2242
2243 @ CHECK: smlald r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0xc8,0x23]
2244 @ CHECK: smlaldx r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0xd8,0x23]
2245 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2246 @ CHECK: smlaldeq       r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xc8,0x23]
2247 @ CHECK: smlaldxne      r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xd8,0x23]
2248
2249
2250 @------------------------------------------------------------------------------
2251 @ SMLAWB/SMLAWT
2252 @------------------------------------------------------------------------------
2253         smlawb r2, r3, r10, r8
2254         smlawt r8, r3, r5, r9
2255         ite eq
2256         smlawbeq r2, r7, r5, r8
2257         smlawtne r1, r3, r0, r8
2258
2259 @ CHECK: smlawb r2, r3, r10, r8         @ encoding: [0x33,0xfb,0x0a,0x82]
2260 @ CHECK: smlawt r8, r3, r5, r9          @ encoding: [0x33,0xfb,0x15,0x98]
2261 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2262 @ CHECK: smlawbeq       r2, r7, r5, r8  @ encoding: [0x37,0xfb,0x05,0x82]
2263 @ CHECK: smlawtne       r1, r3, r0, r8  @ encoding: [0x33,0xfb,0x10,0x81]
2264
2265
2266 @------------------------------------------------------------------------------
2267 @ SMLSD/SMLSDX
2268 @------------------------------------------------------------------------------
2269         smlsd r2, r3, r5, r8
2270         smlsdx r2, r3, r5, r8
2271         ite le
2272         smlsdle r2, r3, r5, r8
2273         smlsdxgt r2, r3, r5, r8
2274
2275 @ CHECK: smlsd  r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x05,0x82]
2276 @ CHECK: smlsdx r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x15,0x82]
2277 @ CHECK: ite    le                      @ encoding: [0xd4,0xbf]
2278 @ CHECK: smlsdle        r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x05,0x82]
2279 @ CHECK: smlsdxgt       r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x15,0x82]
2280
2281
2282 @------------------------------------------------------------------------------
2283 @ SMLSLD/SMLSLDX
2284 @------------------------------------------------------------------------------
2285         smlsld r2, r9, r5, r1
2286         smlsldx r4, r11, r2, r8
2287         ite ge
2288         smlsldge r8, r2, r5, r6
2289         smlsldxlt r1, r0, r3, r8
2290
2291 @ CHECK: smlsld r2, r9, r5, r1          @ encoding: [0xd5,0xfb,0xc1,0x29]
2292 @ CHECK: smlsldx        r4, r11, r2, r8 @ encoding: [0xd2,0xfb,0xd8,0x4b]
2293 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2294 @ CHECK: smlsldge       r8, r2, r5, r6  @ encoding: [0xd5,0xfb,0xc6,0x82]
2295 @ CHECK: smlsldxlt      r1, r0, r3, r8  @ encoding: [0xd3,0xfb,0xd8,0x10]
2296
2297
2298 @------------------------------------------------------------------------------
2299 @ SMMLA/SMMLAR
2300 @------------------------------------------------------------------------------
2301         smmla r1, r2, r3, r4
2302         smmlar r4, r3, r2, r1
2303         ite lo
2304         smmlalo r1, r2, r3, r4
2305         smmlarcs r4, r3, r2, r1
2306
2307 @ CHECK: smmla  r1, r2, r3, r4          @ encoding: [0x52,0xfb,0x03,0x41]
2308 @ CHECK: smmlar r4, r3, r2, r1          @ encoding: [0x53,0xfb,0x12,0x14]
2309 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2310 @ CHECK: smmlalo        r1, r2, r3, r4  @ encoding: [0x52,0xfb,0x03,0x41]
2311 @ CHECK: smmlarhs       r4, r3, r2, r1  @ encoding: [0x53,0xfb,0x12,0x14]
2312
2313
2314 @------------------------------------------------------------------------------
2315 @ SMMLS/SMMLSR
2316 @------------------------------------------------------------------------------
2317         smmls r1, r2, r3, r4
2318         smmlsr r4, r3, r2, r1
2319         ite lo
2320         smmlslo r1, r2, r3, r4
2321         smmlsrcs r4, r3, r2, r1
2322
2323 @ CHECK: smmls  r1, r2, r3, r4          @ encoding: [0x62,0xfb,0x03,0x41]
2324 @ CHECK: smmlsr r4, r3, r2, r1          @ encoding: [0x63,0xfb,0x12,0x14]
2325 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2326 @ CHECK: smmlslo        r1, r2, r3, r4  @ encoding: [0x62,0xfb,0x03,0x41]
2327 @ CHECK: smmlsrhs       r4, r3, r2, r1  @ encoding: [0x63,0xfb,0x12,0x14]
2328
2329
2330 @------------------------------------------------------------------------------
2331 @ SMMUL/SMMULR
2332 @------------------------------------------------------------------------------
2333         smmul r2, r3, r4
2334         smmulr r3, r2, r1
2335         ite cc
2336         smmulcc r2, r3, r4
2337         smmulrhs r3, r2, r1
2338
2339 @ CHECK: smmul  r2, r3, r4              @ encoding: [0x53,0xfb,0x04,0xf2]
2340 @ CHECK: smmulr r3, r2, r1              @ encoding: [0x52,0xfb,0x11,0xf3]
2341 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2342 @ CHECK: smmullo        r2, r3, r4      @ encoding: [0x53,0xfb,0x04,0xf2]
2343 @ CHECK: smmulrhs       r3, r2, r1      @ encoding: [0x52,0xfb,0x11,0xf3]
2344
2345
2346 @------------------------------------------------------------------------------
2347 @ SMUAD/SMUADX
2348 @------------------------------------------------------------------------------
2349         smuad r2, r3, r4
2350         smuadx r3, r2, r1
2351         ite lt
2352         smuadlt r2, r3, r4
2353         smuadxge r3, r2, r1
2354
2355 @ CHECK: smuad  r2, r3, r4              @ encoding: [0x23,0xfb,0x04,0xf2]
2356 @ CHECK: smuadx r3, r2, r1              @ encoding: [0x22,0xfb,0x11,0xf3]
2357 @ CHECK: ite    lt                      @ encoding: [0xb4,0xbf]
2358 @ CHECK: smuadlt        r2, r3, r4      @ encoding: [0x23,0xfb,0x04,0xf2]
2359 @ CHECK: smuadxge       r3, r2, r1      @ encoding: [0x22,0xfb,0x11,0xf3]
2360
2361
2362 @------------------------------------------------------------------------------
2363 @ SMULBB/SMULBT/SMULTB/SMULTT
2364 @------------------------------------------------------------------------------
2365         smulbb r3, r9, r0
2366         smulbt r5, r4, r1
2367         smultb r4, r2, r2
2368         smultt r8, r3, r4
2369         itete ge
2370         smulbbge r1, r9, r0
2371         smulbtlt r5, r6, r4
2372         smultbge r2, r3, r2
2373         smulttlt r8, r3, r4
2374
2375 @ CHECK: smulbb r3, r9, r0              @ encoding: [0x19,0xfb,0x00,0xf3]
2376 @ CHECK: smulbt r5, r4, r1              @ encoding: [0x14,0xfb,0x11,0xf5]
2377 @ CHECK: smultb r4, r2, r2              @ encoding: [0x12,0xfb,0x22,0xf4]
2378 @ CHECK: smultt r8, r3, r4              @ encoding: [0x13,0xfb,0x34,0xf8]
2379 @ CHECK: itete  ge                      @ encoding: [0xab,0xbf]
2380 @ CHECK: smulbbge       r1, r9, r0      @ encoding: [0x19,0xfb,0x00,0xf1]
2381 @ CHECK: smulbtlt       r5, r6, r4      @ encoding: [0x16,0xfb,0x14,0xf5]
2382 @ CHECK: smultbge       r2, r3, r2      @ encoding: [0x13,0xfb,0x22,0xf2]
2383 @ CHECK: smulttlt       r8, r3, r4      @ encoding: [0x13,0xfb,0x34,0xf8]
2384
2385
2386 @------------------------------------------------------------------------------
2387 @ SMULL
2388 @------------------------------------------------------------------------------
2389         smull r3, r9, r0, r1
2390         it eq
2391         smulleq r8, r3, r4, r5
2392
2393 @ CHECK: smull  r3, r9, r0, r1          @ encoding: [0x80,0xfb,0x01,0x39]
2394 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2395 @ CHECK: smulleq r8, r3, r4, r5         @ encoding: [0x84,0xfb,0x05,0x83]
2396
2397
2398 @------------------------------------------------------------------------------
2399 @ SMULWB/SMULWT
2400 @------------------------------------------------------------------------------
2401         smulwb r3, r9, r0
2402         smulwt r3, r9, r2
2403         ite gt
2404         smulwbgt r3, r9, r0
2405         smulwtle r3, r9, r2
2406
2407 @ CHECK: smulwb r3, r9, r0              @ encoding: [0x39,0xfb,0x00,0xf3]
2408 @ CHECK: smulwt r3, r9, r2              @ encoding: [0x39,0xfb,0x12,0xf3]
2409 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
2410 @ CHECK: smulwbgt       r3, r9, r0      @ encoding: [0x39,0xfb,0x00,0xf3]
2411 @ CHECK: smulwtle       r3, r9, r2      @ encoding: [0x39,0xfb,0x12,0xf3]
2412
2413
2414 @------------------------------------------------------------------------------
2415 @ SMUSD/SMUSDX
2416 @------------------------------------------------------------------------------
2417         smusd r3, r0, r1
2418         smusdx r3, r9, r2
2419         ite eq
2420         smusdeq r8, r3, r2
2421         smusdxne r7, r4, r3
2422
2423 @ CHECK: smusd  r3, r0, r1              @ encoding: [0x40,0xfb,0x01,0xf3]
2424 @ CHECK: smusdx r3, r9, r2              @ encoding: [0x49,0xfb,0x12,0xf3]
2425 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2426 @ CHECK: smusdeq        r8, r3, r2      @ encoding: [0x43,0xfb,0x02,0xf8]
2427 @ CHECK: smusdxne       r7, r4, r3      @ encoding: [0x44,0xfb,0x13,0xf7]
2428
2429
2430 @------------------------------------------------------------------------------
2431 @ SRS
2432 @------------------------------------------------------------------------------
2433         srsdb sp, #1
2434         srsia sp, #0
2435
2436         srsdb sp!, #19
2437         srsia sp!, #2
2438
2439         srsea sp, #10
2440         srsfd sp, #9
2441
2442         srsea sp!, #5
2443         srsfd sp!, #5
2444
2445         srs sp, #5
2446         srs sp!, #5
2447
2448 @ CHECK: srsdb  sp, #1                  @ encoding: [0x0d,0xe8,0x01,0xc0]
2449 @ CHECK: srsia  sp, #0                  @ encoding: [0x8d,0xe9,0x00,0xc0]
2450 @ CHECK: srsdb  sp!, #19                @ encoding: [0x2d,0xe8,0x13,0xc0]
2451 @ CHECK: srsia  sp!, #2                 @ encoding: [0xad,0xe9,0x02,0xc0]
2452 @ CHECK: srsia  sp, #10                 @ encoding: [0x8d,0xe9,0x0a,0xc0]
2453 @ CHECK: srsdb  sp, #9                  @ encoding: [0x0d,0xe8,0x09,0xc0]
2454 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2455 @ CHECK: srsdb  sp!, #5                 @ encoding: [0x2d,0xe8,0x05,0xc0]
2456 @ CHECK: srsia  sp, #5                  @ encoding: [0x8d,0xe9,0x05,0xc0]
2457 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2458
2459         srsdb #1
2460         srsia #0
2461
2462         srsdb #19!
2463         srsia #2!
2464
2465         srsea #10
2466         srsfd #9
2467
2468         srsea #5!
2469         srsfd #5!
2470
2471         srs #5
2472         srs #5!
2473
2474 @ CHECK: srsdb  sp, #1                  @ encoding: [0x0d,0xe8,0x01,0xc0]
2475 @ CHECK: srsia  sp, #0                  @ encoding: [0x8d,0xe9,0x00,0xc0]
2476 @ CHECK: srsdb  sp!, #19                @ encoding: [0x2d,0xe8,0x13,0xc0]
2477 @ CHECK: srsia  sp!, #2                 @ encoding: [0xad,0xe9,0x02,0xc0]
2478 @ CHECK: srsia  sp, #10                 @ encoding: [0x8d,0xe9,0x0a,0xc0]
2479 @ CHECK: srsdb  sp, #9                  @ encoding: [0x0d,0xe8,0x09,0xc0]
2480 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2481 @ CHECK: srsdb  sp!, #5                 @ encoding: [0x2d,0xe8,0x05,0xc0]
2482 @ CHECK: srsia  sp, #5                  @ encoding: [0x8d,0xe9,0x05,0xc0]
2483 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2484
2485
2486 @------------------------------------------------------------------------------
2487 @ SSAT
2488 @------------------------------------------------------------------------------
2489         ssat    r8, #1, r10
2490         ssat    r8, #1, r10, lsl #0
2491         ssat    r8, #1, r10, lsl #31
2492         ssat    r8, #1, r10, asr #1
2493
2494 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2495 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2496 @ CHECK: ssat   r8, #1, r10, lsl #31    @ encoding: [0x0a,0xf3,0xc0,0x78]
2497 @ CHECK: ssat   r8, #1, r10, asr #1     @ encoding: [0x2a,0xf3,0x40,0x08]
2498
2499
2500 @------------------------------------------------------------------------------
2501 @ SSAT16
2502 @------------------------------------------------------------------------------
2503         ssat16  r2, #1, r7
2504         ssat16  r3, #16, r5
2505
2506 @ CHECK: ssat16 r2, #1, r7              @ encoding: [0x27,0xf3,0x00,0x02]
2507 @ CHECK: ssat16 r3, #16, r5             @ encoding: [0x25,0xf3,0x0f,0x03]
2508
2509
2510 @------------------------------------------------------------------------------
2511 @ SSAX
2512 @------------------------------------------------------------------------------
2513         ssubaddx r2, r3, r4
2514         it lt
2515         ssubaddxlt r2, r3, r4
2516         ssax r2, r3, r4
2517         it lt
2518         ssaxlt r2, r3, r4
2519
2520 @ CHECK: ssax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2521 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2522 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2523 @ CHECK: ssax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2524 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2525 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2526
2527
2528 @------------------------------------------------------------------------------
2529 @ SSUB16/SSUB8
2530 @------------------------------------------------------------------------------
2531         ssub16 r1, r0, r6
2532         ssub8 r9, r2, r4
2533         ite ne
2534         ssub16ne r5, r3, r2
2535         ssub8eq r5, r1, r2
2536
2537 @ CHECK: ssub16 r1, r0, r6              @ encoding: [0xd0,0xfa,0x06,0xf1]
2538 @ CHECK: ssub8  r9, r2, r4              @ encoding: [0xc2,0xfa,0x04,0xf9]
2539 @ CHECK: ite    ne                      @ encoding: [0x14,0xbf]
2540 @ CHECK: ssub16ne       r5, r3, r2      @ encoding: [0xd3,0xfa,0x02,0xf5]
2541 @ CHECK: ssub8eq        r5, r1, r2      @ encoding: [0xc1,0xfa,0x02,0xf5]
2542
2543
2544 @------------------------------------------------------------------------------
2545 @ STC{L}/STC2{L}
2546 @------------------------------------------------------------------------------
2547         stc2 p0, c8, [r1, #4]
2548         stc2 p1, c7, [r2]
2549         stc2 p2, c6, [r3, #-224]
2550         stc2 p3, c5, [r4, #-120]!
2551         stc2 p4, c4, [r5], #16
2552         stc2 p5, c3, [r6], #-72
2553         stc2l p6, c2, [r7, #4]
2554         stc2l p7, c1, [r8]
2555         stc2l p8, c0, [r9, #-224]
2556         stc2l p9, c1, [r10, #-120]!
2557         stc2l p10, c2, [r11], #16
2558         stc2l p11, c3, [r12], #-72
2559
2560         stc p12, c4, [r0, #4]
2561         stc p13, c5, [r1]
2562         stc p14, c6, [r2, #-224]
2563         stc p15, c7, [r3, #-120]!
2564         stc p5, c8, [r4], #16
2565         stc p4, c9, [r5], #-72
2566         stcl p3, c10, [r6, #4]
2567         stcl p2, c11, [r7]
2568         stcl p1, c12, [r8, #-224]
2569         stcl p0, c13, [r9, #-120]!
2570         stcl p6, c14, [r10], #16
2571         stcl p7, c15, [r11], #-72
2572
2573         stc2 p2, c8, [r1], { 25 }
2574
2575 @ CHECK: stc2   p0, c8, [r1, #4]        @ encoding: [0x81,0xfd,0x01,0x80]
2576 @ CHECK: stc2   p1, c7, [r2]            @ encoding: [0x82,0xfd,0x00,0x71]
2577 @ CHECK: stc2   p2, c6, [r3, #-224]     @ encoding: [0x03,0xfd,0x38,0x62]
2578 @ CHECK: stc2   p3, c5, [r4, #-120]!    @ encoding: [0x24,0xfd,0x1e,0x53]
2579 @ CHECK: stc2   p4, c4, [r5], #16       @ encoding: [0xa5,0xfc,0x04,0x44]
2580 @ CHECK: stc2   p5, c3, [r6], #-72      @ encoding: [0x26,0xfc,0x12,0x35]
2581 @ CHECK: stc2l  p6, c2, [r7, #4]        @ encoding: [0xc7,0xfd,0x01,0x26]
2582 @ CHECK: stc2l  p7, c1, [r8]            @ encoding: [0xc8,0xfd,0x00,0x17]
2583 @ CHECK: stc2l  p8, c0, [r9, #-224]     @ encoding: [0x49,0xfd,0x38,0x08]
2584 @ CHECK: stc2l  p9, c1, [r10, #-120]!   @ encoding: [0x6a,0xfd,0x1e,0x19]
2585 @ CHECK: stc2l  p10, c2, [r11], #16     @ encoding: [0xeb,0xfc,0x04,0x2a]
2586 @ CHECK: stc2l  p11, c3, [r12], #-72    @ encoding: [0x6c,0xfc,0x12,0x3b]
2587
2588 @ CHECK: stc    p12, c4, [r0, #4]       @ encoding: [0x80,0xed,0x01,0x4c]
2589 @ CHECK: stc    p13, c5, [r1]           @ encoding: [0x81,0xed,0x00,0x5d]
2590 @ CHECK: stc    p14, c6, [r2, #-224]    @ encoding: [0x02,0xed,0x38,0x6e]
2591 @ CHECK: stc    p15, c7, [r3, #-120]!   @ encoding: [0x23,0xed,0x1e,0x7f]
2592 @ CHECK: stc    p5, c8, [r4], #16       @ encoding: [0xa4,0xec,0x04,0x85]
2593 @ CHECK: stc    p4, c9, [r5], #-72      @ encoding: [0x25,0xec,0x12,0x94]
2594 @ CHECK: stcl   p3, c10, [r6, #4]       @ encoding: [0xc6,0xed,0x01,0xa3]
2595 @ CHECK: stcl   p2, c11, [r7]           @ encoding: [0xc7,0xed,0x00,0xb2]
2596 @ CHECK: stcl   p1, c12, [r8, #-224]    @ encoding: [0x48,0xed,0x38,0xc1]
2597 @ CHECK: stcl   p0, c13, [r9, #-120]!   @ encoding: [0x69,0xed,0x1e,0xd0]
2598 @ CHECK: stcl   p6, c14, [r10], #16     @ encoding: [0xea,0xec,0x04,0xe6]
2599 @ CHECK: stcl   p7, c15, [r11], #-72    @ encoding: [0x6b,0xec,0x12,0xf7]
2600
2601 @ CHECK: stc2   p2, c8, [r1], {25}      @ encoding: [0x81,0xfc,0x19,0x82]
2602
2603
2604 @------------------------------------------------------------------------------
2605 @ STMIA
2606 @------------------------------------------------------------------------------
2607         stmia.w r4, {r4, r5, r8, r9}
2608         stmia.w r4, {r5, r6}
2609         stmia.w r5!, {r3, r8}
2610         stm.w r4, {r4, r5, r8, r9}
2611         stm.w r4, {r5, r6}
2612         stm.w r5!, {r3, r8}
2613         stm.w r5!, {r1, r2}
2614         stm.w r2, {r1, r2}
2615
2616         stmia r4, {r4, r5, r8, r9}
2617         stmia r4, {r5, r6}
2618         stmia r5!, {r3, r8}
2619         stm r4, {r4, r5, r8, r9}
2620         stm r4, {r5, r6}
2621         stm r5!, {r3, r8}
2622         stmea r5!, {r3, r8}
2623
2624 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2625 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2626 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2627 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2628 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2629 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2630 @ CHECK: stm.w  r5!, {r1, r2}           @ encoding: [0xa5,0xe8,0x06,0x00]
2631 @ CHECK: stm.w  r2, {r1, r2}            @ encoding: [0x82,0xe8,0x06,0x00]
2632
2633 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2634 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2635 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2636 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2637 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2638 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2639 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2640
2641
2642 @------------------------------------------------------------------------------
2643 @ STMDB
2644 @------------------------------------------------------------------------------
2645         stmdb r4, {r4, r5, r8, r9}
2646         stmdb r4, {r5, r6}
2647         stmdb r5!, {r3, r8}
2648         stmea r5!, {r3, r8}
2649         stmdb.w r5, {r0, r1}
2650
2651 @ CHECK: stmdb  r4, {r4, r5, r8, r9}    @ encoding: [0x04,0xe9,0x30,0x03]
2652 @ CHECK: stmdb  r4, {r5, r6}            @ encoding: [0x04,0xe9,0x60,0x00]
2653 @ CHECK: stmdb  r5!, {r3, r8}           @ encoding: [0x25,0xe9,0x08,0x01]
2654 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2655 @ CHECK: stmdb  r5, {r0, r1}            @ encoding: [0x05,0xe9,0x03,0x00]
2656
2657
2658 @------------------------------------------------------------------------------
2659 @ STR(immediate)
2660 @------------------------------------------------------------------------------
2661         str r5, [r5, #-4]
2662         str r5, [r6, #32]
2663         str r5, [r6, #33]
2664         str r5, [r6, #257]
2665         str.w pc, [r7, #257]
2666         str r2, [r4, #255]!
2667         str r8, [sp, #4]!
2668         str lr, [sp, #-4]!
2669         str r2, [r4], #255
2670         str r8, [sp], #4
2671         str lr, [sp], #-4
2672
2673 @ CHECK: str    r5, [r5, #-4]           @ encoding: [0x45,0xf8,0x04,0x5c]
2674 @ CHECK: str    r5, [r6, #32]           @ encoding: [0x35,0x62]
2675 @ CHECK: str.w  r5, [r6, #33]           @ encoding: [0xc6,0xf8,0x21,0x50]
2676 @ CHECK: str.w  r5, [r6, #257]          @ encoding: [0xc6,0xf8,0x01,0x51]
2677 @ CHECK: str.w  pc, [r7, #257]          @ encoding: [0xc7,0xf8,0x01,0xf1]
2678 @ CHECK: str    r2, [r4, #255]!         @ encoding: [0x44,0xf8,0xff,0x2f]
2679 @ CHECK: str    r8, [sp, #4]!           @ encoding: [0x4d,0xf8,0x04,0x8f]
2680 @ CHECK: str    lr, [sp, #-4]!          @ encoding: [0x4d,0xf8,0x04,0xed]
2681 @ CHECK: str    r2, [r4], #255          @ encoding: [0x44,0xf8,0xff,0x2b]
2682 @ CHECK: str    r8, [sp], #4            @ encoding: [0x4d,0xf8,0x04,0x8b]
2683 @ CHECK: str    lr, [sp], #-4           @ encoding: [0x4d,0xf8,0x04,0xe9]
2684
2685
2686 @------------------------------------------------------------------------------
2687 @ STR(register)
2688 @------------------------------------------------------------------------------
2689         str r1, [r8, r1]
2690         str.w r4, [r5, r2]
2691         str r6, [r0, r2, lsl #3]
2692         str r8, [r8, r2, lsl #2]
2693         str r7, [sp, r2, lsl #1]
2694         str r7, [sp, r2, lsl #0]
2695
2696 @ CHECK: str.w  r1, [r8, r1]            @ encoding: [0x48,0xf8,0x01,0x10]
2697 @ CHECK: str.w  r4, [r5, r2]            @ encoding: [0x45,0xf8,0x02,0x40]
2698 @ CHECK: str.w  r6, [r0, r2, lsl #3]    @ encoding: [0x40,0xf8,0x32,0x60]
2699 @ CHECK: str.w  r8, [r8, r2, lsl #2]    @ encoding: [0x48,0xf8,0x22,0x80]
2700 @ CHECK: str.w  r7, [sp, r2, lsl #1]    @ encoding: [0x4d,0xf8,0x12,0x70]
2701 @ CHECK: str.w  r7, [sp, r2]            @ encoding: [0x4d,0xf8,0x02,0x70]
2702
2703
2704 @------------------------------------------------------------------------------
2705 @ STRB(immediate)
2706 @------------------------------------------------------------------------------
2707         strb r5, [r5, #-4]
2708         strb r5, [r6, #32]
2709         strb r5, [r6, #33]
2710         strb r5, [r6, #257]
2711         strb.w lr, [r7, #257]
2712         strb r5, [r8, #255]!
2713         strb r2, [r5, #4]!
2714         strb r1, [r4, #-4]!
2715         strb lr, [r3], #255
2716         strb r9, [r2], #4
2717         strb r3, [sp], #-4
2718         strb r4, [r8, #-0]!
2719         strb r1, [r0], #-0
2720
2721 @ CHECK: strb   r5, [r5, #-4]           @ encoding: [0x05,0xf8,0x04,0x5c]
2722 @ CHECK: strb.w r5, [r6, #32]           @ encoding: [0x86,0xf8,0x20,0x50]
2723 @ CHECK: strb.w r5, [r6, #33]           @ encoding: [0x86,0xf8,0x21,0x50]
2724 @ CHECK: strb.w r5, [r6, #257]          @ encoding: [0x86,0xf8,0x01,0x51]
2725 @ CHECK: strb.w lr, [r7, #257]          @ encoding: [0x87,0xf8,0x01,0xe1]
2726 @ CHECK: strb   r5, [r8, #255]!         @ encoding: [0x08,0xf8,0xff,0x5f]
2727 @ CHECK: strb   r2, [r5, #4]!           @ encoding: [0x05,0xf8,0x04,0x2f]
2728 @ CHECK: strb   r1, [r4, #-4]!          @ encoding: [0x04,0xf8,0x04,0x1d]
2729 @ CHECK: strb   lr, [r3], #255          @ encoding: [0x03,0xf8,0xff,0xeb]
2730 @ CHECK: strb   r9, [r2], #4            @ encoding: [0x02,0xf8,0x04,0x9b]
2731 @ CHECK: strb   r3, [sp], #-4           @ encoding: [0x0d,0xf8,0x04,0x39]
2732 @ CHECK: strb   r4, [r8, #-0]!          @ encoding: [0x08,0xf8,0x00,0x4d]
2733 @ CHECK: strb   r1, [r0], #-0           @ encoding: [0x00,0xf8,0x00,0x19]
2734
2735
2736 @------------------------------------------------------------------------------
2737 @ STRB(register)
2738 @------------------------------------------------------------------------------
2739         strb r1, [r8, r1]
2740         strb.w r4, [r5, r2]
2741         strb r6, [r0, r2, lsl #3]
2742         strb r8, [r8, r2, lsl #2]
2743         strb r7, [sp, r2, lsl #1]
2744         strb r7, [sp, r2, lsl #0]
2745
2746 @ CHECK: strb.w r1, [r8, r1]            @ encoding: [0x08,0xf8,0x01,0x10]
2747 @ CHECK: strb.w r4, [r5, r2]            @ encoding: [0x05,0xf8,0x02,0x40]
2748 @ CHECK: strb.w r6, [r0, r2, lsl #3]    @ encoding: [0x00,0xf8,0x32,0x60]
2749 @ CHECK: strb.w r8, [r8, r2, lsl #2]    @ encoding: [0x08,0xf8,0x22,0x80]
2750 @ CHECK: strb.w r7, [sp, r2, lsl #1]    @ encoding: [0x0d,0xf8,0x12,0x70]
2751 @ CHECK: strb.w r7, [sp, r2]            @ encoding: [0x0d,0xf8,0x02,0x70]
2752
2753
2754 @------------------------------------------------------------------------------
2755 @ STRBT
2756 @------------------------------------------------------------------------------
2757         strbt r1, [r2]
2758         strbt r1, [r8, #0]
2759         strbt r1, [r8, #3]
2760         strbt r1, [r8, #255]
2761
2762 @ CHECK: strbt  r1, [r2]                @ encoding: [0x02,0xf8,0x00,0x1e]
2763 @ CHECK: strbt  r1, [r8]                @ encoding: [0x08,0xf8,0x00,0x1e]
2764 @ CHECK: strbt  r1, [r8, #3]            @ encoding: [0x08,0xf8,0x03,0x1e]
2765 @ CHECK: strbt  r1, [r8, #255]          @ encoding: [0x08,0xf8,0xff,0x1e]
2766
2767
2768 @------------------------------------------------------------------------------
2769 @ STRD
2770 @------------------------------------------------------------------------------
2771         strd r3, r5, [r6, #24]
2772         strd r3, r5, [r6, #24]!
2773         strd r3, r5, [r6], #4
2774         strd r3, r5, [r6], #-8
2775         strd r3, r5, [r6]
2776         strd r8, r1, [r3, #0]
2777         strd r0, r1, [r2, #-0]
2778         strd r0, r1, [r2, #-0]!
2779         strd r0, r1, [r2], #-0
2780
2781 @ CHECK: strd   r3, r5, [r6, #24]       @ encoding: [0xc6,0xe9,0x06,0x35]
2782 @ CHECK: strd   r3, r5, [r6, #24]!      @ encoding: [0xe6,0xe9,0x06,0x35]
2783 @ CHECK: strd   r3, r5, [r6], #4        @ encoding: [0xe6,0xe8,0x01,0x35]
2784 @ CHECK: strd   r3, r5, [r6], #-8       @ encoding: [0x66,0xe8,0x02,0x35]
2785 @ CHECK: strd   r3, r5, [r6]            @ encoding: [0xc6,0xe9,0x00,0x35]
2786 @ CHECK: strd   r8, r1, [r3]            @ encoding: [0xc3,0xe9,0x00,0x81]
2787 @ CHECK: strd   r0, r1, [r2, #-0]       @ encoding: [0x42,0xe9,0x00,0x01]
2788 @ CHECK: strd   r0, r1, [r2, #-0]!      @ encoding: [0x62,0xe9,0x00,0x01]
2789 @ CHECK: strd   r0, r1, [r2], #-0       @ encoding: [0x62,0xe8,0x00,0x01]
2790
2791
2792 @------------------------------------------------------------------------------
2793 @ STREX/STREXB/STREXH/STREXD
2794 @------------------------------------------------------------------------------
2795         strex r1, r8, [r4]
2796         strex r8, r2, [r4, #0]
2797         strex r2, r12, [sp, #128]
2798         strexb r5, r1, [r7]
2799         strexh r9, r7, [r12]
2800         strexd r9, r3, r6, [r4]
2801
2802 @ CHECK: strex  r1, r8, [r4]            @ encoding: [0x44,0xe8,0x00,0x81]
2803 @ CHECK: strex  r8, r2, [r4]            @ encoding: [0x44,0xe8,0x00,0x28]
2804 @ CHECK: strex  r2, r12, [sp, #128]     @ encoding: [0x4d,0xe8,0x20,0xc2]
2805 @ CHECK: strexb r5, r1, [r7]            @ encoding: [0xc7,0xe8,0x45,0x1f]
2806 @ CHECK: strexh r9, r7, [r12]           @ encoding: [0xcc,0xe8,0x59,0x7f]
2807 @ CHECK: strexd r9, r3, r6, [r4]        @ encoding: [0xc4,0xe8,0x79,0x36]
2808
2809
2810 @------------------------------------------------------------------------------
2811 @ STRH(immediate)
2812 @------------------------------------------------------------------------------
2813         strh r5, [r5, #-4]
2814         strh r5, [r6, #32]
2815         strh r5, [r6, #33]
2816         strh r5, [r6, #257]
2817         strh.w lr, [r7, #257]
2818         strh r5, [r8, #255]!
2819         strh r2, [r5, #4]!
2820         strh r1, [r4, #-4]!
2821         strh lr, [r3], #255
2822         strh r9, [r2], #4
2823         strh r3, [sp], #-4
2824
2825 @ CHECK: strh   r5, [r5, #-4]           @ encoding: [0x25,0xf8,0x04,0x5c]
2826 @ CHECK: strh   r5, [r6, #32]           @ encoding: [0x35,0x84]
2827 @ CHECK: strh.w r5, [r6, #33]           @ encoding: [0xa6,0xf8,0x21,0x50]
2828 @ CHECK: strh.w r5, [r6, #257]          @ encoding: [0xa6,0xf8,0x01,0x51]
2829 @ CHECK: strh.w lr, [r7, #257]          @ encoding: [0xa7,0xf8,0x01,0xe1]
2830 @ CHECK: strh   r5, [r8, #255]!         @ encoding: [0x28,0xf8,0xff,0x5f]
2831 @ CHECK: strh   r2, [r5, #4]!           @ encoding: [0x25,0xf8,0x04,0x2f]
2832 @ CHECK: strh   r1, [r4, #-4]!          @ encoding: [0x24,0xf8,0x04,0x1d]
2833 @ CHECK: strh   lr, [r3], #255          @ encoding: [0x23,0xf8,0xff,0xeb]
2834 @ CHECK: strh   r9, [r2], #4            @ encoding: [0x22,0xf8,0x04,0x9b]
2835 @ CHECK: strh   r3, [sp], #-4           @ encoding: [0x2d,0xf8,0x04,0x39]
2836
2837
2838 @------------------------------------------------------------------------------
2839 @ STRH(register)
2840 @------------------------------------------------------------------------------
2841         strh r1, [r8, r1]
2842         strh.w r4, [r5, r2]
2843         strh r6, [r0, r2, lsl #3]
2844         strh r8, [r8, r2, lsl #2]
2845         strh r7, [sp, r2, lsl #1]
2846         strh r7, [sp, r2, lsl #0]
2847
2848 @ CHECK: strh.w r1, [r8, r1]            @ encoding: [0x28,0xf8,0x01,0x10]
2849 @ CHECK: strh.w r4, [r5, r2]            @ encoding: [0x25,0xf8,0x02,0x40]
2850 @ CHECK: strh.w r6, [r0, r2, lsl #3]    @ encoding: [0x20,0xf8,0x32,0x60]
2851 @ CHECK: strh.w r8, [r8, r2, lsl #2]    @ encoding: [0x28,0xf8,0x22,0x80]
2852 @ CHECK: strh.w r7, [sp, r2, lsl #1]    @ encoding: [0x2d,0xf8,0x12,0x70]
2853 @ CHECK: strh.w r7, [sp, r2]            @ encoding: [0x2d,0xf8,0x02,0x70]
2854
2855
2856 @------------------------------------------------------------------------------
2857 @ STRHT
2858 @------------------------------------------------------------------------------
2859         strht r1, [r2]
2860         strht r1, [r8, #0]
2861         strht r1, [r8, #3]
2862         strht r1, [r8, #255]
2863
2864 @ CHECK: strht  r1, [r2]                @ encoding: [0x22,0xf8,0x00,0x1e]
2865 @ CHECK: strht  r1, [r8]                @ encoding: [0x28,0xf8,0x00,0x1e]
2866 @ CHECK: strht  r1, [r8, #3]            @ encoding: [0x28,0xf8,0x03,0x1e]
2867 @ CHECK: strht  r1, [r8, #255]          @ encoding: [0x28,0xf8,0xff,0x1e]
2868
2869
2870 @------------------------------------------------------------------------------
2871 @ STRT
2872 @------------------------------------------------------------------------------
2873         strt r1, [r2]
2874         strt r1, [r8, #0]
2875         strt r1, [r8, #3]
2876         strt r1, [r8, #255]
2877
2878 @ CHECK: strt   r1, [r2]                @ encoding: [0x42,0xf8,0x00,0x1e]
2879 @ CHECK: strt   r1, [r8]                @ encoding: [0x48,0xf8,0x00,0x1e]
2880 @ CHECK: strt   r1, [r8, #3]            @ encoding: [0x48,0xf8,0x03,0x1e]
2881 @ CHECK: strt   r1, [r8, #255]          @ encoding: [0x48,0xf8,0xff,0x1e]
2882
2883
2884 @------------------------------------------------------------------------------
2885 @ SUB (immediate)
2886 @------------------------------------------------------------------------------
2887         itet eq
2888         subeq r1, r2, #4
2889         subwne r5, r3, #1023
2890         subeq r4, r5, #293
2891         sub r2, sp, #1024
2892         sub r2, r8, #0xff00
2893         sub r2, r3, #257
2894         subw r2, r3, #257
2895         sub r12, r6, #0x100
2896         subw r12, r6, #0x100
2897         subs r1, r2, #0x1f0
2898         sub r2, #1
2899         sub r0, r0, #32
2900         subs r2, r2, #56
2901         subs r2, #56
2902
2903 @ CHECK: itet   eq                      @ encoding: [0x0a,0xbf]
2904 @ CHECK: subeq  r1, r2, #4              @ encoding: [0x11,0x1f]
2905 @ CHECK: subwne r5, r3, #1023           @ encoding: [0xa3,0xf2,0xff,0x35]
2906 @ CHECK: subweq r4, r5, #293            @ encoding: [0xa5,0xf2,0x25,0x14]
2907 @ CHECK: sub.w  r2, sp, #1024           @ encoding: [0xad,0xf5,0x80,0x62]
2908 @ CHECK: sub.w  r2, r8, #65280          @ encoding: [0xa8,0xf5,0x7f,0x42]
2909 @ CHECK: subw   r2, r3, #257            @ encoding: [0xa3,0xf2,0x01,0x12]
2910 @ CHECK: subw   r2, r3, #257            @ encoding: [0xa3,0xf2,0x01,0x12]
2911 @ CHECK: sub.w  r12, r6, #256           @ encoding: [0xa6,0xf5,0x80,0x7c]
2912 @ CHECK: subw   r12, r6, #256           @ encoding: [0xa6,0xf2,0x00,0x1c]
2913 @ CHECK: subs.w r1, r2, #496            @ encoding: [0xb2,0xf5,0xf8,0x71]
2914 @ CHECK: sub.w  r2, r2, #1              @ encoding: [0xa2,0xf1,0x01,0x02]
2915 @ CHECK: sub.w  r0, r0, #32             @ encoding: [0xa0,0xf1,0x20,0x00]
2916 @ CHECK: subs   r2, #56                 @ encoding: [0x38,0x3a]
2917 @ CHECK: subs   r2, #56                 @ encoding: [0x38,0x3a]
2918
2919
2920 @------------------------------------------------------------------------------
2921 @ SUB (register)
2922 @------------------------------------------------------------------------------
2923         sub r4, r5, r6
2924         sub r4, r5, r6, lsl #5
2925         sub r4, r5, r6, lsr #5
2926         sub.w r4, r5, r6, lsr #5
2927         sub r4, r5, r6, asr #5
2928         sub r4, r5, r6, ror #5
2929         sub.w r5, r2, r12, rrx
2930         sub r2, sp, ip
2931         sub sp, sp, ip
2932         sub sp, ip
2933         sub.w r2, sp, ip
2934         sub.w sp, sp, ip
2935         sub.w sp, ip
2936
2937 @ CHECK: sub.w  r4, r5, r6              @ encoding: [0xa5,0xeb,0x06,0x04]
2938 @ CHECK: sub.w  r4, r5, r6, lsl #5      @ encoding: [0xa5,0xeb,0x46,0x14]
2939 @ CHECK: sub.w  r4, r5, r6, lsr #5      @ encoding: [0xa5,0xeb,0x56,0x14]
2940 @ CHECK: sub.w  r4, r5, r6, lsr #5      @ encoding: [0xa5,0xeb,0x56,0x14]
2941 @ CHECK: sub.w  r4, r5, r6, asr #5      @ encoding: [0xa5,0xeb,0x66,0x14]
2942 @ CHECK: sub.w  r4, r5, r6, ror #5      @ encoding: [0xa5,0xeb,0x76,0x14]
2943 @ CHECK: sub.w r5, r2, r12, rrx         @ encoding: [0xa2,0xeb,0x3c,0x05]
2944 @ CHECK: sub.w  r2, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x02]
2945 @ CHECK: sub.w  sp, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x0d]
2946 @ CHECK: sub.w  sp, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x0d]
2947 @ CHECK: sub.w  r2, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x02]
2948 @ CHECK: sub.w  sp, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x0d]
2949 @ CHECK: sub.w  sp, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x0d]
2950
2951
2952 @------------------------------------------------------------------------------
2953 @ SVC
2954 @------------------------------------------------------------------------------
2955         svc #0
2956         ite eq
2957         svceq #255
2958         swine #33
2959
2960 @ CHECK: svc    #0                      @ encoding: [0x00,0xdf]
2961 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2962 @ CHECK: svceq  #255                    @ encoding: [0xff,0xdf]
2963 @ CHECK: svcne  #33                     @ encoding: [0x21,0xdf]
2964
2965
2966 @------------------------------------------------------------------------------
2967 @ SXTAB
2968 @------------------------------------------------------------------------------
2969         sxtab r2, r3, r4
2970         sxtab r4, r5, r6, ror #0
2971         it lt
2972         sxtablt r6, r2, r9, ror #8
2973         sxtab r5, r1, r4, ror #16
2974         sxtab r7, r8, r3, ror #24
2975
2976 @ CHECK: sxtab  r2, r3, r4              @ encoding: [0x43,0xfa,0x84,0xf2]
2977 @ CHECK: sxtab  r4, r5, r6              @ encoding: [0x45,0xfa,0x86,0xf4]
2978 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2979 @ CHECK: sxtablt r6, r2, r9, ror #8     @ encoding: [0x42,0xfa,0x99,0xf6]
2980 @ CHECK: sxtab  r5, r1, r4, ror #16     @ encoding: [0x41,0xfa,0xa4,0xf5]
2981 @ CHECK: sxtab  r7, r8, r3, ror #24     @ encoding: [0x48,0xfa,0xb3,0xf7]
2982
2983
2984 @------------------------------------------------------------------------------
2985 @ SXTAB16
2986 @------------------------------------------------------------------------------
2987         sxtab16 r6, r2, r7, ror #0
2988         sxtab16 r3, r5, r8, ror #8
2989         sxtab16 r3, r2, r1, ror #16
2990         ite ne
2991         sxtab16ne r0, r1, r4
2992         sxtab16eq r1, r2, r3, ror #24
2993
2994 @ CHECK: sxtab16 r6, r2, r7             @ encoding: [0x22,0xfa,0x87,0xf6]
2995 @ CHECK: sxtab16 r3, r5, r8, ror #8     @ encoding: [0x25,0xfa,0x98,0xf3]
2996 @ CHECK: sxtab16 r3, r2, r1, ror #16    @ encoding: [0x22,0xfa,0xa1,0xf3]
2997 @ CHECK: ite    ne                      @ encoding: [0x14,0xbf]
2998 @ CHECK: sxtab16ne r0, r1, r4           @ encoding: [0x21,0xfa,0x84,0xf0]
2999 @ CHECK: sxtab16eq r1, r2, r3, ror #24  @ encoding: [0x22,0xfa,0xb3,0xf1]
3000
3001
3002 @------------------------------------------------------------------------------
3003 @ SXTAH
3004 @------------------------------------------------------------------------------
3005         sxtah r1, r3, r9
3006         sxtah r3, r8, r3, ror #8
3007         sxtah r9, r3, r3, ror #24
3008         ite hi
3009         sxtahhi r6, r1, r6, ror #0
3010         sxtahls r2, r2, r4, ror #16
3011
3012 @ CHECK: sxtah  r1, r3, r9              @ encoding: [0x03,0xfa,0x89,0xf1]
3013 @ CHECK: sxtah  r3, r8, r3, ror #8      @ encoding: [0x08,0xfa,0x93,0xf3]
3014 @ CHECK: sxtah  r9, r3, r3, ror #24     @ encoding: [0x03,0xfa,0xb3,0xf9]
3015 @ CHECK: ite    hi                      @ encoding: [0x8c,0xbf]
3016 @ CHECK: sxtahhi r6, r1, r6             @ encoding: [0x01,0xfa,0x86,0xf6]
3017 @ CHECK: sxtahls r2, r2, r4, ror #16    @ encoding: [0x02,0xfa,0xa4,0xf2]
3018
3019
3020 @------------------------------------------------------------------------------
3021 @ SXTB
3022 @------------------------------------------------------------------------------
3023         sxtb r5, r6, ror #0
3024         sxtb r6, r9, ror #8
3025         sxtb r8, r3, ror #24
3026         ite ge
3027         sxtbge r2, r4
3028         sxtblt r5, r1, ror #16
3029         sxtb.w  r7, r8
3030
3031 @ CHECK: sxtb   r5, r6                  @ encoding: [0x75,0xb2]
3032 @ CHECK: sxtb.w r6, r9, ror #8          @ encoding: [0x4f,0xfa,0x99,0xf6]
3033 @ CHECK: sxtb.w r8, r3, ror #24         @ encoding: [0x4f,0xfa,0xb3,0xf8]
3034 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
3035 @ CHECK: sxtbge r2, r4                  @ encoding: [0x62,0xb2]
3036 @ CHECK: sxtblt.w       r5, r1, ror #16 @ encoding: [0x4f,0xfa,0xa1,0xf5]
3037 @ CHECK: sxtb.w r7, r8                  @ encoding: [0x4f,0xfa,0x88,0xf7]
3038
3039
3040 @------------------------------------------------------------------------------
3041 @ SXTB16
3042 @------------------------------------------------------------------------------
3043         sxtb16 r1, r4
3044         sxtb16 r6, r7, ror #0
3045         sxtb16 r3, r1, ror #16
3046         ite cs
3047         sxtb16cs r3, r5, ror #8
3048         sxtb16lo r2, r3, ror #24
3049
3050 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x2f,0xfa,0x84,0xf1]
3051 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x2f,0xfa,0x87,0xf6]
3052 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x2f,0xfa,0xa1,0xf3]
3053 @ CHECK: ite    hs                      @ encoding: [0x2c,0xbf]
3054 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x2f,0xfa,0x95,0xf3]
3055 @ CHECK: sxtb16lo       r2, r3, ror #24 @ encoding: [0x2f,0xfa,0xb3,0xf2]
3056
3057
3058 @------------------------------------------------------------------------------
3059 @ SXTH
3060 @------------------------------------------------------------------------------
3061         sxth r1, r6, ror #0
3062         sxth r3, r8, ror #8
3063         sxth r9, r3, ror #24
3064         itt ne
3065         sxthne r3, r9
3066         sxthne r2, r2, ror #16
3067         sxth.w  r7, r8
3068
3069 @ CHECK: sxth   r1, r6                  @ encoding: [0x31,0xb2]
3070 @ CHECK: sxth.w r3, r8, ror #8          @ encoding: [0x0f,0xfa,0x98,0xf3]
3071 @ CHECK: sxth.w r9, r3, ror #24         @ encoding: [0x0f,0xfa,0xb3,0xf9]
3072 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
3073 @ CHECK: sxthne.w       r3, r9          @ encoding: [0x0f,0xfa,0x89,0xf3]
3074 @ CHECK: sxthne.w       r2, r2, ror #16 @ encoding: [0x0f,0xfa,0xa2,0xf2]
3075 @ CHECK: sxth.w r7, r8                  @ encoding: [0x0f,0xfa,0x88,0xf7]
3076
3077
3078 @------------------------------------------------------------------------------
3079 @ SXTB
3080 @------------------------------------------------------------------------------
3081         sxtb r5, r6, ror #0
3082         sxtb.w r6, r9, ror #8
3083         sxtb r8, r3, ror #24
3084         ite ge
3085         sxtbge r2, r4
3086         sxtblt r5, r1, ror #16
3087
3088 @ CHECK: sxtb   r5, r6                  @ encoding: [0x75,0xb2]
3089 @ CHECK: sxtb.w r6, r9, ror #8          @ encoding: [0x4f,0xfa,0x99,0xf6]
3090 @ CHECK: sxtb.w r8, r3, ror #24         @ encoding: [0x4f,0xfa,0xb3,0xf8]
3091 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
3092 @ CHECK: sxtbge r2, r4                  @ encoding: [0x62,0xb2]
3093 @ CHECK: sxtblt.w       r5, r1, ror #16 @ encoding: [0x4f,0xfa,0xa1,0xf5]
3094
3095
3096 @------------------------------------------------------------------------------
3097 @ SXTB16
3098 @------------------------------------------------------------------------------
3099         sxtb16 r1, r4
3100         sxtb16 r6, r7, ror #0
3101         sxtb16 r3, r1, ror #16
3102         ite cs
3103         sxtb16cs r3, r5, ror #8
3104         sxtb16lo r2, r3, ror #24
3105
3106 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x2f,0xfa,0x84,0xf1]
3107 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x2f,0xfa,0x87,0xf6]
3108 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x2f,0xfa,0xa1,0xf3]
3109 @ CHECK: ite    hs                      @ encoding: [0x2c,0xbf]
3110 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x2f,0xfa,0x95,0xf3]
3111 @ CHECK: sxtb16lo       r2, r3, ror #24 @ encoding: [0x2f,0xfa,0xb3,0xf2]
3112
3113
3114 @------------------------------------------------------------------------------
3115 @ SXTH
3116 @------------------------------------------------------------------------------
3117         sxth r1, r6, ror #0
3118         sxth.w r3, r8, ror #8
3119         sxth r9, r3, ror #24
3120         itt ne
3121         sxthne r3, r9
3122         sxthne r2, r2, ror #16
3123
3124 @ CHECK: sxth   r1, r6                  @ encoding: [0x31,0xb2]
3125 @ CHECK: sxth.w r3, r8, ror #8          @ encoding: [0x0f,0xfa,0x98,0xf3]
3126 @ CHECK: sxth.w r9, r3, ror #24         @ encoding: [0x0f,0xfa,0xb3,0xf9]
3127 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
3128 @ CHECK: sxthne.w       r3, r9          @ encoding: [0x0f,0xfa,0x89,0xf3]
3129 @ CHECK: sxthne.w       r2, r2, ror #16 @ encoding: [0x0f,0xfa,0xa2,0xf2]
3130
3131
3132 @------------------------------------------------------------------------------
3133 @ TBB/TBH
3134 @------------------------------------------------------------------------------
3135         tbb [r3, r8]
3136         tbh [r3, r8, lsl #1]
3137         it eq
3138         tbbeq [r3, r8]
3139         it cs
3140         tbhcs [r3, r8, lsl #1]
3141
3142 @ CHECK: tbb    [r3, r8]                @ encoding: [0xd3,0xe8,0x08,0xf0]
3143 @ CHECK: tbh    [r3, r8, lsl #1]        @ encoding: [0xd3,0xe8,0x18,0xf0]
3144 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
3145 @ CHECK: tbbeq  [r3, r8]                @ encoding: [0xd3,0xe8,0x08,0xf0]
3146 @ CHECK: it     hs                      @ encoding: [0x28,0xbf]
3147 @ CHECK: tbhhs  [r3, r8, lsl #1]        @ encoding: [0xd3,0xe8,0x18,0xf0]
3148
3149
3150 @------------------------------------------------------------------------------
3151 @ TEQ
3152 @------------------------------------------------------------------------------
3153         teq r5, #0xf000
3154         teq r4, r5
3155         teq r4, r5, lsl #5
3156         teq r4, r5, lsr #5
3157         teq r4, r5, lsr #5
3158         teq r4, r5, asr #5
3159         teq r4, r5, ror #5
3160
3161 @ CHECK: teq.w  r5, #61440              @ encoding: [0x95,0xf4,0x70,0x4f]
3162 @ CHECK: teq.w  r4, r5                  @ encoding: [0x94,0xea,0x05,0x0f]
3163 @ CHECK: teq.w  r4, r5, lsl #5          @ encoding: [0x94,0xea,0x45,0x1f]
3164 @ CHECK: teq.w  r4, r5, lsr #5          @ encoding: [0x94,0xea,0x55,0x1f]
3165 @ CHECK: teq.w  r4, r5, lsr #5          @ encoding: [0x94,0xea,0x55,0x1f]
3166 @ CHECK: teq.w  r4, r5, asr #5          @ encoding: [0x94,0xea,0x65,0x1f]
3167 @ CHECK: teq.w  r4, r5, ror #5          @ encoding: [0x94,0xea,0x75,0x1f]
3168
3169
3170 @------------------------------------------------------------------------------
3171 @ TST
3172 @------------------------------------------------------------------------------
3173         tst r5, #0xf000
3174         tst r2, r5
3175         tst r3, r12, lsl #5
3176         tst r4, r11, lsr #4
3177         tst r5, r10, lsr #12
3178         tst r6, r9, asr #30
3179         tst r7, r8, ror #2
3180
3181 @ CHECK: tst.w  r5, #61440              @ encoding: [0x15,0xf4,0x70,0x4f]
3182 @ CHECK: tst    r2, r5                  @ encoding: [0x2a,0x42]
3183 @ CHECK: tst.w  r3, r12, lsl #5         @ encoding: [0x13,0xea,0x4c,0x1f]
3184 @ CHECK: tst.w  r4, r11, lsr #4         @ encoding: [0x14,0xea,0x1b,0x1f]
3185 @ CHECK: tst.w  r5, r10, lsr #12        @ encoding: [0x15,0xea,0x1a,0x3f]
3186 @ CHECK: tst.w  r6, r9, asr #30         @ encoding: [0x16,0xea,0xa9,0x7f]
3187 @ CHECK: tst.w  r7, r8, ror #2          @ encoding: [0x17,0xea,0xb8,0x0f]
3188
3189
3190 @------------------------------------------------------------------------------
3191 @ UADD16/UADD8
3192 @------------------------------------------------------------------------------
3193         uadd16 r1, r2, r3
3194         uadd8 r1, r2, r3
3195         ite gt
3196         uadd16gt r1, r2, r3
3197         uadd8le r1, r2, r3
3198
3199 @ CHECK: uadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x43,0xf1]
3200 @ CHECK: uadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x43,0xf1]
3201 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3202 @ CHECK: uadd16gt       r1, r2, r3      @ encoding: [0x92,0xfa,0x43,0xf1]
3203 @ CHECK: uadd8le        r1, r2, r3      @ encoding: [0x82,0xfa,0x43,0xf1]
3204
3205
3206 @------------------------------------------------------------------------------
3207 @ UASX
3208 @------------------------------------------------------------------------------
3209         uasx r9, r12, r0
3210         it eq
3211         uasxeq r9, r12, r0
3212         uaddsubx r9, r12, r0
3213         it eq
3214         uaddsubxeq r9, r12, r0
3215
3216 @ CHECK: uasx   r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
3217 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
3218 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
3219 @ CHECK: uasx   r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
3220 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
3221 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
3222
3223
3224 @------------------------------------------------------------------------------
3225 @ UBFX
3226 @------------------------------------------------------------------------------
3227         ubfx r4, r5, #16, #1
3228         it gt
3229         ubfxgt r4, r5, #16, #16
3230
3231 @ CHECK: ubfx   r4, r5, #16, #1         @ encoding: [0xc5,0xf3,0x00,0x44]
3232 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
3233 @ CHECK: ubfxgt r4, r5, #16, #16        @ encoding: [0xc5,0xf3,0x0f,0x44]
3234
3235
3236 @------------------------------------------------------------------------------
3237 @ UHADD16/UHADD8
3238 @------------------------------------------------------------------------------
3239         uhadd16 r4, r8, r2
3240         uhadd8 r4, r8, r2
3241         itt gt
3242         uhadd16gt r4, r8, r2
3243         uhadd8gt r4, r8, r2
3244
3245 @ CHECK: uhadd16        r4, r8, r2      @ encoding: [0x98,0xfa,0x62,0xf4]
3246 @ CHECK: uhadd8 r4, r8, r2              @ encoding: [0x88,0xfa,0x62,0xf4]
3247 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
3248 @ CHECK: uhadd16gt      r4, r8, r2      @ encoding: [0x98,0xfa,0x62,0xf4]
3249 @ CHECK: uhadd8gt       r4, r8, r2      @ encoding: [0x88,0xfa,0x62,0xf4]
3250
3251
3252 @------------------------------------------------------------------------------
3253 @ UHASX/UHSAX
3254 @------------------------------------------------------------------------------
3255         uhasx r4, r1, r5
3256         uhsax r5, r6, r6
3257         itt gt
3258         uhasxgt r6, r9, r8
3259         uhsaxgt r7, r8, r12
3260         uhaddsubx r4, r1, r5
3261         uhsubaddx r5, r6, r6
3262         itt gt
3263         uhaddsubxgt r6, r9, r8
3264         uhsubaddxgt r7, r8, r12
3265
3266 @ CHECK: uhasx  r4, r1, r5              @ encoding: [0xa1,0xfa,0x65,0xf4]
3267 @ CHECK: uhsax  r5, r6, r6              @ encoding: [0xe6,0xfa,0x66,0xf5]
3268 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
3269 @ CHECK: uhasxgt r6, r9, r8             @ encoding: [0xa9,0xfa,0x68,0xf6]
3270 @ CHECK: uhsaxgt r7, r8, r12            @ encoding: [0xe8,0xfa,0x6c,0xf7]
3271 @ CHECK: uhasx  r4, r1, r5              @ encoding: [0xa1,0xfa,0x65,0xf4]
3272 @ CHECK: uhsax  r5, r6, r6              @ encoding: [0xe6,0xfa,0x66,0xf5]
3273 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
3274 @ CHECK: uhasxgt r6, r9, r8             @ encoding: [0xa9,0xfa,0x68,0xf6]
3275 @ CHECK: uhsaxgt r7, r8, r12            @ encoding: [0xe8,0xfa,0x6c,0xf7]
3276
3277
3278 @------------------------------------------------------------------------------
3279 @ UHSUB16/UHSUB8
3280 @------------------------------------------------------------------------------
3281         uhsub16 r5, r8, r3
3282         uhsub8 r1, r7, r6
3283         itt lt
3284         uhsub16lt r4, r9, r12
3285         uhsub8lt r3, r1, r5
3286
3287 @ CHECK: uhsub16        r5, r8, r3      @ encoding: [0xd8,0xfa,0x63,0xf5]
3288 @ CHECK: uhsub8 r1, r7, r6              @ encoding: [0xc7,0xfa,0x66,0xf1]
3289 @ CHECK: itt    lt                      @ encoding: [0xbc,0xbf]
3290 @ CHECK: uhsub16lt      r4, r9, r12     @ encoding: [0xd9,0xfa,0x6c,0xf4]
3291 @ CHECK: uhsub8lt       r3, r1, r5      @ encoding: [0xc1,0xfa,0x65,0xf3]
3292
3293
3294 @------------------------------------------------------------------------------
3295 @ UMAAL
3296 @------------------------------------------------------------------------------
3297         umaal r3, r4, r5, r6
3298         it lt
3299         umaallt r3, r4, r5, r6
3300
3301 @ CHECK: umaal  r3, r4, r5, r6          @ encoding: [0xe5,0xfb,0x66,0x34]
3302 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
3303 @ CHECK: umaallt        r3, r4, r5, r6  @ encoding: [0xe5,0xfb,0x66,0x34]
3304
3305
3306 @------------------------------------------------------------------------------
3307 @ UMLAL
3308 @------------------------------------------------------------------------------
3309         umlal r2, r4, r6, r8
3310         it gt
3311         umlalgt r6, r1, r2, r6
3312
3313 @ CHECK: umlal  r2, r4, r6, r8          @ encoding: [0xe6,0xfb,0x08,0x24]
3314 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
3315 @ CHECK: umlalgt        r6, r1, r2, r6  @ encoding: [0xe2,0xfb,0x06,0x61]
3316
3317
3318 @------------------------------------------------------------------------------
3319 @ UMULL
3320 @------------------------------------------------------------------------------
3321         umull r2, r4, r6, r8
3322         it gt
3323         umullgt r6, r1, r2, r6
3324
3325 @ CHECK: umull  r2, r4, r6, r8          @ encoding: [0xa6,0xfb,0x08,0x24]
3326 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
3327 @ CHECK: umullgt        r6, r1, r2, r6  @ encoding: [0xa2,0xfb,0x06,0x61]
3328
3329
3330 @------------------------------------------------------------------------------
3331 @ UQADD16/UQADD8
3332 @------------------------------------------------------------------------------
3333         uqadd16 r1, r2, r3
3334         uqadd8 r3, r4, r8
3335         ite gt
3336         uqadd16gt r4, r7, r9
3337         uqadd8le r8, r1, r2
3338
3339 @ CHECK: uqadd16        r1, r2, r3      @ encoding: [0x92,0xfa,0x53,0xf1]
3340 @ CHECK: uqadd8 r3, r4, r8              @ encoding: [0x84,0xfa,0x58,0xf3]
3341 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3342 @ CHECK: uqadd16gt      r4, r7, r9      @ encoding: [0x97,0xfa,0x59,0xf4]
3343 @ CHECK: uqadd8le       r8, r1, r2      @ encoding: [0x81,0xfa,0x52,0xf8]
3344
3345
3346 @------------------------------------------------------------------------------
3347 @ UQASX/UQSAX
3348 @------------------------------------------------------------------------------
3349         uqasx r1, r2, r3
3350         uqsax r3, r4, r8
3351         ite gt
3352         uqasxgt r4, r7, r9
3353         uqsaxle r8, r1, r2
3354
3355         uqaddsubx r1, r2, r3
3356         uqsubaddx r3, r4, r8
3357         ite gt
3358         uqaddsubxgt r4, r7, r9
3359         uqsubaddxle r8, r1, r2
3360
3361 @ CHECK: uqasx  r1, r2, r3              @ encoding: [0xa2,0xfa,0x53,0xf1]
3362 @ CHECK: uqsax  r3, r4, r8              @ encoding: [0xe4,0xfa,0x58,0xf3]
3363 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3364 @ CHECK: uqasxgt r4, r7, r9             @ encoding: [0xa7,0xfa,0x59,0xf4]
3365 @ CHECK: uqsaxle r8, r1, r2             @ encoding: [0xe1,0xfa,0x52,0xf8]
3366
3367 @ CHECK: uqasx  r1, r2, r3              @ encoding: [0xa2,0xfa,0x53,0xf1]
3368 @ CHECK: uqsax  r3, r4, r8              @ encoding: [0xe4,0xfa,0x58,0xf3]
3369 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3370 @ CHECK: uqasxgt r4, r7, r9             @ encoding: [0xa7,0xfa,0x59,0xf4]
3371 @ CHECK: uqsaxle r8, r1, r2             @ encoding: [0xe1,0xfa,0x52,0xf8]
3372
3373
3374 @------------------------------------------------------------------------------
3375 @ UQSUB16/UQSUB8
3376 @------------------------------------------------------------------------------
3377         uqsub8 r8, r2, r9
3378         uqsub16 r1, r9, r7
3379         ite gt
3380         uqsub8gt r3, r1, r6
3381         uqsub16le r4, r6, r4
3382
3383 @ CHECK: uqsub8 r8, r2, r9              @ encoding: [0xc2,0xfa,0x59,0xf8]
3384 @ CHECK: uqsub16 r1, r9, r7             @ encoding: [0xd9,0xfa,0x57,0xf1]
3385 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3386 @ CHECK: uqsub8gt       r3, r1, r6      @ encoding: [0xc1,0xfa,0x56,0xf3]
3387 @ CHECK: uqsub16le      r4, r6, r4      @ encoding: [0xd6,0xfa,0x54,0xf4]
3388
3389
3390 @------------------------------------------------------------------------------
3391 @ UQSUB16/UQSUB8
3392 @------------------------------------------------------------------------------
3393         usad8 r1, r9, r7
3394         usada8 r8, r2, r9, r12
3395         ite gt
3396         usada8gt r3, r1, r6, r9
3397         usad8le r4, r6, r4
3398
3399 @ CHECK: usad8  r1, r9, r7              @ encoding: [0x79,0xfb,0x07,0xf1]
3400 @ CHECK: usada8 r8, r2, r9, r12         @ encoding: [0x72,0xfb,0x09,0xc8]
3401 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3402 @ CHECK: usada8gt       r3, r1, r6, r9  @ encoding: [0x71,0xfb,0x06,0x93]
3403 @ CHECK: usad8le        r4, r6, r4      @ encoding: [0x76,0xfb,0x04,0xf4]
3404
3405
3406 @------------------------------------------------------------------------------
3407 @ USAT
3408 @------------------------------------------------------------------------------
3409         usat    r8, #1, r10
3410         usat    r8, #4, r10, lsl #0
3411         usat    r8, #5, r10, lsl #31
3412         usat    r8, #16, r10, asr #1
3413
3414 @ CHECK: usat   r8, #1, r10             @ encoding: [0x8a,0xf3,0x01,0x08]
3415 @ CHECK: usat   r8, #4, r10             @ encoding: [0x8a,0xf3,0x04,0x08]
3416 @ CHECK: usat   r8, #5, r10, lsl #31    @ encoding: [0x8a,0xf3,0xc5,0x78]
3417 @ CHECK: usat   r8, #16, r10, asr #1    @ encoding: [0xaa,0xf3,0x50,0x08]
3418
3419
3420 @------------------------------------------------------------------------------
3421 @ USAT16
3422 @------------------------------------------------------------------------------
3423         usat16  r2, #2, r7
3424         usat16  r3, #15, r5
3425
3426 @ CHECK: usat16 r2, #2, r7              @ encoding: [0xa7,0xf3,0x02,0x02]
3427 @ CHECK: usat16 r3, #15, r5             @ encoding: [0xa5,0xf3,0x0f,0x03]
3428
3429
3430 @------------------------------------------------------------------------------
3431 @ USAX
3432 @------------------------------------------------------------------------------
3433         usax r2, r3, r4
3434         it ne
3435         usaxne r6, r1, r9
3436         usubaddx r2, r3, r4
3437         it ne
3438         usubaddxne r6, r1, r9
3439
3440 @ CHECK: usax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x44,0xf2]
3441 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3442 @ CHECK: usaxne r6, r1, r9              @ encoding: [0xe1,0xfa,0x49,0xf6]
3443 @ CHECK: usax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x44,0xf2]
3444 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3445 @ CHECK: usaxne r6, r1, r9              @ encoding: [0xe1,0xfa,0x49,0xf6]
3446
3447
3448 @------------------------------------------------------------------------------
3449 @ USUB16/USUB8
3450 @------------------------------------------------------------------------------
3451         usub16 r4, r2, r7
3452         usub8 r1, r8, r5
3453         ite hi
3454         usub16hi r1, r1, r3
3455         usub8ls r9, r2, r3
3456
3457 @ CHECK: usub16 r4, r2, r7              @ encoding: [0xd2,0xfa,0x47,0xf4]
3458 @ CHECK: usub8  r1, r8, r5              @ encoding: [0xc8,0xfa,0x45,0xf1]
3459 @ CHECK: ite    hi                      @ encoding: [0x8c,0xbf]
3460 @ CHECK: usub16hi       r1, r1, r3      @ encoding: [0xd1,0xfa,0x43,0xf1]
3461 @ CHECK: usub8ls        r9, r2, r3      @ encoding: [0xc2,0xfa,0x43,0xf9]
3462
3463
3464 @------------------------------------------------------------------------------
3465 @ UXTAB
3466 @------------------------------------------------------------------------------
3467         uxtab r2, r3, r4
3468         uxtab r4, r5, r6, ror #0
3469         it lt
3470         uxtablt r6, r2, r9, ror #8
3471         uxtab r5, r1, r4, ror #16
3472         uxtab r7, r8, r3, ror #24
3473
3474 @ CHECK: uxtab  r2, r3, r4              @ encoding: [0x53,0xfa,0x84,0xf2]
3475 @ CHECK: uxtab  r4, r5, r6              @ encoding: [0x55,0xfa,0x86,0xf4]
3476 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
3477 @ CHECK: uxtablt r6, r2, r9, ror #8     @ encoding: [0x52,0xfa,0x99,0xf6]
3478 @ CHECK: uxtab  r5, r1, r4, ror #16     @ encoding: [0x51,0xfa,0xa4,0xf5]
3479 @ CHECK: uxtab  r7, r8, r3, ror #24     @ encoding: [0x58,0xfa,0xb3,0xf7]
3480
3481
3482 @------------------------------------------------------------------------------
3483 @ UXTAB16
3484 @------------------------------------------------------------------------------
3485         it ge
3486         uxtab16ge r0, r1, r4
3487         uxtab16 r6, r2, r7, ror #0
3488         uxtab16 r3, r5, r8, ror #8
3489         uxtab16 r3, r2, r1, ror #16
3490         it eq
3491         uxtab16eq r1, r2, r3, ror #24
3492
3493 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3494 @ CHECK: uxtab16ge      r0, r1, r4      @ encoding: [0x31,0xfa,0x84,0xf0]
3495 @ CHECK: uxtab16 r6, r2, r7             @ encoding: [0x32,0xfa,0x87,0xf6]
3496 @ CHECK: uxtab16 r3, r5, r8, ror #8     @ encoding: [0x35,0xfa,0x98,0xf3]
3497 @ CHECK: uxtab16 r3, r2, r1, ror #16    @ encoding: [0x32,0xfa,0xa1,0xf3]
3498 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
3499 @ CHECK: uxtab16eq r1, r2, r3, ror #24  @ encoding: [0x32,0xfa,0xb3,0xf1]
3500
3501
3502 @------------------------------------------------------------------------------
3503 @ UXTAH
3504 @------------------------------------------------------------------------------
3505         uxtah r1, r3, r9
3506         it hi
3507         uxtahhi r6, r1, r6, ror #0
3508         uxtah r3, r8, r3, ror #8
3509         it lo
3510         uxtahlo r2, r2, r4, ror #16
3511         uxtah r9, r3, r3, ror #24
3512
3513 @ CHECK: uxtah  r1, r3, r9              @ encoding: [0x13,0xfa,0x89,0xf1]
3514 @ CHECK: it     hi                      @ encoding: [0x88,0xbf]
3515 @ CHECK: uxtahhi r6, r1, r6             @ encoding: [0x11,0xfa,0x86,0xf6]
3516 @ CHECK: uxtah  r3, r8, r3, ror #8      @ encoding: [0x18,0xfa,0x93,0xf3]
3517 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
3518 @ CHECK: uxtahlo r2, r2, r4, ror #16    @ encoding: [0x12,0xfa,0xa4,0xf2]
3519 @ CHECK: uxtah  r9, r3, r3, ror #24     @ encoding: [0x13,0xfa,0xb3,0xf9]
3520
3521
3522 @------------------------------------------------------------------------------
3523 @ UXTB
3524 @------------------------------------------------------------------------------
3525         it ge
3526         uxtbge r2, r4
3527         uxtb r5, r6, ror #0
3528         uxtb r6, r9, ror #8
3529         it cc
3530         uxtbcc r5, r1, ror #16
3531         uxtb r8, r3, ror #24
3532         uxtb.w  r7, r8
3533
3534 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3535 @ CHECK: uxtbge r2, r4                  @ encoding: [0xe2,0xb2]
3536 @ CHECK: uxtb   r5, r6                  @ encoding: [0xf5,0xb2]
3537 @ CHECK: uxtb.w r6, r9, ror #8          @ encoding: [0x5f,0xfa,0x99,0xf6]
3538 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
3539 @ CHECK: uxtblo.w       r5, r1, ror #16 @ encoding: [0x5f,0xfa,0xa1,0xf5]
3540 @ CHECK: uxtb.w r8, r3, ror #24         @ encoding: [0x5f,0xfa,0xb3,0xf8]
3541 @ CHECK: uxtb.w r7, r8                  @ encoding: [0x5f,0xfa,0x88,0xf7]
3542
3543
3544 @------------------------------------------------------------------------------
3545 @ UXTB16
3546 @------------------------------------------------------------------------------
3547         uxtb16 r1, r4
3548         uxtb16 r6, r7, ror #0
3549         it cs
3550         uxtb16cs r3, r5, ror #8
3551         uxtb16 r3, r1, ror #16
3552         it ge
3553         uxtb16ge r2, r3, ror #24
3554
3555 @ CHECK: uxtb16 r1, r4                  @ encoding: [0x3f,0xfa,0x84,0xf1]
3556 @ CHECK: uxtb16 r6, r7                  @ encoding: [0x3f,0xfa,0x87,0xf6]
3557 @ CHECK: it     hs                      @ encoding: [0x28,0xbf]
3558 @ CHECK: uxtb16hs       r3, r5, ror #8  @ encoding: [0x3f,0xfa,0x95,0xf3]
3559 @ CHECK: uxtb16 r3, r1, ror #16         @ encoding: [0x3f,0xfa,0xa1,0xf3]
3560 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3561 @ CHECK: uxtb16ge       r2, r3, ror #24 @ encoding: [0x3f,0xfa,0xb3,0xf2]
3562
3563
3564 @------------------------------------------------------------------------------
3565 @ UXTH
3566 @------------------------------------------------------------------------------
3567         it ne
3568         uxthne r3, r9
3569         uxth r1, r6, ror #0
3570         uxth r3, r8, ror #8
3571         it le
3572         uxthle r2, r2, ror #16
3573         uxth r9, r3, ror #24
3574         uxth.w  r7, r8
3575
3576 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3577 @ CHECK: uxthne.w       r3, r9          @ encoding: [0x1f,0xfa,0x89,0xf3]
3578 @ CHECK: uxth   r1, r6                  @ encoding: [0xb1,0xb2]
3579 @ CHECK: uxth.w r3, r8, ror #8          @ encoding: [0x1f,0xfa,0x98,0xf3]
3580 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
3581 @ CHECK: uxthle.w       r2, r2, ror #16 @ encoding: [0x1f,0xfa,0xa2,0xf2]
3582 @ CHECK: uxth.w r9, r3, ror #24         @ encoding: [0x1f,0xfa,0xb3,0xf9]
3583 @ CHECK: uxth.w r7, r8                  @ encoding: [0x1f,0xfa,0x88,0xf7]
3584
3585 @------------------------------------------------------------------------------
3586 @ WFE/WFI/YIELD/HINT
3587 @------------------------------------------------------------------------------
3588         wfe
3589         wfi
3590         yield
3591         itet lt
3592         wfelt
3593         wfige
3594         yieldlt
3595         hint.w #4
3596         hint.w #3
3597         hint.w #2
3598         hint.w #1
3599         hint.w #0
3600         hint #4
3601         hint #3
3602         hint #2
3603         hint #1
3604         hint #0
3605
3606 @ CHECK: wfe                            @ encoding: [0x20,0xbf]
3607 @ CHECK: wfi                            @ encoding: [0x30,0xbf]
3608 @ CHECK: yield                          @ encoding: [0x10,0xbf]
3609 @ CHECK: itet   lt                      @ encoding: [0xb6,0xbf]
3610 @ CHECK: wfelt                          @ encoding: [0x20,0xbf]
3611 @ CHECK: wfige                          @ encoding: [0x30,0xbf]
3612 @ CHECK: yieldlt                        @ encoding: [0x10,0xbf]
3613 @ CHECK: sev.w                          @ encoding: [0xaf,0xf3,0x04,0x80]
3614 @ CHECK: wfi.w                          @ encoding: [0xaf,0xf3,0x03,0x80]
3615 @ CHECK: wfe.w                          @ encoding: [0xaf,0xf3,0x02,0x80]
3616 @ CHECK: yield.w                        @ encoding: [0xaf,0xf3,0x01,0x80]
3617 @ CHECK: nop.w                          @ encoding: [0xaf,0xf3,0x00,0x80]
3618 @ CHECK: sev                            @ encoding: [0x40,0xbf]
3619 @ CHECK: wfi                            @ encoding: [0x30,0xbf]
3620 @ CHECK: wfe                            @ encoding: [0x20,0xbf]
3621 @ CHECK: yield                          @ encoding: [0x10,0xbf]
3622 @ CHECK: nop                            @ encoding: [0x00,0xbf]
3623
3624 @------------------------------------------------------------------------------
3625 @ Unallocated wide/narrow hints
3626 @------------------------------------------------------------------------------
3627         hint #7
3628         hint.w #7
3629 @ CHECK: hint #7                        @ encoding: [0x70,0xbf]
3630 @ CHECK: hint.w #7                      @ encoding: [0xaf,0xf3,0x07,0x80]
3631
3632 @------------------------------------------------------------------------------
3633 @ Alternate syntax for LDR*(literal) encodings
3634 @------------------------------------------------------------------------------
3635         ldrb r11, [pc, #22]
3636         ldrh r11, [pc, #22]
3637         ldrsb r11, [pc, #22]
3638         ldrsh r11, [pc, #22]
3639         ldr.w r11, [pc, #22]
3640         ldrb.w r11, [pc, #22]
3641         ldrh.w r11, [pc, #22]
3642         ldrsb.w r11, [pc, #22]
3643         ldrsh.w r11, [pc, #22]
3644
3645 @ CHECK: ldrb.w r11, [pc, #22]        @ encoding: [0x9f,0xf8,0x16,0xb0]
3646 @ CHECK: ldrh.w r11, [pc, #22]        @ encoding: [0xbf,0xf8,0x16,0xb0]
3647 @ CHECK: ldrsb.w r11, [pc, #22]       @ encoding: [0x9f,0xf9,0x16,0xb0]
3648 @ CHECK: ldrsh.w r11, [pc, #22]       @ encoding: [0xbf,0xf9,0x16,0xb0]
3649 @ CHECK: ldr.w r11, [pc, #22]         @ encoding: [0xdf,0xf8,0x16,0xb0]
3650 @ CHECK: ldrb.w r11, [pc, #22]        @ encoding: [0x9f,0xf8,0x16,0xb0]
3651 @ CHECK: ldrh.w r11, [pc, #22]        @ encoding: [0xbf,0xf8,0x16,0xb0]
3652 @ CHECK: ldrsb.w r11, [pc, #22]       @ encoding: [0x9f,0xf9,0x16,0xb0]
3653 @ CHECK: ldrsh.w r11, [pc, #22]       @ encoding: [0xbf,0xf9,0x16,0xb0]
3654
3655         ldr r11, [pc, #-22]
3656         ldrb r11, [pc, #-22]
3657         ldrh r11, [pc, #-22]
3658         ldrsb r11, [pc, #-22]
3659         ldrsh r11, [pc, #-22]
3660         ldr.w r11, [pc, #-22]
3661         ldrb.w r11, [pc, #-22]
3662         ldrh.w r11, [pc, #-22]
3663         ldrsb.w r11, [pc, #-22]
3664         ldrsh.w r11, [pc, #-22]
3665
3666 @ CHECK: ldr.w  r11, [pc, #-22]         @ encoding: [0x5f,0xf8,0x16,0xb0]
3667 @ CHECK: ldrb.w r11, [pc, #-22]         @ encoding: [0x1f,0xf8,0x16,0xb0]
3668 @ CHECK: ldrh.w r11, [pc, #-22]         @ encoding: [0x3f,0xf8,0x16,0xb0]
3669 @ CHECK: ldrsb.w r11, [pc, #-22]        @ encoding: [0x1f,0xf9,0x16,0xb0]
3670 @ CHECK: ldrsh.w r11, [pc, #-22]        @ encoding: [0x3f,0xf9,0x16,0xb0]
3671 @ CHECK: ldr.w  r11, [pc, #-22]         @ encoding: [0x5f,0xf8,0x16,0xb0]
3672 @ CHECK: ldrb.w r11, [pc, #-22]         @ encoding: [0x1f,0xf8,0x16,0xb0]
3673 @ CHECK: ldrh.w r11, [pc, #-22]         @ encoding: [0x3f,0xf8,0x16,0xb0]
3674 @ CHECK: ldrsb.w r11, [pc, #-22]        @ encoding: [0x1f,0xf9,0x16,0xb0]
3675 @ CHECK: ldrsh.w r11, [pc, #-22]        @ encoding: [0x3f,0xf9,0x16,0xb0]
3676
3677 @ rdar://12596361
3678          ldr r1, [pc, #12]
3679 @ CHECK: ldr r1, [pc, #12]              @ encoding: [0x03,0x49]
3680
3681 @ rdar://14214063
3682          subs pc, lr, #4
3683 @ CHECK: subs pc, lr, #4                @ encoding: [0xde,0xf3,0x04,0x8f]