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