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