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@------------------------------------------------------------------------------
1206@ LDRHT
1207@------------------------------------------------------------------------------
1208        ldrhthi	r8, [r11], #-0
1209        ldrhthi	r8, [r11], #0
1210
1211@ CHECK: ldrhthi r8, [r11], #-0         @ encoding: [0xb0,0x80,0x7b,0x80]
1212@ CHECK: ldrhthi r8, [r11], #0          @ encoding: [0xb0,0x80,0xfb,0x80]
1213
1214@------------------------------------------------------------------------------
1215@ LSL
1216@------------------------------------------------------------------------------
1217	lsl r2, r4, #31
1218	lsl r2, r4, #1
1219	lsl r2, r4, #0
1220	lsl r4, #1
1221
1222@ CHECK: lsl	r2, r4, #31             @ encoding: [0x84,0x2f,0xa0,0xe1]
1223@ CHECK: lsl	r2, r4, #1              @ encoding: [0x84,0x20,0xa0,0xe1]
1224@ CHECK: mov	r2, r4                  @ encoding: [0x04,0x20,0xa0,0xe1]
1225@ CHECK: lsl	r4, r4, #1              @ encoding: [0x84,0x40,0xa0,0xe1]
1226
1227
1228@------------------------------------------------------------------------------
1229@ LSR
1230@------------------------------------------------------------------------------
1231	lsr r2, r4, #32
1232	lsr r2, r4, #2
1233	lsr r2, r4, #0
1234	lsr r4, #2
1235
1236@ CHECK: lsr	r2, r4, #32             @ encoding: [0x24,0x20,0xa0,0xe1]
1237@ CHECK: lsr	r2, r4, #2              @ encoding: [0x24,0x21,0xa0,0xe1]
1238@ CHECK: mov	r2, r4                  @ encoding: [0x04,0x20,0xa0,0xe1]
1239@ CHECK: lsr	r4, r4, #2              @ encoding: [0x24,0x41,0xa0,0xe1]
1240
1241
1242@------------------------------------------------------------------------------
1243@ MCR/MCR2
1244@------------------------------------------------------------------------------
1245        mcr  p7, #1, r5, c1, c1, #4
1246        mcr2  p7, #1, r5, c1, c1, #4
1247        MCR  P7, #1, R5, C1, C1, #4
1248        MCR2  P7, #1, R5, C1, C1, #4
1249
1250@ CHECK: mcr  p7, #1, r5, c1, c1, #4    @ encoding: [0x91,0x57,0x21,0xee]
1251@ CHECK: mcr2  p7, #1, r5, c1, c1, #4   @ encoding: [0x91,0x57,0x21,0xfe]
1252@ CHECK: mcr  p7, #1, r5, c1, c1, #4    @ encoding: [0x91,0x57,0x21,0xee]
1253@ CHECK: mcr2  p7, #1, r5, c1, c1, #4   @ encoding: [0x91,0x57,0x21,0xfe]
1254
1255        mcrls  p7, #1, r5, c1, c1, #4
1256        MCRLS  P7, #1, R5, C1, C1, #4
1257@ CHECK: mcrls  p7, #1, r5, c1, c1, #4   @ encoding: [0x91,0x57,0x21,0x9e]
1258@ CHECK: mcrls  p7, #1, r5, c1, c1, #4   @ encoding: [0x91,0x57,0x21,0x9e]
1259
1260@------------------------------------------------------------------------------
1261@ MCRR/MCRR2
1262@------------------------------------------------------------------------------
1263        mcrr  p7, #15, r5, r4, c1
1264        mcrr2  p7, #15, r5, r4, c1
1265        MCRR  P7, #15, R5, R4, C1
1266        MCRR2  P7, #15, R5, R4, C1
1267
1268@ CHECK: mcrr  p7, #15, r5, r4, c1      @ encoding: [0xf1,0x57,0x44,0xec]
1269@ CHECK: mcrr2  p7, #15, r5, r4, c1     @ encoding: [0xf1,0x57,0x44,0xfc]
1270@ CHECK: mcrr  p7, #15, r5, r4, c1      @ encoding: [0xf1,0x57,0x44,0xec]
1271@ CHECK: mcrr2  p7, #15, r5, r4, c1     @ encoding: [0xf1,0x57,0x44,0xfc]
1272
1273        mcrrgt  p7, #15, r5, r4, c1
1274        MCRRGT  P7, #15, R5, R4, C1
1275@ CHECK: mcrrgt  p7, #15, r5, r4, c1     @ encoding: [0xf1,0x57,0x44,0xcc]
1276@ CHECK: mcrrgt  p7, #15, r5, r4, c1     @ encoding: [0xf1,0x57,0x44,0xcc]
1277
1278@------------------------------------------------------------------------------
1279@ MLA
1280@------------------------------------------------------------------------------
1281        mla  r1,r2,r3,r4
1282        mlas r1,r2,r3,r4
1283        mlane  r1,r2,r3,r4
1284        mlasne r1,r2,r3,r4
1285
1286@ CHECK: mla 	r1, r2, r3, r4          @ encoding: [0x92,0x43,0x21,0xe0]
1287@ CHECK: mlas	r1, r2, r3, r4          @ encoding: [0x92,0x43,0x31,0xe0]
1288@ CHECK: mlane 	r1, r2, r3, r4          @ encoding: [0x92,0x43,0x21,0x10]
1289@ CHECK: mlasne	r1, r2, r3, r4          @ encoding: [0x92,0x43,0x31,0x10]
1290
1291@------------------------------------------------------------------------------
1292@ MLS
1293@------------------------------------------------------------------------------
1294        mls  r2,r5,r6,r3
1295        mlsne  r2,r5,r6,r3
1296
1297@ CHECK: mls	r2, r5, r6, r3          @ encoding: [0x95,0x36,0x62,0xe0]
1298@ CHECK: mlsne	r2, r5, r6, r3          @ encoding: [0x95,0x36,0x62,0x10]
1299
1300@------------------------------------------------------------------------------
1301@ MOV (immediate)
1302@------------------------------------------------------------------------------
1303        mov r3, #7
1304        mov r3, $7
1305        mov r3, 7
1306        mov r3, -7
1307        mov r4, #0xff0
1308        mov r5, #0xff0000
1309        mov r7, #42, #0
1310        mov r7, #42, #10
1311	mov r7, #(0xff << 16)
1312        mov r7, #-2147483638
1313        mov r7, #42, #2
1314        mov pc, #42, #2
1315        mov r7, #0, #2
1316        mov r7, #40, #2
1317        mov r7, $40, $2
1318        mov r7, 40, 2
1319        mov r7, (2 * 20), (1 << 1)
1320        mov r7, #42, #30
1321        mov r6, #0xffff
1322        movw r9, #0xffff
1323        movs r3, #7
1324        moveq r4, #0xff0
1325        movseq r5, #0xff0000
1326
1327@ CHECK: mov	r3, #7                  @ encoding: [0x07,0x30,0xa0,0xe3]
1328@ CHECK: mov	r3, #7                  @ encoding: [0x07,0x30,0xa0,0xe3]
1329@ CHECK: mov	r3, #7                  @ encoding: [0x07,0x30,0xa0,0xe3]
1330@ CHECK: mvn	r3, #6                  @ encoding: [0x06,0x30,0xe0,0xe3]
1331@ CHECK: mov	r4, #4080               @ encoding: [0xff,0x4e,0xa0,0xe3]
1332@ CHECK: mov	r5, #16711680           @ encoding: [0xff,0x58,0xa0,0xe3]
1333@ CHECK: mov    r7, #42                 @ encoding: [0x2a,0x70,0xa0,0xe3]
1334@ CHECK: mov    r7, #176160768          @ encoding: [0x2a,0x75,0xa0,0xe3]
1335@ CHECK: mov	r7, #16711680           @ encoding: [0xff,0x78,0xa0,0xe3]
1336@ CHECK: mov    r7, #-2147483638        @ encoding: [0x2a,0x71,0xa0,0xe3]
1337@ CHECK: mov    r7, #-2147483638        @ encoding: [0x2a,0x71,0xa0,0xe3]
1338@ CHECK: mov    pc, #2147483658         @ encoding: [0x2a,0xf1,0xa0,0xe3]
1339@ CHECK: mov    r7, #0, #2              @ encoding: [0x00,0x71,0xa0,0xe3]
1340@ CHECK: mov    r7, #40, #2             @ encoding: [0x28,0x71,0xa0,0xe3]
1341@ CHECK: mov    r7, #40, #2             @ encoding: [0x28,0x71,0xa0,0xe3]
1342@ CHECK: mov    r7, #40, #2             @ encoding: [0x28,0x71,0xa0,0xe3]
1343@ CHECK: mov    r7, #40, #2             @ encoding: [0x28,0x71,0xa0,0xe3]
1344@ CHECK: mov    r7, #42, #30            @ encoding: [0x2a,0x7f,0xa0,0xe3]
1345@ CHECK: movw	r6, #65535              @ encoding: [0xff,0x6f,0x0f,0xe3]
1346@ CHECK: movw	r9, #65535              @ encoding: [0xff,0x9f,0x0f,0xe3]
1347@ CHECK: movs	r3, #7                  @ encoding: [0x07,0x30,0xb0,0xe3]
1348@ CHECK: moveq	r4, #4080               @ encoding: [0xff,0x4e,0xa0,0x03]
1349@ CHECK: movseq	r5, #16711680           @ encoding: [0xff,0x58,0xb0,0x03]
1350
1351@------------------------------------------------------------------------------
1352@ MOV (register)
1353@------------------------------------------------------------------------------
1354        mov r2, r3
1355        movs r2, r3
1356        moveq r2, r3
1357        movseq r2, r3
1358        mov r12, r8, lsl #(2 - 2)
1359        lsl r2, r3, #(2 - 2)
1360        mov r12, r8, lsr #(2 - 2)
1361        lsr r2, r3, #(2 - 2)
1362        mov r12, r8, asr #(2 - 2)
1363        asr r2, r3, #(2 - 2)
1364        mov r12, r8, ror #(2 - 2)
1365        ror r2, r3, #(2 - 2)
1366
1367@ CHECK: mov	r2, r3                  @ encoding: [0x03,0x20,0xa0,0xe1]
1368@ CHECK: movs	r2, r3                  @ encoding: [0x03,0x20,0xb0,0xe1]
1369@ CHECK: moveq	r2, r3                  @ encoding: [0x03,0x20,0xa0,0x01]
1370@ CHECK: movseq	r2, r3                  @ encoding: [0x03,0x20,0xb0,0x01]
1371@ CHECK: mov	r12, r8                 @ encoding: [0x08,0xc0,0xa0,0xe1]
1372@ CHECK: mov	r2, r3                  @ encoding: [0x03,0x20,0xa0,0xe1]
1373@ CHECK: mov	r12, r8                 @ encoding: [0x08,0xc0,0xa0,0xe1]
1374@ CHECK: mov	r2, r3                  @ encoding: [0x03,0x20,0xa0,0xe1]
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
1380
1381@------------------------------------------------------------------------------
1382@ MOVT
1383@------------------------------------------------------------------------------
1384        movt r3, #7
1385        movt r6, #0xffff
1386        movteq r4, #0xff0
1387
1388@ CHECK: movt	r3, #7                  @ encoding: [0x07,0x30,0x40,0xe3]
1389@ CHECK: movt	r6, #65535              @ encoding: [0xff,0x6f,0x4f,0xe3]
1390@ CHECK: movteq	r4, #4080               @ encoding: [0xf0,0x4f,0x40,0x03]
1391
1392
1393@------------------------------------------------------------------------------
1394@ MRC/MRC2
1395@------------------------------------------------------------------------------
1396        mrc  p14, #0, r1, c1, c2, #4
1397        mrc  p15, #7, apsr_nzcv, c15, c6, #6
1398        mrc2  p14, #0, r1, c1, c2, #4
1399        mrc2  p9, #7, apsr_nzcv, c15, c0, #1
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
1405@ CHECK: mrc  p14, #0, r1, c1, c2, #4             @ encoding: [0x92,0x1e,0x11,0xee]
1406@ CHECK: mrc  p15, #7, apsr_nzcv, c15, c6, #6     @ encoding: [0xd6,0xff,0xff,0xee]
1407@ CHECK: mrc2  p14, #0, r1, c1, c2, #4            @ encoding: [0x92,0x1e,0x11,0xfe]
1408@ CHECK: mrc2  p9, #7, apsr_nzcv, c15, c0, #1     @ encoding: [0x30,0xf9,0xff,0xfe]
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
1414         mrceq  p15, #7, apsr_nzcv, c15, c6, #6
1415         MRCEQ  P15, #7, APSR_NZCV, C15, C6, #6
1416@ CHECK: mrceq  p15, #7, apsr_nzcv, c15, c6, #6   @ encoding: [0xd6,0xff,0xff,0x0e]
1417@ CHECK: mrceq  p15, #7, apsr_nzcv, c15, c6, #6   @ encoding: [0xd6,0xff,0xff,0x0e]
1418
1419@------------------------------------------------------------------------------
1420@ MRRC/MRRC2
1421@------------------------------------------------------------------------------
1422        mrrc  p7, #1, r5, r4, c1
1423        mrrc2  p7, #1, r5, r4, c1
1424        MRRC  P7, #1, R5, R4, C1
1425        MRRC2  P7, #1, R5, R4, C1
1426
1427@ CHECK: mrrc  p7, #1, r5, r4, c1       @ encoding: [0x11,0x57,0x54,0xec]
1428@ CHECK: mrrc2  p7, #1, r5, r4, c1      @ encoding: [0x11,0x57,0x54,0xfc]
1429@ CHECK: mrrc  p7, #1, r5, r4, c1       @ encoding: [0x11,0x57,0x54,0xec]
1430@ CHECK: mrrc2  p7, #1, r5, r4, c1      @ encoding: [0x11,0x57,0x54,0xfc]
1431
1432        mrrclo  p7, #1, r5, r4, c1
1433        MRRCLO  P7, #1, R5, R4, C1
1434@ CHECK: mrrclo  p7, #1, r5, r4, c1      @ encoding: [0x11,0x57,0x54,0x3c]
1435@ CHECK: mrrclo  p7, #1, r5, r4, c1      @ encoding: [0x11,0x57,0x54,0x3c]
1436
1437@------------------------------------------------------------------------------
1438@ MRS
1439@------------------------------------------------------------------------------
1440        mrs  r8, apsr
1441        mrs  r8, cpsr
1442        mrs  r8, spsr
1443@ CHECK: mrs  r8, apsr                  @ encoding: [0x00,0x80,0x0f,0xe1]
1444@ CHECK: mrs  r8, apsr                  @ encoding: [0x00,0x80,0x0f,0xe1]
1445@ CHECK: mrs  r8, spsr                  @ encoding: [0x00,0x80,0x4f,0xe1]
1446
1447
1448
1449@------------------------------------------------------------------------------
1450@ MSR
1451@------------------------------------------------------------------------------
1452
1453        msr  apsr, #5
1454        msr  apsr, $5
1455        msr  apsr, 5
1456        msr  apsr_g, #5
1457        msr  apsr_nzcvq, #5
1458        msr  APSR_nzcvq, #5
1459        msr  apsr_nzcvqg, #5
1460        msr  cpsr_fc, #5
1461        msr  cpsr_c, #5
1462        msr  cpsr_x, #5
1463        msr  cpsr_fc, #5
1464        msr  cpsr_all, #5
1465        msr  cpsr_fsx, #5
1466        msr  spsr_fc, #5
1467        msr  SPSR_fsxc, #5
1468        msr  cpsr_fsxc, #5
1469	msr  apsr_nzcvqg, #(0xff << 16)
1470        msr  APSR_nzcvq, #42, #2
1471        msr  apsr_nzcvqg, #2147483658
1472        msr  SPSR_fsxc, #40, #2
1473        msr  SPSR_fsxc, $40, $2
1474        msr  SPSR_fsxc, 40, 2
1475        msr  SPSR_fsxc, (2 * 20), (1 << 1)
1476
1477@ CHECK: msr	APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
1478@ CHECK: msr	APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
1479@ CHECK: msr	APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
1480@ CHECK: msr	APSR_g, #5              @ encoding: [0x05,0xf0,0x24,0xe3]
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_nzcvqg, #5         @ encoding: [0x05,0xf0,0x2c,0xe3]
1484@ CHECK: msr	CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
1485@ CHECK: msr	CPSR_c, #5              @ encoding: [0x05,0xf0,0x21,0xe3]
1486@ CHECK: msr	CPSR_x, #5              @ encoding: [0x05,0xf0,0x22,0xe3]
1487@ CHECK: msr	CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
1488@ CHECK: msr	CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
1489@ CHECK: msr	CPSR_fsx, #5            @ encoding: [0x05,0xf0,0x2e,0xe3]
1490@ CHECK: msr	SPSR_fc, #5             @ encoding: [0x05,0xf0,0x69,0xe3]
1491@ CHECK: msr	SPSR_fsxc, #5           @ encoding: [0x05,0xf0,0x6f,0xe3]
1492@ CHECK: msr	CPSR_fsxc, #5           @ encoding: [0x05,0xf0,0x2f,0xe3]
1493@ CHECK: msr	APSR_nzcvqg, #16711680  @ encoding: [0xff,0xf8,0x2c,0xe3]
1494@ CHECK: msr    APSR_nzcvq, #2147483658 @ encoding: [0x2a,0xf1,0x28,0xe3]
1495@ CHECK: msr    APSR_nzcvqg, #2147483658 @ encoding: [0x2a,0xf1,0x2c,0xe3]
1496@ CHECK: msr    SPSR_fsxc, #40, #2      @ encoding: [0x28,0xf1,0x6f,0xe3]
1497@ CHECK: msr    SPSR_fsxc, #40, #2      @ encoding: [0x28,0xf1,0x6f,0xe3]
1498@ CHECK: msr    SPSR_fsxc, #40, #2      @ encoding: [0x28,0xf1,0x6f,0xe3]
1499@ CHECK: msr    SPSR_fsxc, #40, #2      @ encoding: [0x28,0xf1,0x6f,0xe3]
1500
1501        msr  apsr, r0
1502        msr  apsr_g, r0
1503        msr  apsr_nzcvq, r0
1504        msr  APSR_nzcvq, r0
1505        msr  apsr_nzcvqg, r0
1506        msr  cpsr_fc, r0
1507        msr  cpsr_c, r0
1508        msr  cpsr_x, r0
1509        msr  cpsr_fc, r0
1510        msr  cpsr_all, r0
1511        msr  cpsr_fsx, r0
1512        msr  spsr_fc, r0
1513        msr  SPSR_fsxc, r0
1514        msr  cpsr_fsxc, r0
1515
1516@ CHECK: msr  APSR_nzcvq, r0            @ encoding: [0x00,0xf0,0x28,0xe1]
1517@ CHECK: msr  APSR_g, r0                @ encoding: [0x00,0xf0,0x24,0xe1]
1518@ CHECK: msr  APSR_nzcvq, r0            @ encoding: [0x00,0xf0,0x28,0xe1]
1519@ CHECK: msr  APSR_nzcvq, r0            @ encoding: [0x00,0xf0,0x28,0xe1]
1520@ CHECK: msr  APSR_nzcvqg, r0           @ encoding: [0x00,0xf0,0x2c,0xe1]
1521@ CHECK: msr  CPSR_fc, r0               @ encoding: [0x00,0xf0,0x29,0xe1]
1522@ CHECK: msr  CPSR_c, r0                @ encoding: [0x00,0xf0,0x21,0xe1]
1523@ CHECK: msr  CPSR_x, r0                @ encoding: [0x00,0xf0,0x22,0xe1]
1524@ CHECK: msr  CPSR_fc, r0               @ encoding: [0x00,0xf0,0x29,0xe1]
1525@ CHECK: msr  CPSR_fc, r0               @ encoding: [0x00,0xf0,0x29,0xe1]
1526@ CHECK: msr  CPSR_fsx, r0              @ encoding: [0x00,0xf0,0x2e,0xe1]
1527@ CHECK: msr  SPSR_fc, r0               @ encoding: [0x00,0xf0,0x69,0xe1]
1528@ CHECK: msr  SPSR_fsxc, r0             @ encoding: [0x00,0xf0,0x6f,0xe1]
1529@ CHECK: msr  CPSR_fsxc, r0             @ encoding: [0x00,0xf0,0x2f,0xe1]
1530
1531@------------------------------------------------------------------------------
1532@ MUL
1533@------------------------------------------------------------------------------
1534        mul r5, r6, r7
1535        muls r5, r6, r7
1536        mulgt r5, r6, r7
1537        mulsle r5, r6, r7
1538        mul r11, r5
1539
1540@ CHECK: mul	r5, r6, r7              @ encoding: [0x96,0x07,0x05,0xe0]
1541@ CHECK: muls	r5, r6, r7              @ encoding: [0x96,0x07,0x15,0xe0]
1542@ CHECK: mulgt	r5, r6, r7              @ encoding: [0x96,0x07,0x05,0xc0]
1543@ CHECK: mulsle	r5, r6, r7              @ encoding: [0x96,0x07,0x15,0xd0]
1544
1545
1546@------------------------------------------------------------------------------
1547@ MVN (immediate)
1548@------------------------------------------------------------------------------
1549        mvn r3, #7
1550        mvn r3, $7
1551        mvn r3, 7
1552        mvn r3, -7
1553        mvn r7, #~0xffffff00
1554        mvn r4, #0xff0
1555        mvn r5, #0xff0000
1556	mvn r7, #(0xff << 16)
1557        mvn r7, #-2147483638
1558        mvn r7, #42, #2
1559        mvn r7, #40, #2
1560        mvn r7, $40, $2
1561        mvn r7, 40, 2
1562        mvn r7, (2 * 20), (1 << 1)
1563        mvns r3, #7
1564        mvneq r4, #0xff0
1565        mvnseq r5, #0xff0000
1566
1567@ CHECK: mvn	r3, #7                  @ encoding: [0x07,0x30,0xe0,0xe3]
1568@ CHECK: mvn	r3, #7                  @ encoding: [0x07,0x30,0xe0,0xe3]
1569@ CHECK: mvn	r3, #7                  @ encoding: [0x07,0x30,0xe0,0xe3]
1570@ CHECK: mov	r3, #6                  @ encoding: [0x06,0x30,0xa0,0xe3]
1571@ CHECK: mvn    r7, #255                @ encoding: [0xff,0x70,0xe0,0xe3]
1572@ CHECK: mvn	r4, #4080               @ encoding: [0xff,0x4e,0xe0,0xe3]
1573@ CHECK: mvn	r5, #16711680           @ encoding: [0xff,0x58,0xe0,0xe3]
1574@ CHECK: mvn	r7, #16711680           @ encoding: [0xff,0x78,0xe0,0xe3]
1575@ CHECK: mvn    r7, #-2147483638        @ encoding: [0x2a,0x71,0xe0,0xe3]
1576@ CHECK: mvn    r7, #-2147483638        @ encoding: [0x2a,0x71,0xe0,0xe3]
1577@ CHECK: mvn    r7, #40, #2             @ encoding: [0x28,0x71,0xe0,0xe3]
1578@ CHECK: mvn    r7, #40, #2             @ encoding: [0x28,0x71,0xe0,0xe3]
1579@ CHECK: mvn    r7, #40, #2             @ encoding: [0x28,0x71,0xe0,0xe3]
1580@ CHECK: mvn    r7, #40, #2             @ encoding: [0x28,0x71,0xe0,0xe3]
1581@ CHECK: mvns	r3, #7                  @ encoding: [0x07,0x30,0xf0,0xe3]
1582@ CHECK: mvneq	r4, #4080               @ encoding: [0xff,0x4e,0xe0,0x03]
1583@ CHECK: mvnseq	r5, #16711680           @ encoding: [0xff,0x58,0xf0,0x03]
1584
1585
1586@------------------------------------------------------------------------------
1587@ MVN (register)
1588@------------------------------------------------------------------------------
1589        mvn r2, r3
1590        mvns r2, r3
1591        mvn r5, r6, lsl #19
1592        mvn r5, r6, lsr #9
1593        mvn r5, r6, asr #4
1594        mvn r5, r6, ror #6
1595        mvn r5, r6, rrx
1596        mvneq r2, r3
1597        mvnseq r2, r3, lsl #10
1598
1599@ CHECK: mvn	r2, r3                  @ encoding: [0x03,0x20,0xe0,0xe1]
1600@ CHECK: mvns	r2, r3                  @ encoding: [0x03,0x20,0xf0,0xe1]
1601@ CHECK: mvn	r5, r6, lsl #19         @ encoding: [0x86,0x59,0xe0,0xe1]
1602@ CHECK: mvn	r5, r6, lsr #9          @ encoding: [0xa6,0x54,0xe0,0xe1]
1603@ CHECK: mvn	r5, r6, asr #4          @ encoding: [0x46,0x52,0xe0,0xe1]
1604@ CHECK: mvn	r5, r6, ror #6          @ encoding: [0x66,0x53,0xe0,0xe1]
1605@ CHECK: mvn	r5, r6, rrx             @ encoding: [0x66,0x50,0xe0,0xe1]
1606@ CHECK: mvneq	r2, r3                  @ encoding: [0x03,0x20,0xe0,0x01]
1607@ CHECK: mvnseq	r2, r3, lsl #10         @ encoding: [0x03,0x25,0xf0,0x01]
1608
1609
1610@------------------------------------------------------------------------------
1611@ MVN (shifted register)
1612@------------------------------------------------------------------------------
1613        mvn r5, r6, lsl r7
1614        mvns r5, r6, lsr r7
1615        mvngt r5, r6, asr r7
1616        mvnslt r5, r6, ror r7
1617
1618@ CHECK: mvn	r5, r6, lsl r7          @ encoding: [0x16,0x57,0xe0,0xe1]
1619@ CHECK: mvns	r5, r6, lsr r7          @ encoding: [0x36,0x57,0xf0,0xe1]
1620@ CHECK: mvngt	r5, r6, asr r7          @ encoding: [0x56,0x57,0xe0,0xc1]
1621@ CHECK: mvnslt	r5, r6, ror r7          @ encoding: [0x76,0x57,0xf0,0xb1]
1622
1623@------------------------------------------------------------------------------
1624@ NEG
1625@------------------------------------------------------------------------------
1626        neg r5, r8
1627
1628@ CHECK: rsb	r5, r8, #0              @ encoding: [0x00,0x50,0x68,0xe2]
1629
1630
1631@------------------------------------------------------------------------------
1632@ NOP
1633@------------------------------------------------------------------------------
1634        nop
1635        nop.w
1636        nopgt
1637
1638@ CHECK: nop @ encoding: [0x00,0xf0,0x20,0xe3]
1639@ CHECK: nop @ encoding: [0x00,0xf0,0x20,0xe3]
1640@ CHECK: nopgt @ encoding: [0x00,0xf0,0x20,0xc3]
1641
1642
1643@------------------------------------------------------------------------------
1644@ ORR
1645@------------------------------------------------------------------------------
1646        orr r4, r5, #0xf000
1647        orr r4, r5, $0xf000
1648        orr r4, r5, 0xf000
1649	orr r7, r8, #(0xff << 16)
1650        orr r7, r8, #-2147483638
1651        orr r7, r8, #42, #2
1652        orr r7, r8, #40, #2
1653        orr r7, r8, $40, $2
1654        orr r7, r8, 40, 2
1655        orr r7, r8, (2 * 20), (1 << 1)
1656        orr r4, r5, r6
1657        orr r4, r5, r6, lsl #5
1658        orr r4, r5, r6, lsr #5
1659        orr r4, r5, r6, lsr #5
1660        orr r4, r5, r6, asr #5
1661        orr r4, r5, r6, ror #5
1662        orr r6, r7, r8, lsl r9
1663        orr r6, r7, r8, lsr r9
1664        orr r6, r7, r8, asr r9
1665        orr r6, r7, r8, ror r9
1666        orr r4, r5, r6, rrx
1667
1668        @ destination register is optional
1669        orr r5, #0xf000
1670        orr r5, $0xf000
1671        orr r5, 0xf000
1672
1673        orr r7, #(0xff << 16)
1674        orr r7, #-2147483638
1675        orr r7, #42, #2
1676        orr r7, #40, #2
1677        orr r7, $40, $2
1678        orr r7, 40, 2
1679        orr r7, (2 * 20), (1 << 1)
1680
1681        orr r4, r5
1682        orr r4, r5, lsl #5
1683        orr r4, r5, lsr #5
1684        orr r4, r5, lsr #5
1685        orr r4, r5, asr #5
1686        orr r4, r5, ror #5
1687        orr r6, r7, lsl r9
1688        orr r6, r7, lsr r9
1689        orr r6, r7, asr r9
1690        orr r6, r7, ror r9
1691        orr r4, r5, rrx
1692
1693@ CHECK: orr	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x85,0xe3]
1694@ CHECK: orr	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x85,0xe3]
1695@ CHECK: orr	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x85,0xe3]
1696@ CHECK: orr	r7, r8, #16711680       @ encoding: [0xff,0x78,0x88,0xe3]
1697@ CHECK: orr    r7, r8, #-2147483638    @ encoding: [0x2a,0x71,0x88,0xe3]
1698@ CHECK: orr    r7, r8, #-2147483638    @ encoding: [0x2a,0x71,0x88,0xe3]
1699@ CHECK: orr    r7, r8, #40, #2         @ encoding: [0x28,0x71,0x88,0xe3]
1700@ CHECK: orr    r7, r8, #40, #2         @ encoding: [0x28,0x71,0x88,0xe3]
1701@ CHECK: orr    r7, r8, #40, #2         @ encoding: [0x28,0x71,0x88,0xe3]
1702@ CHECK: orr    r7, r8, #40, #2         @ encoding: [0x28,0x71,0x88,0xe3]
1703@ CHECK: orr	r4, r5, r6              @ encoding: [0x06,0x40,0x85,0xe1]
1704@ CHECK: orr	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x85,0xe1]
1705@ CHECK: orr	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe1]
1706@ CHECK: orr	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe1]
1707@ CHECK: orr	r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x85,0xe1]
1708@ CHECK: orr	r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x85,0xe1]
1709@ CHECK: orr	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x87,0xe1]
1710@ CHECK: orr	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x87,0xe1]
1711@ CHECK: orr	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x87,0xe1]
1712@ CHECK: orr	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0xe1]
1713@ CHECK: orr	r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x85,0xe1]
1714
1715@ CHECK: orr	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0xe3]
1716@ CHECK: orr	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0xe3]
1717@ CHECK: orr	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0xe3]
1718@ CHECK: orr	r7, r7, #16711680       @ encoding: [0xff,0x78,0x87,0xe3]
1719@ CHECK: orr	r7, r7, #-2147483638    @ encoding: [0x2a,0x71,0x87,0xe3]
1720@ CHECK: orr	r7, r7, #-2147483638    @ encoding: [0x2a,0x71,0x87,0xe3]
1721@ CHECK: orr	r7, r7, #40, #2         @ encoding: [0x28,0x71,0x87,0xe3]
1722@ CHECK: orr 	r7, r7, #40, #2         @ encoding: [0x28,0x71,0x87,0xe3]
1723@ CHECK: orr 	r7, r7, #40, #2         @ encoding: [0x28,0x71,0x87,0xe3]
1724@ CHECK: orr 	r7, r7, #40, #2         @ encoding: [0x28,0x71,0x87,0xe3]
1725@ CHECK: orr	r4, r4, r5              @ encoding: [0x05,0x40,0x84,0xe1]
1726@ CHECK: orr	r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x84,0xe1]
1727@ CHECK: orr	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe1]
1728@ CHECK: orr	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe1]
1729@ CHECK: orr	r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x84,0xe1]
1730@ CHECK: orr	r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x84,0xe1]
1731@ CHECK: orr	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x86,0xe1]
1732@ CHECK: orr	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x86,0xe1]
1733@ CHECK: orr	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0xe1]
1734@ CHECK: orr	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x86,0xe1]
1735@ CHECK: orr	r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x84,0xe1]
1736
1737        orrseq r4, r5, #0xf000
1738        orrne r4, r5, r6
1739        orrseq r4, r5, r6, lsl #5
1740        orrlo r6, r7, r8, ror r9
1741        orrshi r4, r5, r6, rrx
1742        orrcs r5, #0xf000
1743        orrseq r4, r5
1744        orrne r6, r7, asr r9
1745        orrslt r6, r7, ror r9
1746        orrsgt r4, r5, rrx
1747
1748@ CHECK: orrseq	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x95,0x03]
1749@ CHECK: orrne	r4, r5, r6              @ encoding: [0x06,0x40,0x85,0x11]
1750@ CHECK: orrseq	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x95,0x01]
1751@ CHECK: orrlo	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0x31]
1752@ CHECK: orrshi	r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x95,0x81]
1753@ CHECK: orrhs	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0x23]
1754@ CHECK: orrseq	r4, r4, r5              @ encoding: [0x05,0x40,0x94,0x01]
1755@ CHECK: orrne	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0x11]
1756@ CHECK: orrslt	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x96,0xb1]
1757@ CHECK: orrsgt	r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x94,0xc1]
1758
1759    @ Test right shift by 32, which is encoded as 0
1760    orr r3, r1, r2, lsr #32
1761    orr r3, r1, r2, asr #32
1762@ CHECK: orr	r3, r1, r2, lsr #32     @ encoding: [0x22,0x30,0x81,0xe1]
1763@ CHECK: orr	r3, r1, r2, asr #32     @ encoding: [0x42,0x30,0x81,0xe1]
1764
1765@------------------------------------------------------------------------------
1766@ PKH
1767@------------------------------------------------------------------------------
1768        pkhbt r2, r2, r3
1769        pkhbt r2, r2, r3, lsl #31
1770        pkhbt r2, r2, r3, lsl #0
1771        pkhbt r2, r2, r3, lsl #15
1772
1773        pkhtb r2, r2, r3
1774        pkhtb r2, r2, r3, asr #31
1775        pkhtb r2, r2, r3, asr #15
1776
1777@ CHECK: pkhbt	r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
1778@ CHECK: pkhbt	r2, r2, r3, lsl #31     @ encoding: [0x93,0x2f,0x82,0xe6]
1779@ CHECK: pkhbt	r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
1780@ CHECK: pkhbt	r2, r2, r3, lsl #15     @ encoding: [0x93,0x27,0x82,0xe6]
1781
1782@ CHECK: pkhbt	r2, r3, r2              @ encoding: [0x12,0x20,0x83,0xe6]
1783@ CHECK: pkhtb	r2, r2, r3, asr #31     @ encoding: [0xd3,0x2f,0x82,0xe6]
1784@ CHECK: pkhtb	r2, r2, r3, asr #15     @ encoding: [0xd3,0x27,0x82,0xe6]
1785
1786@------------------------------------------------------------------------------
1787@ FIXME: PLD
1788@------------------------------------------------------------------------------
1789@------------------------------------------------------------------------------
1790@ FIXME: PLI
1791@------------------------------------------------------------------------------
1792
1793
1794@------------------------------------------------------------------------------
1795@ POP
1796@------------------------------------------------------------------------------
1797        pop {r7}
1798        pop {r7, r8, r9, r10}
1799
1800@ CHECK: pop	{r7}                    @ encoding: [0x04,0x70,0x9d,0xe4]
1801@ CHECK: pop	{r7, r8, r9, r10}       @ encoding: [0x80,0x07,0xbd,0xe8]
1802
1803
1804@------------------------------------------------------------------------------
1805@ PUSH
1806@------------------------------------------------------------------------------
1807        push {r7}
1808        push {r7, r8, r9, r10}
1809
1810@ CHECK: push	{r7}                    @ encoding: [0x04,0x70,0x2d,0xe5]
1811@ CHECK: push	{r7, r8, r9, r10}       @ encoding: [0x80,0x07,0x2d,0xe9]
1812
1813
1814@------------------------------------------------------------------------------
1815@ QADD/QADD16/QADD8
1816@------------------------------------------------------------------------------
1817        qadd r1, r2, r3
1818        qaddne r1, r2, r3
1819        qadd16 r1, r2, r3
1820        qadd16gt r1, r2, r3
1821        qadd8 r1, r2, r3
1822        qadd8le r1, r2, r3
1823
1824@ CHECK: qadd	r1, r2, r3              @ encoding: [0x52,0x10,0x03,0xe1]
1825@ CHECK: qaddne	r1, r2, r3              @ encoding: [0x52,0x10,0x03,0x11]
1826@ CHECK: qadd16	r1, r2, r3              @ encoding: [0x13,0x1f,0x22,0xe6]
1827@ CHECK: qadd16gt	r1, r2, r3      @ encoding: [0x13,0x1f,0x22,0xc6]
1828@ CHECK: qadd8	r1, r2, r3              @ encoding: [0x93,0x1f,0x22,0xe6]
1829@ CHECK: qadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x22,0xd6]
1830
1831
1832@------------------------------------------------------------------------------
1833@ QDADD/QDSUB
1834@------------------------------------------------------------------------------
1835        qdadd r6, r7, r8
1836        qdaddhi r6, r7, r8
1837        qdsub r6, r7, r8
1838        qdsubhi r6, r7, r8
1839
1840@ CHECK: qdadd	r6, r7, r8              @ encoding: [0x57,0x60,0x48,0xe1]
1841@ CHECK: qdaddhi r6, r7, r8             @ encoding: [0x57,0x60,0x48,0x81]
1842@ CHECK: qdsub	r6, r7, r8              @ encoding: [0x57,0x60,0x68,0xe1]
1843@ CHECK: qdsubhi r6, r7, r8             @ encoding: [0x57,0x60,0x68,0x81]
1844
1845
1846@------------------------------------------------------------------------------
1847@ QSAX
1848@------------------------------------------------------------------------------
1849        qsax r9, r12, r0
1850        qsaxeq r9, r12, r0
1851
1852@ CHECK: qsax	r9, r12, r0             @ encoding: [0x50,0x9f,0x2c,0xe6]
1853@ CHECK: qsaxeq	r9, r12, r0             @ encoding: [0x50,0x9f,0x2c,0x06]
1854
1855
1856@------------------------------------------------------------------------------
1857@ QSUB/QSUB16/QSUB8
1858@------------------------------------------------------------------------------
1859        qsub r1, r2, r3
1860        qsubne r1, r2, r3
1861        qsub16 r1, r2, r3
1862        qsub16gt r1, r2, r3
1863        qsub8 r1, r2, r3
1864        qsub8le r1, r2, r3
1865
1866@ CHECK: qsub	r1, r2, r3              @ encoding: [0x52,0x10,0x23,0xe1]
1867@ CHECK: qsubne	r1, r2, r3              @ encoding: [0x52,0x10,0x23,0x11]
1868@ CHECK: qsub16	r1, r2, r3              @ encoding: [0x73,0x1f,0x22,0xe6]
1869@ CHECK: qsub16gt	r1, r2, r3      @ encoding: [0x73,0x1f,0x22,0xc6]
1870@ CHECK: qsub8	r1, r2, r3              @ encoding: [0xf3,0x1f,0x22,0xe6]
1871@ CHECK: qsub8le r1, r2, r3             @ encoding: [0xf3,0x1f,0x22,0xd6]
1872
1873
1874@------------------------------------------------------------------------------
1875@ RBIT
1876@------------------------------------------------------------------------------
1877        rbit r1, r2
1878        rbitne r1, r2
1879
1880@ CHECK: rbit	r1, r2                  @ encoding: [0x32,0x1f,0xff,0xe6]
1881@ CHECK: rbitne	r1, r2                  @ encoding: [0x32,0x1f,0xff,0x16]
1882
1883
1884@------------------------------------------------------------------------------
1885@ REV/REV16/REVSH
1886@------------------------------------------------------------------------------
1887        rev r1, r9
1888        revne r1, r5
1889        rev16 r8, r3
1890        rev16ne r12, r4
1891        revsh r4, r9
1892        revshne r9, r1
1893
1894@ CHECK: rev	r1, r9                  @ encoding: [0x39,0x1f,0xbf,0xe6]
1895@ CHECK: revne	r1, r5                  @ encoding: [0x35,0x1f,0xbf,0x16]
1896@ CHECK: rev16	r8, r3                  @ encoding: [0xb3,0x8f,0xbf,0xe6]
1897@ CHECK: rev16ne r12, r4                @ encoding: [0xb4,0xcf,0xbf,0x16]
1898@ CHECK: revsh	r4, r9                  @ encoding: [0xb9,0x4f,0xff,0xe6]
1899@ CHECK: revshne r9, r1                 @ encoding: [0xb1,0x9f,0xff,0x16]
1900
1901
1902@------------------------------------------------------------------------------
1903@ RFE
1904@------------------------------------------------------------------------------
1905        rfeda r2
1906        rfedb r3
1907        rfeia r5
1908        rfeib r6
1909
1910        rfeda r4!
1911        rfedb r7!
1912        rfeia r9!
1913        rfeib r8!
1914
1915        rfefa r2
1916        rfeea r3
1917        rfefd r5
1918        rfeed r6
1919
1920        rfefa r4!
1921        rfeea r7!
1922        rfefd r9!
1923        rfeed r8!
1924
1925        rfe r1
1926        rfe r1!
1927
1928@ CHECK: rfeda	r2                      @ encoding: [0x00,0x0a,0x12,0xf8]
1929@ CHECK: rfedb	r3                      @ encoding: [0x00,0x0a,0x13,0xf9]
1930@ CHECK: rfeia	r5                      @ encoding: [0x00,0x0a,0x95,0xf8]
1931@ CHECK: rfeib	r6                      @ encoding: [0x00,0x0a,0x96,0xf9]
1932
1933@ CHECK: rfeda	r4!                     @ encoding: [0x00,0x0a,0x34,0xf8]
1934@ CHECK: rfedb	r7!                     @ encoding: [0x00,0x0a,0x37,0xf9]
1935@ CHECK: rfeia	r9!                     @ encoding: [0x00,0x0a,0xb9,0xf8]
1936@ CHECK: rfeib	r8!                     @ encoding: [0x00,0x0a,0xb8,0xf9]
1937
1938@ CHECK: rfeda	r2                      @ encoding: [0x00,0x0a,0x12,0xf8]
1939@ CHECK: rfedb	r3                      @ encoding: [0x00,0x0a,0x13,0xf9]
1940@ CHECK: rfeia	r5                      @ encoding: [0x00,0x0a,0x95,0xf8]
1941@ CHECK: rfeib	r6                      @ encoding: [0x00,0x0a,0x96,0xf9]
1942
1943@ CHECK: rfeda	r4!                     @ encoding: [0x00,0x0a,0x34,0xf8]
1944@ CHECK: rfedb	r7!                     @ encoding: [0x00,0x0a,0x37,0xf9]
1945@ CHECK: rfeia	r9!                     @ encoding: [0x00,0x0a,0xb9,0xf8]
1946@ CHECK: rfeib	r8!                     @ encoding: [0x00,0x0a,0xb8,0xf9]
1947
1948@ CHECK: rfeia	r1                      @ encoding: [0x00,0x0a,0x91,0xf8]
1949@ CHECK: rfeia	r1!                     @ encoding: [0x00,0x0a,0xb1,0xf8]
1950
1951
1952@------------------------------------------------------------------------------
1953@ ROR
1954@------------------------------------------------------------------------------
1955	ror r2, r4, #31
1956	ror r2, r4, #1
1957	ror r2, r4, #0
1958	ror r4, #1
1959
1960@ CHECK: ror	r2, r4, #31             @ encoding: [0xe4,0x2f,0xa0,0xe1]
1961@ CHECK: ror	r2, r4, #1              @ encoding: [0xe4,0x20,0xa0,0xe1]
1962@ CHECK: mov	r2, r4                  @ encoding: [0x04,0x20,0xa0,0xe1]
1963@ CHECK: ror	r4, r4, #1              @ encoding: [0xe4,0x40,0xa0,0xe1]
1964
1965
1966@------------------------------------------------------------------------------
1967@ RSB
1968@------------------------------------------------------------------------------
1969        rsb r4, r5, #0xf000
1970        rsb r4, r5, $0xf000
1971        rsb r4, r5, 0xf000
1972        rsb r7, r8, #(0xff << 16)
1973        rsb r7, r8, #-2147483638
1974        rsb r7, r8, #42, #2
1975        rsb r7, r8, #40, #2
1976        rsb r7, r8, $40, $2
1977        rsb r7, r8, 40, 2
1978        rsb r7, r8, (2 * 20), (1 << 1)
1979        rsb r4, r5, r6
1980        rsb r4, r5, r6, lsl #5
1981        rsblo r4, r5, r6, lsr #5
1982        rsb r4, r5, r6, lsr #5
1983        rsb r4, r5, r6, asr #5
1984        rsb r4, r5, r6, ror #5
1985        rsb r6, r7, r8, lsl r9
1986        rsb r6, r7, r8, lsr r9
1987        rsb r6, r7, r8, asr r9
1988        rsble r6, r7, r8, ror r9
1989        rsb r4, r5, r6, rrx
1990
1991        @ destination register is optional
1992        rsb r5, #0xf000
1993        rsb r5, $0xf000
1994        rsb r5, 0xf000
1995        rsb r7, #(0xff << 16)
1996        rsb r7, #-2147483638
1997        rsb r7, #42, #2
1998        rsb r7, #40, #2
1999        rsb r7, $40, $2
2000        rsb r7, 40, 2
2001        rsb r7, (2 * 20), (1 << 1)
2002        rsb r4, r5
2003        rsb r4, r5, lsl #5
2004        rsb r4, r5, lsr #5
2005        rsbne r4, r5, lsr #5
2006        rsb r4, r5, asr #5
2007        rsb r4, r5, ror #5
2008        rsbgt r6, r7, lsl r9
2009        rsb r6, r7, lsr r9
2010        rsb r6, r7, asr r9
2011        rsb r6, r7, ror r9
2012        rsb r4, r5, rrx
2013
2014@ CHECK: rsb	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x65,0xe2]
2015@ CHECK: rsb	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x65,0xe2]
2016@ CHECK: rsb	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x65,0xe2]
2017@ CHECK: rsb	r7, r8, #16711680       @ encoding: [0xff,0x78,0x68,0xe2]
2018@ CHECK: rsb    r7, r8, #-2147483638    @ encoding: [0x2a,0x71,0x68,0xe2]
2019@ CHECK: rsb    r7, r8, #-2147483638    @ encoding: [0x2a,0x71,0x68,0xe2]
2020@ CHECK: rsb    r7, r8, #40, #2         @ encoding: [0x28,0x71,0x68,0xe2]
2021@ CHECK: rsb    r7, r8, #40, #2         @ encoding: [0x28,0x71,0x68,0xe2]
2022@ CHECK: rsb    r7, r8, #40, #2         @ encoding: [0x28,0x71,0x68,0xe2]
2023@ CHECK: rsb    r7, r8, #40, #2         @ encoding: [0x28,0x71,0x68,0xe2]
2024@ CHECK: rsb	r4, r5, r6              @ encoding: [0x06,0x40,0x65,0xe0]
2025@ CHECK: rsb	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x65,0xe0]
2026@ CHECK: rsblo	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x65,0x30]
2027@ CHECK: rsb	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x65,0xe0]
2028@ CHECK: rsb	r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x65,0xe0]
2029@ CHECK: rsb	r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x65,0xe0]
2030@ CHECK: rsb	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x67,0xe0]
2031@ CHECK: rsb	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x67,0xe0]
2032@ CHECK: rsb	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x67,0xe0]
2033@ CHECK: rsble	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x67,0xd0]
2034@ CHECK: rsb	r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x65,0xe0]
2035
2036@ CHECK: rsb	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x65,0xe2]
2037@ CHECK: rsb	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x65,0xe2]
2038@ CHECK: rsb	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x65,0xe2]
2039@ CHECK: rsb	r7, r7, #16711680       @ encoding: [0xff,0x78,0x67,0xe2]
2040@ CHECK: rsb	r7, r7, #-2147483638    @ encoding: [0x2a,0x71,0x67,0xe2]
2041@ CHECK: rsb	r7, r7, #-2147483638    @ encoding: [0x2a,0x71,0x67,0xe2]
2042@ CHECK: rsb	r7, r7, #40, #2         @ encoding: [0x28,0x71,0x67,0xe2]
2043@ CHECK: rsb	r7, r7, #40, #2         @ encoding: [0x28,0x71,0x67,0xe2]
2044@ CHECK: rsb	r7, r7, #40, #2         @ encoding: [0x28,0x71,0x67,0xe2]
2045@ CHECK: rsb	r7, r7, #40, #2         @ encoding: [0x28,0x71,0x67,0xe2]
2046@ CHECK: rsb	r4, r4, r5              @ encoding: [0x05,0x40,0x64,0xe0]
2047@ CHECK: rsb	r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x64,0xe0]
2048@ CHECK: rsb	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x64,0xe0]
2049@ CHECK: rsbne	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x64,0x10]
2050@ CHECK: rsb	r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x64,0xe0]
2051@ CHECK: rsb	r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x64,0xe0]
2052@ CHECK: rsbgt	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x66,0xc0]
2053@ CHECK: rsb	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x66,0xe0]
2054@ CHECK: rsb	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x66,0xe0]
2055@ CHECK: rsb	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x66,0xe0]
2056@ CHECK: rsb	r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x64,0xe0]
2057
2058@------------------------------------------------------------------------------
2059@ RSBS
2060@------------------------------------------------------------------------------
2061    rsbs r7, #16711680
2062    rsbs r7, $16711680
2063    rsbs r7, 16711680
2064    rsbs r7, #(0xff << 16)
2065    rsbs r7, r8, #-2147483638
2066    rsbs r7, r8, #42, #2
2067    rsbs r7, r8, #40, #2
2068    rsbs r7, r8, $40, $2
2069    rsbs r7, r8, 40, 2
2070    rsbs r7, r8, (2 * 20), (1 << 1)
2071
2072@ CHECK: rsbs	r7, r7, #16711680       @ encoding: [0xff,0x78,0x77,0xe2]
2073@ CHECK: rsbs	r7, r7, #16711680       @ encoding: [0xff,0x78,0x77,0xe2]
2074@ CHECK: rsbs	r7, r7, #16711680       @ encoding: [0xff,0x78,0x77,0xe2]
2075@ CHECK: rsbs	r7, r7, #16711680       @ encoding: [0xff,0x78,0x77,0xe2]
2076@ CHECK: rsbs   r7, r8, #-2147483638    @ encoding: [0x2a,0x71,0x78,0xe2]
2077@ CHECK: rsbs   r7, r8, #-2147483638    @ encoding: [0x2a,0x71,0x78,0xe2]
2078@ CHECK: rsbs   r7, r8, #40, #2         @ encoding: [0x28,0x71,0x78,0xe2]
2079@ CHECK: rsbs   r7, r8, #40, #2         @ encoding: [0x28,0x71,0x78,0xe2]
2080@ CHECK: rsbs   r7, r8, #40, #2         @ encoding: [0x28,0x71,0x78,0xe2]
2081@ CHECK: rsbs   r7, r8, #40, #2         @ encoding: [0x28,0x71,0x78,0xe2]
2082
2083@------------------------------------------------------------------------------
2084@ RSC
2085@------------------------------------------------------------------------------
2086        rsc r4, r5, #0xf000
2087        rsc r4, r5, $0xf000
2088        rsc r4, r5, 0xf000
2089        rsc r7, r8, #(0xff << 16)
2090        rsc r7, r8, #-2147483638
2091        rsc r7, r8, #42, #2
2092        rsc r7, r8, #40, #2
2093        rsc r7, r8, $40, $2
2094        rsc r7, r8, 40, 2
2095        rsc r7, r8, (2 * 20), (1 << 1)
2096        rsc r4, r5, r6
2097        rsc r4, r5, r6, lsl #5
2098        rsclo r4, r5, r6, lsr #5
2099        rsc r4, r5, r6, lsr #5
2100        rsc r4, r5, r6, asr #5
2101        rsc r4, r5, r6, ror #5
2102        rsc r6, r7, r8, lsl r9
2103        rsc r6, r7, r8, lsr r9
2104        rsc r6, r7, r8, asr r9
2105        rscle r6, r7, r8, ror r9
2106        rscs r1, r8, #4064
2107
2108        @ destination register is optional
2109        rsc r5, #0xf000
2110        rsc r5, $0xf000
2111        rsc r5, 0xf000
2112        rsc r7, #(0xff << 16)
2113        rsc r7, #-2147483638
2114        rsc r7, #42, #2
2115        rsc r7, #40, #2
2116        rsc r7, $40, $2
2117        rsc r7, 40, 2
2118        rsc r7, (2 * 20), (1 << 1)
2119        rsc r4, r5
2120        rsc r4, r5, lsl #5
2121        rsc r4, r5, lsr #5
2122        rscne r4, r5, lsr #5
2123        rsc r4, r5, asr #5
2124        rsc r4, r5, ror #5
2125        rscgt r6, r7, lsl r9
2126        rsc r6, r7, lsr r9
2127        rsc r6, r7, asr r9
2128        rsc r6, r7, ror r9
2129
2130@ CHECK: rsc	r4, r5, #61440          @ encoding: [0x0f,0x4a,0xe5,0xe2]
2131@ CHECK: rsc	r4, r5, #61440          @ encoding: [0x0f,0x4a,0xe5,0xe2]
2132@ CHECK: rsc	r4, r5, #61440          @ encoding: [0x0f,0x4a,0xe5,0xe2]
2133@ CHECK: rsc    r7, r8, #16711680       @ encoding: [0xff,0x78,0xe8,0xe2]
2134@ CHECK: rsc    r7, r8, #-2147483638    @ encoding: [0x2a,0x71,0xe8,0xe2]
2135@ CHECK: rsc    r7, r8, #-2147483638    @ encoding: [0x2a,0x71,0xe8,0xe2]
2136@ CHECK: rsc    r7, r8, #40, #2         @ encoding: [0x28,0x71,0xe8,0xe2]
2137@ CHECK: rsc    r7, r8, #40, #2         @ encoding: [0x28,0x71,0xe8,0xe2]
2138@ CHECK: rsc    r7, r8, #40, #2         @ encoding: [0x28,0x71,0xe8,0xe2]
2139@ CHECK: rsc    r7, r8, #40, #2         @ encoding: [0x28,0x71,0xe8,0xe2]
2140@ CHECK: rsc	r4, r5, r6              @ encoding: [0x06,0x40,0xe5,0xe0]
2141@ CHECK: rsc	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0xe5,0xe0]
2142@ CHECK: rsclo	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xe5,0x30]
2143@ CHECK: rsc	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xe5,0xe0]
2144@ CHECK: rsc	r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0xe5,0xe0]
2145@ CHECK: rsc	r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0xe5,0xe0]
2146@ CHECK: rsc	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0xe7,0xe0]
2147@ CHECK: rsc	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0xe7,0xe0]
2148@ CHECK: rsc	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0xe7,0xe0]
2149@ CHECK: rscle	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0xe7,0xd0]
2150@ CHECK: rscs	r1, r8, #4064           @ encoding: [0xfe,0x1e,0xf8,0xe2]
2151
2152@ CHECK: rsc	r5, r5, #61440          @ encoding: [0x0f,0x5a,0xe5,0xe2]
2153@ CHECK: rsc	r5, r5, #61440          @ encoding: [0x0f,0x5a,0xe5,0xe2]
2154@ CHECK: rsc	r5, r5, #61440          @ encoding: [0x0f,0x5a,0xe5,0xe2]
2155@ CHECK: rsc	r7, r7, #16711680       @ encoding: [0xff,0x78,0xe7,0xe2]
2156@ CHECK: rsc	r7, r7, #-2147483638    @ encoding: [0x2a,0x71,0xe7,0xe2]
2157@ CHECK: rsc	r7, r7, #-2147483638    @ encoding: [0x2a,0x71,0xe7,0xe2]
2158@ CHECK: rsc	r7, r7, #40, #2         @ encoding: [0x28,0x71,0xe7,0xe2]
2159@ CHECK: rsc	r7, r7, #40, #2         @ encoding: [0x28,0x71,0xe7,0xe2]
2160@ CHECK: rsc	r7, r7, #40, #2         @ encoding: [0x28,0x71,0xe7,0xe2]
2161@ CHECK: rsc	r7, r7, #40, #2         @ encoding: [0x28,0x71,0xe7,0xe2]
2162@ CHECK: rsc	r4, r4, r5              @ encoding: [0x05,0x40,0xe4,0xe0]
2163@ CHECK: rsc	r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0xe4,0xe0]
2164@ CHECK: rsc	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xe4,0xe0]
2165@ CHECK: rscne	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xe4,0x10]
2166@ CHECK: rsc	r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0xe4,0xe0]
2167@ CHECK: rsc	r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0xe4,0xe0]
2168@ CHECK: rscgt	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0xe6,0xc0]
2169@ CHECK: rsc	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0xe6,0xe0]
2170@ CHECK: rsc	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0xe6,0xe0]
2171@ CHECK: rsc	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xe6,0xe0]
2172
2173@------------------------------------------------------------------------------
2174@ RRX/RRXS
2175@------------------------------------------------------------------------------
2176
2177         rrx r0, r1
2178	 rrx sp, pc
2179	 rrx pc, lr
2180	 rrx lr, sp
2181
2182@ CHECK: rrx	r0, r1                  @ encoding: [0x61,0x00,0xa0,0xe1]
2183@ CHECK: rrx	sp, pc                  @ encoding: [0x6f,0xd0,0xa0,0xe1]
2184@ CHECK: rrx	pc, lr                  @ encoding: [0x6e,0xf0,0xa0,0xe1]
2185@ CHECK: rrx	lr, sp                  @ encoding: [0x6d,0xe0,0xa0,0xe1]
2186
2187         rrxs r0, r1
2188	 rrxs sp, pc
2189	 rrxs pc, lr
2190	 rrxs lr, sp
2191
2192@CHECK: rrxs	r0, r1                  @ encoding: [0x61,0x00,0xb0,0xe1]
2193@CHECK: rrxs	sp, pc                  @ encoding: [0x6f,0xd0,0xb0,0xe1]
2194@CHECK: rrxs	pc, lr                  @ encoding: [0x6e,0xf0,0xb0,0xe1]
2195@CHECK: rrxs	lr, sp                  @ encoding: [0x6d,0xe0,0xb0,0xe1]
2196
2197@ ------------------------------------------------------------------------------
2198@ SADD16/SADD8
2199@------------------------------------------------------------------------------
2200        sadd16 r1, r2, r3
2201        sadd16gt r1, r2, r3
2202        sadd8 r1, r2, r3
2203        sadd8le r1, r2, r3
2204
2205@ CHECK: sadd16	r1, r2, r3              @ encoding: [0x13,0x1f,0x12,0xe6]
2206@ CHECK: sadd16gt	r1, r2, r3      @ encoding: [0x13,0x1f,0x12,0xc6]
2207@ CHECK: sadd8	r1, r2, r3              @ encoding: [0x93,0x1f,0x12,0xe6]
2208@ CHECK: sadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x12,0xd6]
2209
2210
2211@------------------------------------------------------------------------------
2212@ SASX
2213@------------------------------------------------------------------------------
2214        sasx r9, r12, r0
2215        sasxeq r9, r12, r0
2216
2217@ CHECK: sasx	r9, r12, r0             @ encoding: [0x30,0x9f,0x1c,0xe6]
2218@ CHECK: sasxeq	r9, r12, r0             @ encoding: [0x30,0x9f,0x1c,0x06]
2219
2220
2221@------------------------------------------------------------------------------
2222@ SBC
2223@------------------------------------------------------------------------------
2224        sbc r4, r5, #0xf000
2225        sbc r4, r5, $0xf000
2226        sbc r4, r5, 0xf000
2227        sbc r7, r8, #(0xff << 16)
2228        sbc r7, r8, #-2147483638
2229        sbc r7, r8, #42, #2
2230        sbc r7, r8, #40, #2
2231        sbc r7, r8, $40, $2
2232        sbc r7, r8, 40, 2
2233        sbc r7, r8, (20 * 2), (1 << 1)
2234        sbc r4, r5, r6
2235        sbc r4, r5, r6, lsl #5
2236        sbc r4, r5, r6, lsr #5
2237        sbc r4, r5, r6, lsr #5
2238        sbc r4, r5, r6, asr #5
2239        sbc r4, r5, r6, ror #5
2240        sbc r6, r7, r8, lsl r9
2241        sbc r6, r7, r8, lsr r9
2242        sbc r6, r7, r8, asr r9
2243        sbc r6, r7, r8, ror r9
2244
2245        @ destination register is optional
2246        sbc r5, #0xf000
2247        sbc r5, $0xf000
2248        sbc r5, 0xf000
2249        sbc r7, #(0xff << 16)
2250        sbc r7, #-2147483638
2251        sbc r7, #42, #2
2252        sbc r7, #40, #2
2253        sbc r7, $40, $2
2254        sbc r7, 40, 2
2255        sbc r7, (20 * 2), (1 << 1)
2256        sbc r4, r5
2257        sbc r4, r5, lsl #5
2258        sbc r4, r5, lsr #5
2259        sbc r4, r5, lsr #5
2260        sbc r4, r5, asr #5
2261        sbc r4, r5, ror #5
2262        sbc r6, r7, lsl r9
2263        sbc r6, r7, lsr r9
2264        sbc r6, r7, asr r9
2265        sbc r6, r7, ror r9
2266
2267@ CHECK: sbc	r4, r5, #61440          @ encoding: [0x0f,0x4a,0xc5,0xe2]
2268@ CHECK: sbc	r4, r5, #61440          @ encoding: [0x0f,0x4a,0xc5,0xe2]
2269@ CHECK: sbc	r4, r5, #61440          @ encoding: [0x0f,0x4a,0xc5,0xe2]
2270@ CHECK: sbc	r7, r8, #16711680       @ encoding: [0xff,0x78,0xc8,0xe2]
2271@ CHECK: sbc    r7, r8, #-2147483638    @ encoding: [0x2a,0x71,0xc8,0xe2]
2272@ CHECK: sbc    r7, r8, #-2147483638    @ encoding: [0x2a,0x71,0xc8,0xe2]
2273@ CHECK: sbc    r7, r8, #40, #2         @ encoding: [0x28,0x71,0xc8,0xe2]
2274@ CHECK: sbc    r7, r8, #40, #2         @ encoding: [0x28,0x71,0xc8,0xe2]
2275@ CHECK: sbc    r7, r8, #40, #2         @ encoding: [0x28,0x71,0xc8,0xe2]
2276@ CHECK: sbc    r7, r8, #40, #2         @ encoding: [0x28,0x71,0xc8,0xe2]
2277@ CHECK: sbc	r4, r5, r6              @ encoding: [0x06,0x40,0xc5,0xe0]
2278@ CHECK: sbc	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0xc5,0xe0]
2279@ CHECK: sbc	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xc5,0xe0]
2280@ CHECK: sbc	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xc5,0xe0]
2281@ CHECK: sbc	r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0xc5,0xe0]
2282@ CHECK: sbc	r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0xc5,0xe0]
2283@ CHECK: sbc	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0xc7,0xe0]
2284@ CHECK: sbc	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0xc7,0xe0]
2285@ CHECK: sbc	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0xc7,0xe0]
2286@ CHECK: sbc	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0xc7,0xe0]
2287
2288@ CHECK: sbc	r5, r5, #61440          @ encoding: [0x0f,0x5a,0xc5,0xe2]
2289@ CHECK: sbc	r5, r5, #61440          @ encoding: [0x0f,0x5a,0xc5,0xe2]
2290@ CHECK: sbc	r5, r5, #61440          @ encoding: [0x0f,0x5a,0xc5,0xe2]
2291@ CHECK: sbc	r7, r7, #16711680       @ encoding: [0xff,0x78,0xc7,0xe2]
2292@ CHECK: sbc	r7, r7, #-2147483638    @ encoding: [0x2a,0x71,0xc7,0xe2]
2293@ CHECK: sbc	r7, r7, #-2147483638    @ encoding: [0x2a,0x71,0xc7,0xe2]
2294@ CHECK: sbc	r7, r7, #40, #2         @ encoding: [0x28,0x71,0xc7,0xe2]
2295@ CHECK: sbc	r7, r7, #40, #2         @ encoding: [0x28,0x71,0xc7,0xe2]
2296@ CHECK: sbc	r7, r7, #40, #2         @ encoding: [0x28,0x71,0xc7,0xe2]
2297@ CHECK: sbc	r7, r7, #40, #2         @ encoding: [0x28,0x71,0xc7,0xe2]
2298@ CHECK: sbc	r4, r4, r5              @ encoding: [0x05,0x40,0xc4,0xe0]
2299@ CHECK: sbc	r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0xc4,0xe0]
2300@ CHECK: sbc	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xc4,0xe0]
2301@ CHECK: sbc	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xc4,0xe0]
2302@ CHECK: sbc	r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0xc4,0xe0]
2303@ CHECK: sbc	r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0xc4,0xe0]
2304@ CHECK: sbc	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0xc6,0xe0]
2305@ CHECK: sbc	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0xc6,0xe0]
2306@ CHECK: sbc	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0xc6,0xe0]
2307@ CHECK: sbc	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xc6,0xe0]
2308
2309
2310@------------------------------------------------------------------------------
2311@ SBFX
2312@------------------------------------------------------------------------------
2313        sbfx r4, r5, #16, #1
2314        sbfxgt r4, r5, #16, #16
2315
2316@ CHECK: sbfx	r4, r5, #16, #1         @ encoding: [0x55,0x48,0xa0,0xe7]
2317@ CHECK: sbfxgt	r4, r5, #16, #16        @ encoding: [0x55,0x48,0xaf,0xc7]
2318
2319
2320@------------------------------------------------------------------------------
2321@ SEL
2322@------------------------------------------------------------------------------
2323        sel r9, r2, r1
2324        selne r9, r2, r1
2325
2326@ CHECK: sel	r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0xe6]
2327@ CHECK: selne	r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0x16]
2328
2329
2330@------------------------------------------------------------------------------
2331@ SETEND
2332@------------------------------------------------------------------------------
2333        setend be
2334        setend BE
2335        setend le
2336        setend LE
2337
2338@ CHECK: setend	be                      @ encoding: [0x00,0x02,0x01,0xf1]
2339@ CHECK: setend	be                      @ encoding: [0x00,0x02,0x01,0xf1]
2340@ CHECK: setend	le                      @ encoding: [0x00,0x00,0x01,0xf1]
2341@ CHECK: setend	le                      @ encoding: [0x00,0x00,0x01,0xf1]
2342
2343
2344@------------------------------------------------------------------------------
2345@ SEV
2346@------------------------------------------------------------------------------
2347        sev
2348        seveq
2349
2350@ CHECK: sev                            @ encoding: [0x04,0xf0,0x20,0xe3]
2351@ CHECK: seveq                          @ encoding: [0x04,0xf0,0x20,0x03]
2352
2353
2354@------------------------------------------------------------------------------
2355@ SHADD16/SHADD8
2356@------------------------------------------------------------------------------
2357        shadd16 r4, r8, r2
2358        shadd16gt r4, r8, r2
2359        shadd8 r4, r8, r2
2360        shadd8gt r4, r8, r2
2361
2362@ CHECK: shadd16	r4, r8, r2      @ encoding: [0x12,0x4f,0x38,0xe6]
2363@ CHECK: shadd16gt	r4, r8, r2      @ encoding: [0x12,0x4f,0x38,0xc6]
2364@ CHECK: shadd8	r4, r8, r2              @ encoding: [0x92,0x4f,0x38,0xe6]
2365@ CHECK: shadd8gt	r4, r8, r2      @ encoding: [0x92,0x4f,0x38,0xc6]
2366
2367
2368@------------------------------------------------------------------------------
2369@ SHASX
2370@------------------------------------------------------------------------------
2371        shasx r4, r8, r2
2372        shasxgt r4, r8, r2
2373
2374@ CHECK: shasx	r4, r8, r2              @ encoding: [0x32,0x4f,0x38,0xe6]
2375@ CHECK: shasxgt r4, r8, r2             @ encoding: [0x32,0x4f,0x38,0xc6]
2376
2377
2378@------------------------------------------------------------------------------
2379@ SHSUB16/SHSUB8
2380@------------------------------------------------------------------------------
2381        shsub16 r4, r8, r2
2382        shsub16gt r4, r8, r2
2383        shsub8 r4, r8, r2
2384        shsub8gt r4, r8, r2
2385
2386@ CHECK: shsub16	r4, r8, r2      @ encoding: [0x72,0x4f,0x38,0xe6]
2387@ CHECK: shsub16gt	r4, r8, r2      @ encoding: [0x72,0x4f,0x38,0xc6]
2388@ CHECK: shsub8	r4, r8, r2              @ encoding: [0xf2,0x4f,0x38,0xe6]
2389@ CHECK: shsub8gt	r4, r8, r2      @ encoding: [0xf2,0x4f,0x38,0xc6]
2390
2391@------------------------------------------------------------------------------
2392@ SMLABB/SMLABT/SMLATB/SMLATT
2393@------------------------------------------------------------------------------
2394        smlabb r3, r1, r9, r0
2395        smlabt r5, r6, r4, r1
2396        smlatb r4, r2, r3, r2
2397        smlatt r8, r3, r8, r4
2398        smlabbge r3, r1, r9, r0
2399        smlabtle r5, r6, r4, r1
2400        smlatbne r4, r2, r3, r2
2401        smlatteq r8, r3, r8, r4
2402
2403@ CHECK: smlabb	r3, r1, r9, r0          @ encoding: [0x81,0x09,0x03,0xe1]
2404@ CHECK: smlabt	r5, r6, r4, r1          @ encoding: [0xc6,0x14,0x05,0xe1]
2405@ CHECK: smlatb	r4, r2, r3, r2          @ encoding: [0xa2,0x23,0x04,0xe1]
2406@ CHECK: smlatt	r8, r3, r8, r4          @ encoding: [0xe3,0x48,0x08,0xe1]
2407@ CHECK: smlabbge	r3, r1, r9, r0  @ encoding: [0x81,0x09,0x03,0xa1]
2408@ CHECK: smlabtle	r5, r6, r4, r1  @ encoding: [0xc6,0x14,0x05,0xd1]
2409@ CHECK: smlatbne	r4, r2, r3, r2  @ encoding: [0xa2,0x23,0x04,0x11]
2410@ CHECK: smlatteq	r8, r3, r8, r4  @ encoding: [0xe3,0x48,0x08,0x01]
2411
2412@------------------------------------------------------------------------------
2413@ SMLAD/SMLADX
2414@------------------------------------------------------------------------------
2415        smlad r2, r3, r5, r8
2416        smladx r2, r3, r5, r8
2417        smladeq r2, r3, r5, r8
2418        smladxhi r2, r3, r5, r8
2419
2420@ CHECK: smlad	r2, r3, r5, r8          @ encoding: [0x13,0x85,0x02,0xe7]
2421@ CHECK: smladx	r2, r3, r5, r8          @ encoding: [0x33,0x85,0x02,0xe7]
2422@ CHECK: smladeq	r2, r3, r5, r8  @ encoding: [0x13,0x85,0x02,0x07]
2423@ CHECK: smladxhi	r2, r3, r5, r8  @ encoding: [0x33,0x85,0x02,0x87]
2424
2425
2426@------------------------------------------------------------------------------
2427@ SMLAL
2428@------------------------------------------------------------------------------
2429        smlal r2, r3, r5, r8
2430        smlals r2, r3, r5, r8
2431        smlaleq r2, r3, r5, r8
2432        smlalshi r2, r3, r5, r8
2433
2434@ CHECK: smlal	r2, r3, r5, r8          @ encoding: [0x95,0x28,0xe3,0xe0]
2435@ CHECK: smlals	r2, r3, r5, r8          @ encoding: [0x95,0x28,0xf3,0xe0]
2436@ CHECK: smlaleq	r2, r3, r5, r8  @ encoding: [0x95,0x28,0xe3,0x00]
2437@ CHECK: smlalshi	r2, r3, r5, r8  @ encoding: [0x95,0x28,0xf3,0x80]
2438
2439
2440@------------------------------------------------------------------------------
2441@ SMLALBB/SMLALBT/SMLALTB/SMLALTT
2442@------------------------------------------------------------------------------
2443        smlalbb r3, r1, r9, r0
2444        smlalbt r5, r6, r4, r1
2445        smlaltb r4, r2, r3, r2
2446        smlaltt r8, r3, r8, r4
2447        smlalbbge r3, r1, r9, r0
2448        smlalbtle r5, r6, r4, r1
2449        smlaltbne r4, r2, r3, r2
2450        smlaltteq r8, r3, r8, r4
2451
2452@ CHECK: smlalbb	r3, r1, r9, r0  @ encoding: [0x89,0x30,0x41,0xe1]
2453@ CHECK: smlalbt	r5, r6, r4, r1  @ encoding: [0xc4,0x51,0x46,0xe1]
2454@ CHECK: smlaltb	r4, r2, r3, r2  @ encoding: [0xa3,0x42,0x42,0xe1]
2455@ CHECK: smlaltt	r8, r3, r8, r4  @ encoding: [0xe8,0x84,0x43,0xe1]
2456@ CHECK: smlalbbge	r3, r1, r9, r0  @ encoding: [0x89,0x30,0x41,0xa1]
2457@ CHECK: smlalbtle	r5, r6, r4, r1  @ encoding: [0xc4,0x51,0x46,0xd1]
2458@ CHECK: smlaltbne	r4, r2, r3, r2  @ encoding: [0xa3,0x42,0x42,0x11]
2459@ CHECK: smlaltteq	r8, r3, r8, r4  @ encoding: [0xe8,0x84,0x43,0x01]
2460
2461
2462@------------------------------------------------------------------------------
2463@ SMLALD/SMLALDX
2464@------------------------------------------------------------------------------
2465        smlald r2, r3, r5, r8
2466        smlaldx r2, r3, r5, r8
2467        smlaldeq r2, r3, r5, r8
2468        smlaldxhi r2, r3, r5, r8
2469
2470@ CHECK: smlald	r2, r3, r5, r8          @ encoding: [0x15,0x28,0x43,0xe7]
2471@ CHECK: smlaldx	r2, r3, r5, r8  @ encoding: [0x35,0x28,0x43,0xe7]
2472@ CHECK: smlaldeq	r2, r3, r5, r8  @ encoding: [0x15,0x28,0x43,0x07]
2473@ CHECK: smlaldxhi	r2, r3, r5, r8  @ encoding: [0x35,0x28,0x43,0x87]
2474
2475
2476@------------------------------------------------------------------------------
2477@ SMLAWB/SMLAWT
2478@------------------------------------------------------------------------------
2479        smlawb r2, r3, r10, r8
2480        smlawt r8, r3, r5, r9
2481        smlawbeq r2, r7, r5, r8
2482        smlawthi r1, r3, r0, r8
2483
2484@ CHECK: smlawb	r2, r3, r10, r8         @ encoding: [0x83,0x8a,0x22,0xe1]
2485@ CHECK: smlawt	r8, r3, r5, r9          @ encoding: [0xc3,0x95,0x28,0xe1]
2486@ CHECK: smlawbeq	r2, r7, r5, r8  @ encoding: [0x87,0x85,0x22,0x01]
2487@ CHECK: smlawthi	r1, r3, r0, r8  @ encoding: [0xc3,0x80,0x21,0x81]
2488
2489
2490@------------------------------------------------------------------------------
2491@ SMLSD/SMLSDX
2492@------------------------------------------------------------------------------
2493        smlsd r2, r3, r5, r8
2494        smlsdx r2, r3, r5, r8
2495        smlsdeq r2, r3, r5, r8
2496        smlsdxhi r2, r3, r5, r8
2497
2498@ CHECK: smlsd	r2, r3, r5, r8          @ encoding: [0x53,0x85,0x02,0xe7]
2499@ CHECK: smlsdx	r2, r3, r5, r8          @ encoding: [0x73,0x85,0x02,0xe7]
2500@ CHECK: smlsdeq	r2, r3, r5, r8  @ encoding: [0x53,0x85,0x02,0x07]
2501@ CHECK: smlsdxhi	r2, r3, r5, r8  @ encoding: [0x73,0x85,0x02,0x87]
2502
2503
2504@------------------------------------------------------------------------------
2505@ SMLSLD/SMLSLDX
2506@------------------------------------------------------------------------------
2507        smlsld r2, r9, r5, r1
2508        smlsldx r4, r11, r2, r8
2509        smlsldeq r8, r2, r5, r6
2510        smlsldxhi r1, r0, r3, r8
2511
2512@ CHECK: smlsld	r2, r9, r5, r1          @ encoding: [0x55,0x21,0x49,0xe7]
2513@ CHECK: smlsldx	r4, r11, r2, r8 @ encoding: [0x72,0x48,0x4b,0xe7]
2514@ CHECK: smlsldeq	r8, r2, r5, r6  @ encoding: [0x55,0x86,0x42,0x07]
2515@ CHECK: smlsldxhi	r1, r0, r3, r8  @ encoding: [0x73,0x18,0x40,0x87]
2516
2517
2518@------------------------------------------------------------------------------
2519@ SMMLA/SMMLAR
2520@------------------------------------------------------------------------------
2521        smmla r1, r2, r3, r4
2522        smmlar r4, r3, r2, r1
2523        smmlalo r1, r2, r3, r4
2524        smmlarcs r4, r3, r2, r1
2525
2526@ CHECK: smmla	r1, r2, r3, r4          @ encoding: [0x12,0x43,0x51,0xe7]
2527@ CHECK: smmlar	r4, r3, r2, r1          @ encoding: [0x33,0x12,0x54,0xe7]
2528@ CHECK: smmlalo	r1, r2, r3, r4  @ encoding: [0x12,0x43,0x51,0x37]
2529@ CHECK: smmlarhs	r4, r3, r2, r1  @ encoding: [0x33,0x12,0x54,0x27]
2530
2531
2532@------------------------------------------------------------------------------
2533@ SMMLS/SMMLSR
2534@------------------------------------------------------------------------------
2535        smmls r1, r2, r3, r4
2536        smmlsr r4, r3, r2, r1
2537        smmlslo r1, r2, r3, r4
2538        smmlsrcs r4, r3, r2, r1
2539
2540@ CHECK: smmls	r1, r2, r3, r4          @ encoding: [0xd2,0x43,0x51,0xe7]
2541@ CHECK: smmlsr	r4, r3, r2, r1          @ encoding: [0xf3,0x12,0x54,0xe7]
2542@ CHECK: smmlslo	r1, r2, r3, r4  @ encoding: [0xd2,0x43,0x51,0x37]
2543@ CHECK: smmlsrhs	r4, r3, r2, r1  @ encoding: [0xf3,0x12,0x54,0x27]
2544
2545
2546@------------------------------------------------------------------------------
2547@ SMMUL/SMMULR
2548@------------------------------------------------------------------------------
2549        smmul r2, r3, r4
2550        smmulr r3, r2, r1
2551        smmulcc r2, r3, r4
2552        smmulrhs r3, r2, r1
2553
2554@ CHECK: smmul	r2, r3, r4              @ encoding: [0x13,0xf4,0x52,0xe7]
2555@ CHECK: smmulr	r3, r2, r1              @ encoding: [0x32,0xf1,0x53,0xe7]
2556@ CHECK: smmullo	r2, r3, r4      @ encoding: [0x13,0xf4,0x52,0x37]
2557@ CHECK: smmulrhs	r3, r2, r1      @ encoding: [0x32,0xf1,0x53,0x27]
2558
2559
2560@------------------------------------------------------------------------------
2561@ SMUAD/SMUADX
2562@------------------------------------------------------------------------------
2563        smuad r2, r3, r4
2564        smuadx r3, r2, r1
2565        smuadlt r2, r3, r4
2566        smuadxge r3, r2, r1
2567
2568@ CHECK: smuad	r2, r3, r4              @ encoding: [0x13,0xf4,0x02,0xe7]
2569@ CHECK: smuadx	r3, r2, r1              @ encoding: [0x32,0xf1,0x03,0xe7]
2570@ CHECK: smuadlt	r2, r3, r4      @ encoding: [0x13,0xf4,0x02,0xb7]
2571@ CHECK: smuadxge	r3, r2, r1      @ encoding: [0x32,0xf1,0x03,0xa7]
2572
2573
2574@------------------------------------------------------------------------------
2575@ SMULBB/SMULBT/SMULTB/SMULTT
2576@------------------------------------------------------------------------------
2577        smulbb r3, r9, r0
2578        smulbt r5, r4, r1
2579        smultb r4, r2, r2
2580        smultt r8, r3, r4
2581        smulbbge r1, r9, r0
2582        smulbtle r5, r6, r4
2583        smultbne r2, r3, r2
2584        smultteq r8, r3, r4
2585
2586@ CHECK: smulbb	r3, r9, r0              @ encoding: [0x89,0x00,0x63,0xe1]
2587@ CHECK: smulbt	r5, r4, r1              @ encoding: [0xc4,0x01,0x65,0xe1]
2588@ CHECK: smultb	r4, r2, r2              @ encoding: [0xa2,0x02,0x64,0xe1]
2589@ CHECK: smultt	r8, r3, r4              @ encoding: [0xe3,0x04,0x68,0xe1]
2590@ CHECK: smulbbge	r1, r9, r0      @ encoding: [0x89,0x00,0x61,0xa1]
2591@ CHECK: smulbtle	r5, r6, r4      @ encoding: [0xc6,0x04,0x65,0xd1]
2592@ CHECK: smultbne	r2, r3, r2      @ encoding: [0xa3,0x02,0x62,0x11]
2593@ CHECK: smultteq	r8, r3, r4      @ encoding: [0xe3,0x04,0x68,0x01]
2594
2595
2596@------------------------------------------------------------------------------
2597@ SMULL
2598@------------------------------------------------------------------------------
2599        smull r3, r9, r0, r1
2600        smulls r3, r9, r0, r2
2601        smulleq r8, r3, r4, r5
2602        smullseq r8, r3, r4, r3
2603
2604@ CHECK: smull	r3, r9, r0, r1          @ encoding: [0x90,0x31,0xc9,0xe0]
2605@ CHECK: smulls	r3, r9, r0, r2          @ encoding: [0x90,0x32,0xd9,0xe0]
2606@ CHECK: smulleq	r8, r3, r4, r5  @ encoding: [0x94,0x85,0xc3,0x00]
2607@ CHECK: smullseq	r8, r3, r4, r3  @ encoding: [0x94,0x83,0xd3,0x00]
2608
2609
2610@------------------------------------------------------------------------------
2611@ SMULWB/SMULWT
2612@------------------------------------------------------------------------------
2613        smulwb r3, r9, r0
2614        smulwt r3, r9, r2
2615
2616@ CHECK: smulwb	r3, r9, r0              @ encoding: [0xa9,0x00,0x23,0xe1]
2617@ CHECK: smulwt	r3, r9, r2              @ encoding: [0xe9,0x02,0x23,0xe1]
2618
2619
2620@------------------------------------------------------------------------------
2621@ SMUSD/SMUSDX
2622@------------------------------------------------------------------------------
2623        smusd r3, r0, r1
2624        smusdx r3, r9, r2
2625        smusdeq r8, r3, r2
2626        smusdxne r7, r4, r3
2627
2628@ CHECK: smusd	r3, r0, r1              @ encoding: [0x50,0xf1,0x03,0xe7]
2629@ CHECK: smusdx	r3, r9, r2              @ encoding: [0x79,0xf2,0x03,0xe7]
2630@ CHECK: smusdeq	r8, r3, r2      @ encoding: [0x53,0xf2,0x08,0x07]
2631@ CHECK: smusdxne	r7, r4, r3      @ encoding: [0x74,0xf3,0x07,0x17]
2632
2633
2634@------------------------------------------------------------------------------
2635@ SRS
2636@------------------------------------------------------------------------------
2637        srsda sp, #5
2638        srsdb sp, #1
2639        srsia sp, #0
2640        srsib sp, #15
2641
2642        srsda sp!, #31
2643        srsdb sp!, #19
2644        srsia sp!, #2
2645        srsib sp!, #14
2646
2647        srsfa sp, #11
2648        srsea sp, #10
2649        srsfd sp, #9
2650        srsed sp, #5
2651
2652        srsfa sp!, #5
2653        srsea sp!, #5
2654        srsfd sp!, #5
2655        srsed sp!, #5
2656
2657        srs sp, #5
2658        srs sp!, #5
2659
2660@ CHECK: srsda	sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
2661@ CHECK: srsdb	sp, #1                  @ encoding: [0x01,0x05,0x4d,0xf9]
2662@ CHECK: srsia	sp, #0                  @ encoding: [0x00,0x05,0xcd,0xf8]
2663@ CHECK: srsib	sp, #15                 @ encoding: [0x0f,0x05,0xcd,0xf9]
2664
2665@ CHECK: srsda	sp!, #31                @ encoding: [0x1f,0x05,0x6d,0xf8]
2666@ CHECK: srsdb	sp!, #19                @ encoding: [0x13,0x05,0x6d,0xf9]
2667@ CHECK: srsia	sp!, #2                 @ encoding: [0x02,0x05,0xed,0xf8]
2668@ CHECK: srsib	sp!, #14                @ encoding: [0x0e,0x05,0xed,0xf9]
2669
2670@ CHECK: srsib	sp, #11                 @ encoding: [0x0b,0x05,0xcd,0xf9]
2671@ CHECK: srsia	sp, #10                 @ encoding: [0x0a,0x05,0xcd,0xf8]
2672@ CHECK: srsdb	sp, #9                  @ encoding: [0x09,0x05,0x4d,0xf9]
2673@ CHECK: srsda	sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
2674
2675@ CHECK: srsib	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf9]
2676@ CHECK: srsia	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
2677@ CHECK: srsdb	sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf9]
2678@ CHECK: srsda	sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf8]
2679
2680@ CHECK: srsia	sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf8]
2681@ CHECK: srsia	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
2682
2683@ Compatibility aliases.
2684        srsda #5
2685        srsdb #1
2686        srsia #0
2687        srsib #15
2688
2689        srsda #31!
2690        srsdb #19!
2691        srsia #2!
2692        srsib #14!
2693
2694        srsfa #11
2695        srsea #10
2696        srsfd #9
2697        srsed #5
2698
2699        srsfa #5!
2700        srsea #5!
2701        srsfd #5!
2702        srsed #5!
2703
2704        srs #5
2705        srs #5!
2706
2707@ CHECK: srsda	sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
2708@ CHECK: srsdb	sp, #1                  @ encoding: [0x01,0x05,0x4d,0xf9]
2709@ CHECK: srsia	sp, #0                  @ encoding: [0x00,0x05,0xcd,0xf8]
2710@ CHECK: srsib	sp, #15                 @ encoding: [0x0f,0x05,0xcd,0xf9]
2711@ CHECK: srsda	sp!, #31                @ encoding: [0x1f,0x05,0x6d,0xf8]
2712@ CHECK: srsdb	sp!, #19                @ encoding: [0x13,0x05,0x6d,0xf9]
2713@ CHECK: srsia	sp!, #2                 @ encoding: [0x02,0x05,0xed,0xf8]
2714@ CHECK: srsib	sp!, #14                @ encoding: [0x0e,0x05,0xed,0xf9]
2715@ CHECK: srsib	sp, #11                 @ encoding: [0x0b,0x05,0xcd,0xf9]
2716@ CHECK: srsia	sp, #10                 @ encoding: [0x0a,0x05,0xcd,0xf8]
2717@ CHECK: srsdb	sp, #9                  @ encoding: [0x09,0x05,0x4d,0xf9]
2718@ CHECK: srsda	sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
2719@ CHECK: srsib	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf9]
2720@ CHECK: srsia	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
2721@ CHECK: srsdb	sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf9]
2722@ CHECK: srsda	sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf8]
2723@ CHECK: srsia	sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf8]
2724@ CHECK: srsia	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
2725
2726
2727@------------------------------------------------------------------------------
2728@ SSAT
2729@------------------------------------------------------------------------------
2730        ssat	r8, #1, r10
2731        ssat	r8, #1, r10, lsl #0
2732        ssat	r8, #1, r10, lsl #31
2733        ssat	r8, #1, r10, asr #32
2734        ssat	r8, #1, r10, asr #1
2735
2736@ CHECK: ssat	r8, #1, r10             @ encoding: [0x1a,0x80,0xa0,0xe6]
2737@ CHECK: ssat	r8, #1, r10             @ encoding: [0x1a,0x80,0xa0,0xe6]
2738@ CHECK: ssat	r8, #1, r10, lsl #31    @ encoding: [0x9a,0x8f,0xa0,0xe6]
2739@ CHECK: ssat	r8, #1, r10, asr #32    @ encoding: [0x5a,0x80,0xa0,0xe6]
2740@ CHECK: ssat	r8, #1, r10, asr #1     @ encoding: [0xda,0x80,0xa0,0xe6]
2741
2742
2743@------------------------------------------------------------------------------
2744@ SSAT16
2745@------------------------------------------------------------------------------
2746        ssat16	r2, #1, r7
2747        ssat16	r3, #16, r5
2748
2749@ CHECK: ssat16	r2, #1, r7              @ encoding: [0x37,0x2f,0xa0,0xe6]
2750@ CHECK: ssat16	r3, #16, r5             @ encoding: [0x35,0x3f,0xaf,0xe6]
2751
2752
2753@------------------------------------------------------------------------------
2754@ SSAX
2755@------------------------------------------------------------------------------
2756        ssax r2, r3, r4
2757        ssaxlt r2, r3, r4
2758
2759@ CHECK: ssax	r2, r3, r4              @ encoding: [0x54,0x2f,0x13,0xe6]
2760@ CHECK: ssaxlt	r2, r3, r4              @ encoding: [0x54,0x2f,0x13,0xb6]
2761
2762@------------------------------------------------------------------------------
2763@ SSUB16/SSUB8
2764@------------------------------------------------------------------------------
2765        ssub16 r1, r0, r6
2766        ssub16ne r5, r3, r2
2767        ssub8 r9, r2, r4
2768        ssub8eq r5, r1, r2
2769
2770@ CHECK: ssub16	r1, r0, r6              @ encoding: [0x76,0x1f,0x10,0xe6]
2771@ CHECK: ssub16ne	r5, r3, r2      @ encoding: [0x72,0x5f,0x13,0x16]
2772@ CHECK: ssub8	r9, r2, r4              @ encoding: [0xf4,0x9f,0x12,0xe6]
2773@ CHECK: ssub8eq	r5, r1, r2      @ encoding: [0xf2,0x5f,0x11,0x06]
2774
2775@------------------------------------------------------------------------------
2776@ STC{L}/STC2{L}
2777@------------------------------------------------------------------------------
2778        stc2 p0, c8, [r1, #4]
2779        stc2 p1, c7, [r2]
2780        stc2 p2, c6, [r3, #-224]
2781        stc2 p3, c5, [r4, #-120]!
2782        stc2 p4, c4, [r5], #16
2783        stc2 p5, c3, [r6], #-72
2784        stc2l p6, c2, [r7, #4]
2785        stc2l p7, c1, [r8]
2786        stc2l p8, c0, [r9, #-224]
2787        stc2l p9, c1, [r10, #-120]!
2788        stc2l p0, c2, [r11], #16
2789        stc2l p1, c3, [r12], #-72
2790
2791        stc p12, c4, [r0, #4]
2792        stc p13, c5, [r1]
2793        stc p14, c6, [r2, #-224]
2794        stc p15, c7, [r3, #-120]!
2795        stc p5, c8, [r4], #16
2796        stc p4, c9, [r5], #-72
2797        stcl p3, c10, [r6, #4]
2798        stcl p2, c11, [r7]
2799        stcl p1, c12, [r8, #-224]
2800        stcl p0, c13, [r9, #-120]!
2801        stcl p6, c14, [r10], #16
2802        stcl p7, c15, [r11], #-72
2803
2804        stclo p12, c4, [r0, #4]
2805        stchi p13, c5, [r1]
2806        stccs p14, c6, [r2, #-224]
2807        stccc p15, c7, [r3, #-120]!
2808        stceq p5, c8, [r4], #16
2809        stcgt p4, c9, [r5], #-72
2810        stcllt p3, c10, [r6, #4]
2811        stclge p2, c11, [r7]
2812        stclle p1, c12, [r8, #-224]
2813        stclne p0, c13, [r9, #-120]!
2814        stcleq p6, c14, [r10], #16
2815        stclhi p7, c15, [r11], #-72
2816
2817        stc2 p2, c8, [r1], { 25 }
2818
2819@ CHECK: stc2	p0, c8, [r1, #4]        @ encoding: [0x01,0x80,0x81,0xfd]
2820@ CHECK: stc2	p1, c7, [r2]            @ encoding: [0x00,0x71,0x82,0xfd]
2821@ CHECK: stc2	p2, c6, [r3, #-224]     @ encoding: [0x38,0x62,0x03,0xfd]
2822@ CHECK: stc2	p3, c5, [r4, #-120]!    @ encoding: [0x1e,0x53,0x24,0xfd]
2823@ CHECK: stc2	p4, c4, [r5], #16       @ encoding: [0x04,0x44,0xa5,0xfc]
2824@ CHECK: stc2	p5, c3, [r6], #-72      @ encoding: [0x12,0x35,0x26,0xfc]
2825@ CHECK: stc2l	p6, c2, [r7, #4]        @ encoding: [0x01,0x26,0xc7,0xfd]
2826@ CHECK: stc2l	p7, c1, [r8]            @ encoding: [0x00,0x17,0xc8,0xfd]
2827@ CHECK: stc2l	p8, c0, [r9, #-224]     @ encoding: [0x38,0x08,0x49,0xfd]
2828@ CHECK: stc2l	p9, c1, [r10, #-120]!   @ encoding: [0x1e,0x19,0x6a,0xfd]
2829@ CHECK: stc2l	p0, c2, [r11], #16      @ encoding: [0x04,0x20,0xeb,0xfc]
2830@ CHECK: stc2l	p1, c3, [r12], #-72     @ encoding: [0x12,0x31,0x6c,0xfc]
2831
2832@ CHECK: stc	p12, c4, [r0, #4]       @ encoding: [0x01,0x4c,0x80,0xed]
2833@ CHECK: stc	p13, c5, [r1]           @ encoding: [0x00,0x5d,0x81,0xed]
2834@ CHECK: stc	p14, c6, [r2, #-224]    @ encoding: [0x38,0x6e,0x02,0xed]
2835@ CHECK: stc	p15, c7, [r3, #-120]!   @ encoding: [0x1e,0x7f,0x23,0xed]
2836@ CHECK: stc	p5, c8, [r4], #16       @ encoding: [0x04,0x85,0xa4,0xec]
2837@ CHECK: stc	p4, c9, [r5], #-72      @ encoding: [0x12,0x94,0x25,0xec]
2838@ CHECK: stcl	p3, c10, [r6, #4]       @ encoding: [0x01,0xa3,0xc6,0xed]
2839@ CHECK: stcl	p2, c11, [r7]           @ encoding: [0x00,0xb2,0xc7,0xed]
2840@ CHECK: stcl	p1, c12, [r8, #-224]    @ encoding: [0x38,0xc1,0x48,0xed]
2841@ CHECK: stcl	p0, c13, [r9, #-120]!   @ encoding: [0x1e,0xd0,0x69,0xed]
2842@ CHECK: stcl	p6, c14, [r10], #16     @ encoding: [0x04,0xe6,0xea,0xec]
2843@ CHECK: stcl	p7, c15, [r11], #-72    @ encoding: [0x12,0xf7,0x6b,0xec]
2844
2845@ CHECK: stclo	p12, c4, [r0, #4]       @ encoding: [0x01,0x4c,0x80,0x3d]
2846@ CHECK: stchi	p13, c5, [r1]           @ encoding: [0x00,0x5d,0x81,0x8d]
2847@ CHECK: stchs	p14, c6, [r2, #-224]    @ encoding: [0x38,0x6e,0x02,0x2d]
2848@ CHECK: stclo	p15, c7, [r3, #-120]!   @ encoding: [0x1e,0x7f,0x23,0x3d]
2849@ CHECK: stceq	p5, c8, [r4], #16       @ encoding: [0x04,0x85,0xa4,0x0c]
2850@ CHECK: stcgt	p4, c9, [r5], #-72      @ encoding: [0x12,0x94,0x25,0xcc]
2851@ CHECK: stcllt	p3, c10, [r6, #4]       @ encoding: [0x01,0xa3,0xc6,0xbd]
2852@ CHECK: stclge	p2, c11, [r7]           @ encoding: [0x00,0xb2,0xc7,0xad]
2853@ CHECK: stclle	p1, c12, [r8, #-224]    @ encoding: [0x38,0xc1,0x48,0xdd]
2854@ CHECK: stclne	p0, c13, [r9, #-120]!   @ encoding: [0x1e,0xd0,0x69,0x1d]
2855@ CHECK: stcleq	p6, c14, [r10], #16     @ encoding: [0x04,0xe6,0xea,0x0c]
2856@ CHECK: stclhi	p7, c15, [r11], #-72    @ encoding: [0x12,0xf7,0x6b,0x8c]
2857
2858@ CHECK: stc2	p2, c8, [r1], {25}      @ encoding: [0x19,0x82,0x81,0xfc]
2859
2860
2861@------------------------------------------------------------------------------
2862@ STM*
2863@------------------------------------------------------------------------------
2864        stm       r2, {r1,r3-r6,sp}
2865        stmia     r3, {r1,r3-r6,lr}
2866        stmib     r4, {r1,r3-r6,sp}
2867        stmda     r5, {r1,r3-r6,sp}
2868        stmdb     r6, {r1,r3-r6,r8}
2869        stmfd     sp, {r1,r3-r6,sp}
2870
2871        @ with update
2872        stm       r8!, {r1,r3-r6,sp}
2873        stmib     r9!, {r1,r3-r6,sp}
2874        stmda     sp!, {r1,r3-r6}
2875        stmdb     r0!, {r1,r5,r7,sp}
2876
2877@ CHECK: stm	r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x82,0xe8]
2878@ CHECK: stm	r3, {r1, r3, r4, r5, r6, lr} @ encoding: [0x7a,0x40,0x83,0xe8]
2879@ CHECK: stmib	r4, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x84,0xe9]
2880@ CHECK: stmda	r5, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x05,0xe8]
2881@ CHECK: stmdb	r6, {r1, r3, r4, r5, r6, r8} @ encoding: [0x7a,0x01,0x06,0xe9]
2882@ CHECK: stmdb	sp, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x0d,0xe9]
2883
2884@ CHECK: stm	r8!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa8,0xe8]
2885@ CHECK: stmib	r9!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa9,0xe9]
2886@ CHECK: stmda	sp!, {r1, r3, r4, r5, r6}     @ encoding: [0x7a,0x00,0x2d,0xe8]
2887@ CHECK: stmdb	r0!, {r1, r5, r7, sp}         @ encoding: [0xa2,0x20,0x20,0xe9]
2888
2889
2890@------------------------------------------------------------------------------
2891@ STREX/STREXB/STREXH/STREXD
2892@------------------------------------------------------------------------------
2893        strexb  r1, r3, [r4]
2894        strexh  r4, r2, [r5]
2895        strex  r2, r1, [r7]
2896        strexd  r6, r2, r3, [r8]
2897
2898@ CHECK: strexb	r1, r3, [r4]            @ encoding: [0x93,0x1f,0xc4,0xe1]
2899@ CHECK: strexh	r4, r2, [r5]            @ encoding: [0x92,0x4f,0xe5,0xe1]
2900@ CHECK: strex	r2, r1, [r7]            @ encoding: [0x91,0x2f,0x87,0xe1]
2901@ CHECK: strexd	r6, r2, r3, [r8]        @ encoding: [0x92,0x6f,0xa8,0xe1]
2902
2903@------------------------------------------------------------------------------
2904@ STR
2905@------------------------------------------------------------------------------
2906        strpl	r3, [r10, #-0]!
2907        strpl	r3, [r10, #0]!
2908
2909@ CHECK: strpl	r3, [r10, #-0]!         @ encoding: [0x00,0x30,0x2a,0x55]
2910@ CHECK: strpl	r3, [r10, #0]!          @ encoding: [0x00,0x30,0xaa,0x55]
2911
2912@------------------------------------------------------------------------------
2913@ SUB
2914@------------------------------------------------------------------------------
2915        sub r4, r5, #0xf000
2916        sub r4, r5, $0xf000
2917        sub r4, r5, 0xf000
2918        sub r7, r8, #(0xff << 16)
2919        sub r7, r8, #-2147483638
2920        sub r7, r8, #42, #2
2921        sub r7, r8, #40, #2
2922        sub r7, r8, $40, $2
2923        sub r7, r8, 40, 2
2924        sub r7, r8, (20 * 2), (1 << 1)
2925        sub r4, r5, r6
2926        sub r4, r5, r6, lsl #5
2927        sub r4, r5, r6, lsr #5
2928        sub r4, r5, r6, lsr #5
2929        sub r4, r5, r6, asr #5
2930        sub r4, r5, r6, ror #5
2931        sub r6, r7, r8, lsl r9
2932        sub r6, r7, r8, lsr r9
2933        sub r6, r7, r8, asr r9
2934        sub r6, r7, r8, ror r9
2935
2936        @ destination register is optional
2937        sub r5, #0xf000
2938        sub r5, $0xf000
2939        sub r5, 0xf000
2940        sub r7, #(0xff << 16)
2941        sub r7, #-2147483638
2942        sub r7, #42, #2
2943        sub r7, #40, #2
2944        sub r7, $40, $2
2945        sub r7, 40, 2
2946        sub r7, (20 * 2), (1 << 1)
2947        sub r4, r5
2948        sub r4, r5, lsl #5
2949        sub r4, r5, lsr #5
2950        sub r4, r5, lsr #5
2951        sub r4, r5, asr #5
2952        sub r4, r5, ror #5
2953        sub r6, r7, lsl r9
2954        sub r6, r7, lsr r9
2955        sub r6, r7, asr r9
2956        sub r6, r7, ror r9
2957
2958@ CHECK: sub	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x45,0xe2]
2959@ CHECK: sub	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x45,0xe2]
2960@ CHECK: sub	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x45,0xe2]
2961@ CHECK: sub	r7, r8, #16711680       @ encoding: [0xff,0x78,0x48,0xe2]
2962@ CHECK: sub    r7, r8, #-2147483638    @ encoding: [0x2a,0x71,0x48,0xe2]
2963@ CHECK: sub    r7, r8, #-2147483638    @ encoding: [0x2a,0x71,0x48,0xe2]
2964@ CHECK: sub    r7, r8, #40, #2         @ encoding: [0x28,0x71,0x48,0xe2]
2965@ CHECK: sub    r7, r8, #40, #2         @ encoding: [0x28,0x71,0x48,0xe2]
2966@ CHECK: sub    r7, r8, #40, #2         @ encoding: [0x28,0x71,0x48,0xe2]
2967@ CHECK: sub    r7, r8, #40, #2         @ encoding: [0x28,0x71,0x48,0xe2]
2968@ CHECK: sub	r4, r5, r6              @ encoding: [0x06,0x40,0x45,0xe0]
2969@ CHECK: sub	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x45,0xe0]
2970@ CHECK: sub	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x45,0xe0]
2971@ CHECK: sub	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x45,0xe0]
2972@ CHECK: sub	r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x45,0xe0]
2973@ CHECK: sub	r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x45,0xe0]
2974@ CHECK: sub	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x47,0xe0]
2975@ CHECK: sub	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x47,0xe0]
2976@ CHECK: sub	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x47,0xe0]
2977@ CHECK: sub	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x47,0xe0]
2978
2979
2980@ CHECK: sub	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x45,0xe2]
2981@ CHECK: sub	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x45,0xe2]
2982@ CHECK: sub	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x45,0xe2]
2983@ CHECK: sub	r7, r7, #16711680       @ encoding: [0xff,0x78,0x47,0xe2]
2984@ CHECK: sub	r7, r7, #-2147483638    @ encoding: [0x2a,0x71,0x47,0xe2]
2985@ CHECK: sub	r7, r7, #-2147483638    @ encoding: [0x2a,0x71,0x47,0xe2]
2986@ CHECK: sub	r7, r7, #40, #2         @ encoding: [0x28,0x71,0x47,0xe2]
2987@ CHECK: sub	r7, r7, #40, #2         @ encoding: [0x28,0x71,0x47,0xe2
2988@ CHECK: sub	r7, r7, #40, #2         @ encoding: [0x28,0x71,0x47,0xe2]
2989@ CHECK: sub	r7, r7, #40, #2         @ encoding: [0x28,0x71,0x47,0xe2]
2990@ CHECK: sub	r4, r4, r5              @ encoding: [0x05,0x40,0x44,0xe0]
2991@ CHECK: sub	r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x44,0xe0]
2992@ CHECK: sub	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x44,0xe0]
2993@ CHECK: sub	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x44,0xe0]
2994@ CHECK: sub	r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x44,0xe0]
2995@ CHECK: sub	r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x44,0xe0]
2996@ CHECK: sub	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x46,0xe0]
2997@ CHECK: sub	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x46,0xe0]
2998@ CHECK: sub	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x46,0xe0]
2999@ CHECK: sub	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x46,0xe0]
3000
3001    @ Test right shift by 32, which is encoded as 0
3002    sub r3, r1, r2, lsr #32
3003    sub r3, r1, r2, asr #32
3004@ CHECK: sub	r3, r1, r2, lsr #32     @ encoding: [0x22,0x30,0x41,0xe0]
3005@ CHECK: sub	r3, r1, r2, asr #32     @ encoding: [0x42,0x30,0x41,0xe0]
3006
3007@------------------------------------------------------------------------------
3008@ SUBS
3009@------------------------------------------------------------------------------
3010    subs r7, r8, #16711680
3011    subs r7, r8, $16711680
3012    subs r7, r8, 16711680
3013    subs r7, r8, #(0xff << 16)
3014    subs r7, r8, #-2147483638
3015    subs r7, r8, #42, #2
3016    subs r7, r8, #40, #2
3017    subs r7, r8, $40, $2
3018    subs r7, r8, 40, 2
3019    subs r7, r8, (20 * 2), (1 << 1)
3020
3021@ CHECK: subs	r7, r8, #16711680       @ encoding: [0xff,0x78,0x58,0xe2]
3022@ CHECK: subs	r7, r8, #16711680       @ encoding: [0xff,0x78,0x58,0xe2]
3023@ CHECK: subs	r7, r8, #16711680       @ encoding: [0xff,0x78,0x58,0xe2]
3024@ CHECK: subs	r7, r8, #16711680       @ encoding: [0xff,0x78,0x58,0xe2]
3025@ CHECK: subs   r7, r8, #-2147483638    @ encoding: [0x2a,0x71,0x58,0xe2]
3026@ CHECK: subs   r7, r8, #-2147483638    @ encoding: [0x2a,0x71,0x58,0xe2]
3027@ CHECK: subs   r7, r8, #40, #2         @ encoding: [0x28,0x71,0x58,0xe2]
3028@ CHECK: subs   r7, r8, #40, #2         @ encoding: [0x28,0x71,0x58,0xe2]
3029@ CHECK: subs   r7, r8, #40, #2         @ encoding: [0x28,0x71,0x58,0xe2]
3030@ CHECK: subs   r7, r8, #40, #2         @ encoding: [0x28,0x71,0x58,0xe2]
3031
3032@------------------------------------------------------------------------------
3033@ SVC
3034@------------------------------------------------------------------------------
3035        svc #16
3036        svc #0
3037        svc #0xffffff
3038
3039@ CHECK: svc	#16                     @ encoding: [0x10,0x00,0x00,0xef]
3040@ CHECK: svc	#0                      @ encoding: [0x00,0x00,0x00,0xef]
3041@ CHECK: svc	#16777215               @ encoding: [0xff,0xff,0xff,0xef]
3042
3043
3044@------------------------------------------------------------------------------
3045@ SWP/SWPB
3046@------------------------------------------------------------------------------
3047        swp r1, r2, [r3]
3048        swp r4, r4, [r6]
3049        swpb r5, r1, [r9]
3050
3051@ CHECK: swp	r1, r2, [r3]            @ encoding: [0x92,0x10,0x03,0xe1]
3052@ CHECK: swp	r4, r4, [r6]            @ encoding: [0x94,0x40,0x06,0xe1]
3053@ CHECK: swpb	r5, r1, [r9]            @ encoding: [0x91,0x50,0x49,0xe1]
3054
3055
3056@------------------------------------------------------------------------------
3057@ SXTAB
3058@------------------------------------------------------------------------------
3059        sxtab r2, r3, r4
3060        sxtab r4, r5, r6, ror #0
3061        sxtablt r6, r2, r9, ror #8
3062        sxtab r5, r1, r4, ror #16
3063        sxtab r7, r8, r3, ror #24
3064
3065@ CHECK: sxtab	r2, r3, r4              @ encoding: [0x74,0x20,0xa3,0xe6]
3066@ CHECK: sxtab	r4, r5, r6              @ encoding: [0x76,0x40,0xa5,0xe6]
3067@ CHECK: sxtablt r6, r2, r9, ror #8     @ encoding: [0x79,0x64,0xa2,0xb6]
3068@ CHECK: sxtab	r5, r1, r4, ror #16     @ encoding: [0x74,0x58,0xa1,0xe6]
3069@ CHECK: sxtab	r7, r8, r3, ror #24     @ encoding: [0x73,0x7c,0xa8,0xe6]
3070
3071
3072@------------------------------------------------------------------------------
3073@ SXTAB16
3074@------------------------------------------------------------------------------
3075        sxtab16ge r0, r1, r4
3076        sxtab16 r6, r2, r7, ror #0
3077        sxtab16 r3, r5, r8, ror #8
3078        sxtab16 r3, r2, r1, ror #16
3079        sxtab16eq r1, r2, r3, ror #24
3080
3081@ CHECK: sxtab16ge	r0, r1, r4      @ encoding: [0x74,0x00,0x81,0xa6]
3082@ CHECK: sxtab16	r6, r2, r7      @ encoding: [0x77,0x60,0x82,0xe6]
3083@ CHECK: sxtab16 r3, r5, r8, ror #8     @ encoding: [0x78,0x34,0x85,0xe6]
3084@ CHECK: sxtab16 r3, r2, r1, ror #16    @ encoding: [0x71,0x38,0x82,0xe6]
3085@ CHECK: sxtab16eq r1, r2, r3, ror #24  @ encoding: [0x73,0x1c,0x82,0x06]
3086
3087@------------------------------------------------------------------------------
3088@ SXTAH
3089@------------------------------------------------------------------------------
3090        sxtah r1, r3, r9
3091        sxtahhi r6, r1, r6, ror #0
3092        sxtah r3, r8, r3, ror #8
3093        sxtahlo r2, r2, r4, ror #16
3094        sxtah r9, r3, r3, ror #24
3095
3096@ CHECK: sxtah	r1, r3, r9              @ encoding: [0x79,0x10,0xb3,0xe6]
3097@ CHECK: sxtahhi	r6, r1, r6      @ encoding: [0x76,0x60,0xb1,0x86]
3098@ CHECK: sxtah	r3, r8, r3, ror #8      @ encoding: [0x73,0x34,0xb8,0xe6]
3099@ CHECK: sxtahlo r2, r2, r4, ror #16    @ encoding: [0x74,0x28,0xb2,0x36]
3100@ CHECK: sxtah	r9, r3, r3, ror #24     @ encoding: [0x73,0x9c,0xb3,0xe6]
3101
3102@------------------------------------------------------------------------------
3103@ SXTB
3104@------------------------------------------------------------------------------
3105        sxtbge r2, r4
3106        sxtb r5, r6, ror #0
3107        sxtb r6, r9, ror #8
3108        sxtbcc r5, r1, ror #16
3109        sxtb r8, r3, ror #24
3110
3111@ CHECK: sxtbge	r2, r4                  @ encoding: [0x74,0x20,0xaf,0xa6]
3112@ CHECK: sxtb	r5, r6                  @ encoding: [0x76,0x50,0xaf,0xe6]
3113@ CHECK: sxtb	r6, r9, ror #8          @ encoding: [0x79,0x64,0xaf,0xe6]
3114@ CHECK: sxtblo	r5, r1, ror #16         @ encoding: [0x71,0x58,0xaf,0x36]
3115@ CHECK: sxtb	r8, r3, ror #24         @ encoding: [0x73,0x8c,0xaf,0xe6]
3116
3117
3118@------------------------------------------------------------------------------
3119@ SXTB16
3120@------------------------------------------------------------------------------
3121        sxtb16 r1, r4
3122        sxtb16 r6, r7, ror #0
3123        sxtb16cs r3, r5, ror #8
3124        sxtb16 r3, r1, ror #16
3125        sxtb16ge r2, r3, ror #24
3126
3127@ CHECK: sxtb16	r1, r4                  @ encoding: [0x74,0x10,0x8f,0xe6]
3128@ CHECK: sxtb16	r6, r7                  @ encoding: [0x77,0x60,0x8f,0xe6]
3129@ CHECK: sxtb16hs	r3, r5, ror #8  @ encoding: [0x75,0x34,0x8f,0x26]
3130@ CHECK: sxtb16	r3, r1, ror #16         @ encoding: [0x71,0x38,0x8f,0xe6]
3131@ CHECK: sxtb16ge	r2, r3, ror #24 @ encoding: [0x73,0x2c,0x8f,0xa6]
3132
3133
3134@------------------------------------------------------------------------------
3135@ SXTH
3136@------------------------------------------------------------------------------
3137        sxthne r3, r9
3138        sxth r1, r6, ror #0
3139        sxth r3, r8, ror #8
3140        sxthle r2, r2, ror #16
3141        sxth r9, r3, ror #24
3142
3143@ CHECK: sxthne	r3, r9                  @ encoding: [0x79,0x30,0xbf,0x16]
3144@ CHECK: sxth	r1, r6                  @ encoding: [0x76,0x10,0xbf,0xe6]
3145@ CHECK: sxth	r3, r8, ror #8          @ encoding: [0x78,0x34,0xbf,0xe6]
3146@ CHECK: sxthle	r2, r2, ror #16         @ encoding: [0x72,0x28,0xbf,0xd6]
3147@ CHECK: sxth	r9, r3, ror #24         @ encoding: [0x73,0x9c,0xbf,0xe6]
3148
3149
3150@------------------------------------------------------------------------------
3151@ TEQ
3152@------------------------------------------------------------------------------
3153        teq r5, #0xf000
3154        teq r5, $0xf000
3155        teq r5, 0xf000
3156        teq r7, #(0xff << 16)
3157        teq r7, #-2147483638
3158        teq r7, #42, #2
3159        teq r7, #40, #2
3160        teq r7, $40, $2
3161        teq r7, 40, 2
3162        teq r7, (20 * 2), (1 << 1)
3163        teq r4, r5
3164        teq r4, r5, lsl #5
3165        teq r4, r5, lsr #5
3166        teq r4, r5, lsr #5
3167        teq r4, r5, asr #5
3168        teq r4, r5, ror #5
3169        teq r6, r7, lsl r9
3170        teq r6, r7, lsr r9
3171        teq r6, r7, asr r9
3172        teq r6, r7, ror r9
3173
3174@ CHECK: teq	r5, #61440              @ encoding: [0x0f,0x0a,0x35,0xe3]
3175@ CHECK: teq	r5, #61440              @ encoding: [0x0f,0x0a,0x35,0xe3]
3176@ CHECK: teq	r5, #61440              @ encoding: [0x0f,0x0a,0x35,0xe3]
3177@ CHECK: teq	r7, #16711680           @ encoding: [0xff,0x08,0x37,0xe3]
3178@ CHECK: teq    r7, #-2147483638        @ encoding: [0x2a,0x01,0x37,0xe3]
3179@ CHECK: teq    r7, #-2147483638        @ encoding: [0x2a,0x01,0x37,0xe3]
3180@ CHECK: teq    r7, #40, #2             @ encoding: [0x28,0x01,0x37,0xe3]
3181@ CHECK: teq    r7, #40, #2             @ encoding: [0x28,0x01,0x37,0xe3]
3182@ CHECK: teq    r7, #40, #2             @ encoding: [0x28,0x01,0x37,0xe3]
3183@ CHECK: teq    r7, #40, #2             @ encoding: [0x28,0x01,0x37,0xe3]
3184@ CHECK: teq	r4, r5                  @ encoding: [0x05,0x00,0x34,0xe1]
3185@ CHECK: teq	r4, r5, lsl #5          @ encoding: [0x85,0x02,0x34,0xe1]
3186@ CHECK: teq	r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x34,0xe1]
3187@ CHECK: teq	r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x34,0xe1]
3188@ CHECK: teq	r4, r5, asr #5          @ encoding: [0xc5,0x02,0x34,0xe1]
3189@ CHECK: teq	r4, r5, ror #5          @ encoding: [0xe5,0x02,0x34,0xe1]
3190@ CHECK: teq	r6, r7, lsl r9          @ encoding: [0x17,0x09,0x36,0xe1]
3191@ CHECK: teq	r6, r7, lsr r9          @ encoding: [0x37,0x09,0x36,0xe1]
3192@ CHECK: teq	r6, r7, asr r9          @ encoding: [0x57,0x09,0x36,0xe1]
3193@ CHECK: teq	r6, r7, ror r9          @ encoding: [0x77,0x09,0x36,0xe1]
3194
3195
3196@------------------------------------------------------------------------------
3197@ TST
3198@------------------------------------------------------------------------------
3199        tst r5, #0xf000
3200        tst r5, $0xf000
3201        tst r5, 0xf000
3202        tst r7, #(0xff << 16)
3203        tst r7, #-2147483638
3204        tst r7, #42, #2
3205        tst r7, #40, #2
3206        tst r7, $40, $2
3207        tst r7, 40, 2
3208        tst r7, (20 * 2), (1 << 1)
3209        tst r4, r5
3210        tst r4, r5, lsl #5
3211        tst r4, r5, lsr #5
3212        tst r4, r5, lsr #5
3213        tst r4, r5, asr #5
3214        tst r4, r5, ror #5
3215        tst r6, r7, lsl r9
3216        tst r6, r7, lsr r9
3217        tst r6, r7, asr r9
3218        tst r6, r7, ror r9
3219
3220@ CHECK: tst	r5, #61440              @ encoding: [0x0f,0x0a,0x15,0xe3]
3221@ CHECK: tst	r5, #61440              @ encoding: [0x0f,0x0a,0x15,0xe3]
3222@ CHECK: tst	r5, #61440              @ encoding: [0x0f,0x0a,0x15,0xe3]
3223@ CHECK: tst    r7, #16711680           @ encoding: [0xff,0x08,0x17,0xe3]
3224@ CHECK: tst    r7, #-2147483638        @ encoding: [0x2a,0x01,0x17,0xe3]
3225@ CHECK: tst    r7, #-2147483638        @ encoding: [0x2a,0x01,0x17,0xe3]
3226@ CHECK: tst    r7, #40, #2             @ encoding: [0x28,0x01,0x17,0xe3]
3227@ CHECK: tst    r7, #40, #2             @ encoding: [0x28,0x01,0x17,0xe3]
3228@ CHECK: tst    r7, #40, #2             @ encoding: [0x28,0x01,0x17,0xe3]
3229@ CHECK: tst    r7, #40, #2             @ encoding: [0x28,0x01,0x17,0xe3]
3230@ CHECK: tst	r4, r5                  @ encoding: [0x05,0x00,0x14,0xe1]
3231@ CHECK: tst	r4, r5, lsl #5          @ encoding: [0x85,0x02,0x14,0xe1]
3232@ CHECK: tst	r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x14,0xe1]
3233@ CHECK: tst	r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x14,0xe1]
3234@ CHECK: tst	r4, r5, asr #5          @ encoding: [0xc5,0x02,0x14,0xe1]
3235@ CHECK: tst	r4, r5, ror #5          @ encoding: [0xe5,0x02,0x14,0xe1]
3236@ CHECK: tst	r6, r7, lsl r9          @ encoding: [0x17,0x09,0x16,0xe1]
3237@ CHECK: tst	r6, r7, lsr r9          @ encoding: [0x37,0x09,0x16,0xe1]
3238@ CHECK: tst	r6, r7, asr r9          @ encoding: [0x57,0x09,0x16,0xe1]
3239@ CHECK: tst	r6, r7, ror r9          @ encoding: [0x77,0x09,0x16,0xe1]
3240
3241
3242@------------------------------------------------------------------------------
3243@ UADD16/UADD8
3244@------------------------------------------------------------------------------
3245        uadd16 r1, r2, r3
3246        uadd16gt r1, r2, r3
3247        uadd8 r1, r2, r3
3248        uadd8le r1, r2, r3
3249
3250@ CHECK: uadd16	r1, r2, r3              @ encoding: [0x13,0x1f,0x52,0xe6]
3251@ CHECK: uadd16gt	r1, r2, r3      @ encoding: [0x13,0x1f,0x52,0xc6]
3252@ CHECK: uadd8	r1, r2, r3              @ encoding: [0x93,0x1f,0x52,0xe6]
3253@ CHECK: uadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x52,0xd6]
3254
3255
3256@------------------------------------------------------------------------------
3257@ UASX
3258@------------------------------------------------------------------------------
3259        uasx r9, r12, r0
3260        uasxeq r9, r12, r0
3261
3262@ CHECK: uasx	r9, r12, r0             @ encoding: [0x30,0x9f,0x5c,0xe6]
3263@ CHECK: uasxeq	r9, r12, r0             @ encoding: [0x30,0x9f,0x5c,0x06]
3264
3265
3266@------------------------------------------------------------------------------
3267@ UBFX
3268@------------------------------------------------------------------------------
3269        ubfx r4, r5, #16, #1
3270        ubfxgt r4, r5, #16, #16
3271
3272@ CHECK: ubfx	r4, r5, #16, #1         @ encoding: [0x55,0x48,0xe0,0xe7]
3273@ CHECK: ubfxgt	r4, r5, #16, #16        @ encoding: [0x55,0x48,0xef,0xc7]
3274
3275
3276@------------------------------------------------------------------------------
3277@ UHADD16/UHADD8
3278@------------------------------------------------------------------------------
3279        uhadd16 r4, r8, r2
3280        uhadd16gt r4, r8, r2
3281        uhadd8 r4, r8, r2
3282        uhadd8gt r4, r8, r2
3283
3284@ CHECK: uhadd16	r4, r8, r2      @ encoding: [0x12,0x4f,0x78,0xe6]
3285@ CHECK: uhadd16gt	r4, r8, r2      @ encoding: [0x12,0x4f,0x78,0xc6]
3286@ CHECK: uhadd8	r4, r8, r2              @ encoding: [0x92,0x4f,0x78,0xe6]
3287@ CHECK: uhadd8gt	r4, r8, r2      @ encoding: [0x92,0x4f,0x78,0xc6]
3288
3289
3290@------------------------------------------------------------------------------
3291@ UHASX
3292@------------------------------------------------------------------------------
3293        uhasx r4, r8, r2
3294        uhasxgt r4, r8, r2
3295
3296@ CHECK: uhasx	r4, r8, r2              @ encoding: [0x32,0x4f,0x78,0xe6]
3297@ CHECK: uhasxgt r4, r8, r2             @ encoding: [0x32,0x4f,0x78,0xc6]
3298
3299
3300@------------------------------------------------------------------------------
3301@ UHSUB16/UHSUB8
3302@------------------------------------------------------------------------------
3303        uhsub16 r4, r8, r2
3304        uhsub16gt r4, r8, r2
3305        uhsub8 r4, r8, r2
3306        uhsub8gt r4, r8, r2
3307
3308@ CHECK: uhsub16	r4, r8, r2      @ encoding: [0x72,0x4f,0x78,0xe6]
3309@ CHECK: uhsub16gt	r4, r8, r2      @ encoding: [0x72,0x4f,0x78,0xc6]
3310@ CHECK: uhsub8	r4, r8, r2              @ encoding: [0xf2,0x4f,0x78,0xe6]
3311@ CHECK: uhsub8gt	r4, r8, r2      @ encoding: [0xf2,0x4f,0x78,0xc6]
3312
3313
3314@------------------------------------------------------------------------------
3315@ UMAAL
3316@------------------------------------------------------------------------------
3317        umaal r3, r4, r5, r6
3318        umaallt r3, r4, r5, r6
3319
3320@ CHECK: umaal	r3, r4, r5, r6          @ encoding: [0x95,0x36,0x44,0xe0]
3321@ CHECK: umaallt	r3, r4, r5, r6  @ encoding: [0x95,0x36,0x44,0xb0]
3322
3323
3324@------------------------------------------------------------------------------
3325@ UMLAL
3326@------------------------------------------------------------------------------
3327        umlal r2, r4, r6, r8
3328        umlalgt r6, r1, r2, r6
3329        umlals r2, r9, r2, r3
3330        umlalseq r3, r5, r1, r2
3331
3332@ CHECK: umlal	r2, r4, r6, r8          @ encoding: [0x96,0x28,0xa4,0xe0]
3333@ CHECK: umlalgt	r6, r1, r2, r6  @ encoding: [0x92,0x66,0xa1,0xc0]
3334@ CHECK: umlals	r2, r9, r2, r3          @ encoding: [0x92,0x23,0xb9,0xe0]
3335@ CHECK: umlalseq	r3, r5, r1, r2  @ encoding: [0x91,0x32,0xb5,0x00]
3336
3337
3338@------------------------------------------------------------------------------
3339@ UMULL
3340@------------------------------------------------------------------------------
3341        umull r2, r4, r6, r8
3342        umullgt r6, r1, r2, r6
3343        umulls r2, r9, r2, r3
3344        umullseq r3, r5, r1, r2
3345
3346@ CHECK: umull	r2, r4, r6, r8          @ encoding: [0x96,0x28,0x84,0xe0]
3347@ CHECK: umullgt	r6, r1, r2, r6  @ encoding: [0x92,0x66,0x81,0xc0]
3348@ CHECK: umulls	r2, r9, r2, r3          @ encoding: [0x92,0x23,0x99,0xe0]
3349@ CHECK: umullseq	r3, r5, r1, r2  @ encoding: [0x91,0x32,0x95,0x00]
3350
3351
3352@------------------------------------------------------------------------------
3353@ UQADD16/UQADD8
3354@------------------------------------------------------------------------------
3355        uqadd16 r1, r2, r3
3356        uqadd16gt r4, r7, r9
3357        uqadd8 r3, r4, r8
3358        uqadd8le r8, r1, r2
3359
3360
3361@ CHECK: uqadd16	r1, r2, r3      @ encoding: [0x13,0x1f,0x62,0xe6]
3362@ CHECK: uqadd16gt	r4, r7, r9      @ encoding: [0x19,0x4f,0x67,0xc6]
3363@ CHECK: uqadd8	r3, r4, r8              @ encoding: [0x98,0x3f,0x64,0xe6]
3364@ CHECK: uqadd8le	r8, r1, r2      @ encoding: [0x92,0x8f,0x61,0xd6]
3365
3366
3367@------------------------------------------------------------------------------
3368@ UQASX
3369@------------------------------------------------------------------------------
3370        uqasx r2, r4, r1
3371        uqasxhi r5, r2, r9
3372
3373@ CHECK: uqasx	r2, r4, r1              @ encoding: [0x31,0x2f,0x64,0xe6]
3374@ CHECK: uqasxhi	r5, r2, r9      @ encoding: [0x39,0x5f,0x62,0x86]
3375
3376
3377@------------------------------------------------------------------------------
3378@ UQSAX
3379@------------------------------------------------------------------------------
3380        uqsax r1, r3, r7
3381        uqsaxal r3, r6, r2
3382
3383@ CHECK: uqsax	r1, r3, r7              @ encoding: [0x57,0x1f,0x63,0xe6]
3384@ CHECK: uqsax	r3, r6, r2              @ encoding: [0x52,0x3f,0x66,0xe6]
3385
3386
3387@------------------------------------------------------------------------------
3388@ UQSUB16/UQSUB8
3389@------------------------------------------------------------------------------
3390        uqsub16 r1, r5, r3
3391        uqsub16gt r3, r2, r5
3392        uqsub8 r2, r1, r4
3393        uqsub8le r4, r6, r9
3394
3395@ CHECK: uqsub16	r1, r5, r3      @ encoding: [0x73,0x1f,0x65,0xe6]
3396@ CHECK: uqsub16gt	r3, r2, r5      @ encoding: [0x75,0x3f,0x62,0xc6]
3397@ CHECK: uqsub8	r2, r1, r4              @ encoding: [0xf4,0x2f,0x61,0xe6]
3398@ CHECK: uqsub8le	r4, r6, r9      @ encoding: [0xf9,0x4f,0x66,0xd6]
3399
3400
3401@------------------------------------------------------------------------------
3402@ USADA8/USAD8
3403@------------------------------------------------------------------------------
3404        usad8 r2, r1, r4
3405        usad8le r4, r6, r9
3406        usada8 r1, r5, r3, r7
3407        usada8gt r3, r2, r5, r1
3408
3409@ CHECK: usad8	r2, r1, r4              @ encoding: [0x11,0xf4,0x82,0xe7]
3410@ CHECK: usad8le	r4, r6, r9      @ encoding: [0x16,0xf9,0x84,0xd7]
3411@ CHECK: usada8	r1, r5, r3, r7          @ encoding: [0x15,0x73,0x81,0xe7]
3412@ CHECK: usada8gt	r3, r2, r5, r1  @ encoding: [0x12,0x15,0x83,0xc7]
3413
3414
3415@------------------------------------------------------------------------------
3416@ USAT
3417@------------------------------------------------------------------------------
3418        usat	r8, #1, r10
3419        usat	r8, #4, r10, lsl #0
3420        usat	r8, #5, r10, lsl #31
3421        usat	r8, #31, r10, asr #32
3422        usat	r8, #16, r10, asr #1
3423
3424@ CHECK: usat	r8, #1, r10             @ encoding: [0x1a,0x80,0xe1,0xe6]
3425@ CHECK: usat	r8, #4, r10             @ encoding: [0x1a,0x80,0xe4,0xe6]
3426@ CHECK: usat	r8, #5, r10, lsl #31    @ encoding: [0x9a,0x8f,0xe5,0xe6]
3427@ CHECK: usat	r8, #31, r10, asr #32   @ encoding: [0x5a,0x80,0xff,0xe6]
3428@ CHECK: usat	r8, #16, r10, asr #1    @ encoding: [0xda,0x80,0xf0,0xe6]
3429
3430
3431@------------------------------------------------------------------------------
3432@ USAT16
3433@------------------------------------------------------------------------------
3434        usat16	r2, #2, r7
3435        usat16	r3, #15, r5
3436
3437@ CHECK: usat16	r2, #2, r7              @ encoding: [0x37,0x2f,0xe2,0xe6]
3438@ CHECK: usat16	r3, #15, r5             @ encoding: [0x35,0x3f,0xef,0xe6]
3439
3440
3441@------------------------------------------------------------------------------
3442@ USAX
3443@------------------------------------------------------------------------------
3444        usax r2, r3, r4
3445        usaxne r2, r3, r4
3446
3447@ CHECK: usax	r2, r3, r4              @ encoding: [0x54,0x2f,0x53,0xe6]
3448@ CHECK: usaxne	r2, r3, r4              @ encoding: [0x54,0x2f,0x53,0x16]
3449
3450@------------------------------------------------------------------------------
3451@ USUB16/USUB8
3452@------------------------------------------------------------------------------
3453        usub16 r4, r2, r7
3454        usub16hi r1, r1, r3
3455        usub8 r1, r8, r5
3456        usub8le r9, r2, r3
3457
3458@ CHECK: usub16	r4, r2, r7              @ encoding: [0x77,0x4f,0x52,0xe6]
3459@ CHECK: usub16hi	r1, r1, r3      @ encoding: [0x73,0x1f,0x51,0x86]
3460@ CHECK: usub8	r1, r8, r5              @ encoding: [0xf5,0x1f,0x58,0xe6]
3461@ CHECK: usub8le	r9, r2, r3      @ encoding: [0xf3,0x9f,0x52,0xd6]
3462
3463
3464@------------------------------------------------------------------------------
3465@ UXTAB
3466@------------------------------------------------------------------------------
3467        uxtab r2, r3, r4
3468        uxtab r4, r5, r6, ror #0
3469        uxtablt r6, r2, r9, ror #8
3470        uxtab r5, r1, r4, ror #16
3471        uxtab r7, r8, r3, ror #24
3472
3473@ CHECK: uxtab	r2, r3, r4              @ encoding: [0x74,0x20,0xe3,0xe6]
3474@ CHECK: uxtab	r4, r5, r6              @ encoding: [0x76,0x40,0xe5,0xe6]
3475@ CHECK: uxtablt r6, r2, r9, ror #8     @ encoding: [0x79,0x64,0xe2,0xb6]
3476@ CHECK: uxtab	r5, r1, r4, ror #16     @ encoding: [0x74,0x58,0xe1,0xe6]
3477@ CHECK: uxtab	r7, r8, r3, ror #24     @ encoding: [0x73,0x7c,0xe8,0xe6]
3478
3479
3480@------------------------------------------------------------------------------
3481@ UXTAB16
3482@------------------------------------------------------------------------------
3483        uxtab16ge r0, r1, r4
3484        uxtab16 r6, r2, r7, ror #0
3485        uxtab16 r3, r5, r8, ror #8
3486        uxtab16 r3, r2, r1, ror #16
3487        uxtab16eq r1, r2, r3, ror #24
3488
3489@ CHECK: uxtab16ge	r0, r1, r4      @ encoding: [0x74,0x00,0xc1,0xa6]
3490@ CHECK: uxtab16	r6, r2, r7      @ encoding: [0x77,0x60,0xc2,0xe6]
3491@ CHECK: uxtab16	r3, r5, r8, ror #8 @ encoding: [0x78,0x34,0xc5,0xe6]
3492@ CHECK: uxtab16	r3, r2, r1, ror #16 @ encoding: [0x71,0x38,0xc2,0xe6]
3493@ CHECK: uxtab16eq	r1, r2, r3, ror #24 @ encoding: [0x73,0x1c,0xc2,0x06]
3494
3495
3496@------------------------------------------------------------------------------
3497@ UXTAH
3498@------------------------------------------------------------------------------
3499        uxtah r1, r3, r9
3500        uxtahhi r6, r1, r6, ror #0
3501        uxtah r3, r8, r3, ror #8
3502        uxtahlo r2, r2, r4, ror #16
3503        uxtah r9, r3, r3, ror #24
3504
3505@ CHECK: uxtah	r1, r3, r9              @ encoding: [0x79,0x10,0xf3,0xe6]
3506@ CHECK: uxtahhi	r6, r1, r6      @ encoding: [0x76,0x60,0xf1,0x86]
3507@ CHECK: uxtah	r3, r8, r3, ror #8      @ encoding: [0x73,0x34,0xf8,0xe6]
3508@ CHECK: uxtahlo	r2, r2, r4, ror #16 @ encoding: [0x74,0x28,0xf2,0x36]
3509@ CHECK: uxtah	r9, r3, r3, ror #24     @ encoding: [0x73,0x9c,0xf3,0xe6]
3510
3511@------------------------------------------------------------------------------
3512@ UXTB
3513@------------------------------------------------------------------------------
3514        uxtbge r2, r4
3515        uxtb r5, r6, ror #0
3516        uxtb r6, r9, ror #8
3517        uxtbcc r5, r1, ror #16
3518        uxtb r8, r3, ror #24
3519
3520@ CHECK: uxtbge	r2, r4                  @ encoding: [0x74,0x20,0xef,0xa6]
3521@ CHECK: uxtb	r5, r6                  @ encoding: [0x76,0x50,0xef,0xe6]
3522@ CHECK: uxtb	r6, r9, ror #8          @ encoding: [0x79,0x64,0xef,0xe6]
3523@ CHECK: uxtblo	r5, r1, ror #16         @ encoding: [0x71,0x58,0xef,0x36]
3524@ CHECK: uxtb	r8, r3, ror #24         @ encoding: [0x73,0x8c,0xef,0xe6]
3525
3526
3527@------------------------------------------------------------------------------
3528@ UXTB16
3529@------------------------------------------------------------------------------
3530        uxtb16 r1, r4
3531        uxtb16 r6, r7, ror #0
3532        uxtb16cs r3, r5, ror #8
3533        uxtb16 r3, r1, ror #16
3534        uxtb16ge r2, r3, ror #24
3535
3536@ CHECK: uxtb16	r1, r4                  @ encoding: [0x74,0x10,0xcf,0xe6]
3537@ CHECK: uxtb16	r6, r7                  @ encoding: [0x77,0x60,0xcf,0xe6]
3538@ CHECK: uxtb16hs	r3, r5, ror #8  @ encoding: [0x75,0x34,0xcf,0x26]
3539@ CHECK: uxtb16	r3, r1, ror #16         @ encoding: [0x71,0x38,0xcf,0xe6]
3540@ CHECK: uxtb16ge	r2, r3, ror #24 @ encoding: [0x73,0x2c,0xcf,0xa6]
3541
3542
3543@------------------------------------------------------------------------------
3544@ UXTH
3545@------------------------------------------------------------------------------
3546        uxthne r3, r9
3547        uxth r1, r6, ror #0
3548        uxth r3, r8, ror #8
3549        uxthle r2, r2, ror #16
3550        uxth r9, r3, ror #24
3551
3552@ CHECK: uxthne	r3, r9                  @ encoding: [0x79,0x30,0xff,0x16]
3553@ CHECK: uxth	r1, r6                  @ encoding: [0x76,0x10,0xff,0xe6]
3554@ CHECK: uxth	r3, r8, ror #8          @ encoding: [0x78,0x34,0xff,0xe6]
3555@ CHECK: uxthle	r2, r2, ror #16         @ encoding: [0x72,0x28,0xff,0xd6]
3556@ CHECK: uxth	r9, r3, ror #24         @ encoding: [0x73,0x9c,0xff,0xe6]
3557
3558
3559@------------------------------------------------------------------------------
3560@ WFE/WFI/YIELD
3561@------------------------------------------------------------------------------
3562        wfe
3563        wfehi
3564        wfi
3565        wfilt
3566        yield
3567        yieldne
3568        hint #4
3569        hint #3
3570        hint #2
3571        hint #1
3572        hint #0
3573        hintgt #239
3574
3575@ CHECK: wfe                            @ encoding: [0x02,0xf0,0x20,0xe3]
3576@ CHECK: wfehi                          @ encoding: [0x02,0xf0,0x20,0x83]
3577@ CHECK: wfi                            @ encoding: [0x03,0xf0,0x20,0xe3]
3578@ CHECK: wfilt                          @ encoding: [0x03,0xf0,0x20,0xb3]
3579@ CHECK: yield                          @ encoding: [0x01,0xf0,0x20,0xe3]
3580@ CHECK: yieldne                        @ encoding: [0x01,0xf0,0x20,0x13]
3581@ CHECK: sev                            @ encoding: [0x04,0xf0,0x20,0xe3]
3582@ CHECK: wfi                            @ encoding: [0x03,0xf0,0x20,0xe3]
3583@ CHECK: wfe                            @ encoding: [0x02,0xf0,0x20,0xe3]
3584@ CHECK: yield                          @ encoding: [0x01,0xf0,0x20,0xe3]
3585@ CHECK: nop                            @ encoding: [0x00,0xf0,0x20,0xe3]
3586@ CHECK: hintgt #239                    @ encoding: [0xef,0xf0,0x20,0xc3]
3587