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