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