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