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