basic-arm-instructions.s revision e29e2afc738348c74966ed81b3568779247c9fbd
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        mrc  p15, #7, pc, c15, c6, #6
1080        mrc2  p14, #0, r1, c1, c2, #4
1081        mrc2  p10, #7, apsr_nzcv, c15, c0, #1
1082        mrc2  p10, #7, pc, c15, c0, #1
1083
1084@ CHECK: mrc  p14, #0, r1, c1, c2, #4             @ encoding: [0x92,0x1e,0x11,0xee]
1085@ CHECK: mrc  p15, #7, apsr_nzcv, c15, c6, #6     @ encoding: [0xd6,0xff,0xff,0xee]
1086@ CHECK: mrc  p15, #7, pc, c15, c6, #6            @ encoding: [0xd6,0xff,0xff,0xee]
1087@ CHECK: mrc2  p14, #0, r1, c1, c2, #4            @ encoding: [0x92,0x1e,0x11,0xfe]
1088@ CHECK: mrc2  p10, #7, apsr_nzcv, c15, c0, #1    @ encoding: [0x30,0xfa,0xff,0xfe]
1089@ CHECK: mrc2  p10, #7, pc, c15, c0, #1           @ encoding: [0x30,0xfa,0xff,0xfe]
1090
1091        mrceq  p15, #7, pc, c15, c6, #6
1092@ CHECK: mrceq  p15, #7, pc, c15, c6, #6            @ encoding: [0xd6,0xff,0xff,0x0e]
1093
1094@------------------------------------------------------------------------------
1095@ MRRC/MRRC2
1096@------------------------------------------------------------------------------
1097        mrrc  p7, #1, r5, r4, c1
1098        mrrc2  p7, #1, r5, r4, c1
1099
1100@ CHECK: mrrc  p7, #1, r5, r4, c1       @ encoding: [0x11,0x57,0x54,0xec]
1101@ CHECK: mrrc2  p7, #1, r5, r4, c1      @ encoding: [0x11,0x57,0x54,0xfc]
1102
1103        mrrclo  p7, #1, r5, r4, c1
1104@ CHECK: mrrclo  p7, #1, r5, r4, c1      @ encoding: [0x11,0x57,0x54,0x3c]
1105
1106@------------------------------------------------------------------------------
1107@ MRS
1108@------------------------------------------------------------------------------
1109        mrs  r8, apsr
1110        mrs  r8, cpsr
1111        mrs  r8, spsr
1112@ CHECK: mrs  r8, apsr                  @ encoding: [0x00,0x80,0x0f,0xe1]
1113@ CHECK: mrs  r8, apsr                  @ encoding: [0x00,0x80,0x0f,0xe1]
1114@ CHECK: mrs  r8, spsr                  @ encoding: [0x00,0x80,0x4f,0xe1]
1115
1116
1117
1118@------------------------------------------------------------------------------
1119@ MSR
1120@------------------------------------------------------------------------------
1121
1122        msr  apsr, #5
1123        msr  apsr_g, #5
1124        msr  apsr_nzcvq, #5
1125        msr  APSR_nzcvq, #5
1126        msr  apsr_nzcvqg, #5
1127        msr  cpsr_fc, #5
1128        msr  cpsr_c, #5
1129        msr  cpsr_x, #5
1130        msr  cpsr_fc, #5
1131        msr  cpsr_all, #5
1132        msr  cpsr_fsx, #5
1133        msr  spsr_fc, #5
1134        msr  SPSR_fsxc, #5
1135        msr  cpsr_fsxc, #5
1136
1137@ CHECK: msr	APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
1138@ CHECK: msr	APSR_g, #5              @ encoding: [0x05,0xf0,0x24,0xe3]
1139@ CHECK: msr	APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
1140@ CHECK: msr	APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
1141@ CHECK: msr	APSR_nzcvqg, #5         @ encoding: [0x05,0xf0,0x2c,0xe3]
1142@ CHECK: msr	CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
1143@ CHECK: msr	CPSR_c, #5              @ encoding: [0x05,0xf0,0x21,0xe3]
1144@ CHECK: msr	CPSR_x, #5              @ encoding: [0x05,0xf0,0x22,0xe3]
1145@ CHECK: msr	CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
1146@ CHECK: msr	CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
1147@ CHECK: msr	CPSR_fsx, #5            @ encoding: [0x05,0xf0,0x2e,0xe3]
1148@ CHECK: msr	SPSR_fc, #5             @ encoding: [0x05,0xf0,0x69,0xe3]
1149@ CHECK: msr	SPSR_fsxc, #5           @ encoding: [0x05,0xf0,0x6f,0xe3]
1150@ CHECK: msr	CPSR_fsxc, #5           @ encoding: [0x05,0xf0,0x2f,0xe3]
1151
1152        msr  apsr, r0
1153        msr  apsr_g, r0
1154        msr  apsr_nzcvq, r0
1155        msr  APSR_nzcvq, r0
1156        msr  apsr_nzcvqg, r0
1157        msr  cpsr_fc, r0
1158        msr  cpsr_c, r0
1159        msr  cpsr_x, r0
1160        msr  cpsr_fc, r0
1161        msr  cpsr_all, r0
1162        msr  cpsr_fsx, r0
1163        msr  spsr_fc, r0
1164        msr  SPSR_fsxc, r0
1165        msr  cpsr_fsxc, r0
1166
1167@ CHECK: msr  APSR_nzcvq, r0            @ encoding: [0x00,0xf0,0x28,0xe1]
1168@ CHECK: msr  APSR_g, r0                @ encoding: [0x00,0xf0,0x24,0xe1]
1169@ CHECK: msr  APSR_nzcvq, r0            @ encoding: [0x00,0xf0,0x28,0xe1]
1170@ CHECK: msr  APSR_nzcvq, r0            @ encoding: [0x00,0xf0,0x28,0xe1]
1171@ CHECK: msr  APSR_nzcvqg, r0           @ encoding: [0x00,0xf0,0x2c,0xe1]
1172@ CHECK: msr  CPSR_fc, r0               @ encoding: [0x00,0xf0,0x29,0xe1]
1173@ CHECK: msr  CPSR_c, r0                @ encoding: [0x00,0xf0,0x21,0xe1]
1174@ CHECK: msr  CPSR_x, r0                @ encoding: [0x00,0xf0,0x22,0xe1]
1175@ CHECK: msr  CPSR_fc, r0               @ encoding: [0x00,0xf0,0x29,0xe1]
1176@ CHECK: msr  CPSR_fc, r0               @ encoding: [0x00,0xf0,0x29,0xe1]
1177@ CHECK: msr  CPSR_fsx, r0              @ encoding: [0x00,0xf0,0x2e,0xe1]
1178@ CHECK: msr  SPSR_fc, r0               @ encoding: [0x00,0xf0,0x69,0xe1]
1179@ CHECK: msr  SPSR_fsxc, r0             @ encoding: [0x00,0xf0,0x6f,0xe1]
1180@ CHECK: msr  CPSR_fsxc, r0             @ encoding: [0x00,0xf0,0x2f,0xe1]
1181
1182@------------------------------------------------------------------------------
1183@ MUL
1184@------------------------------------------------------------------------------
1185        mul r5, r6, r7
1186        muls r5, r6, r7
1187        mulgt r5, r6, r7
1188        mulsle r5, r6, r7
1189        mul r11, r5
1190
1191@ CHECK: mul	r5, r6, r7              @ encoding: [0x96,0x07,0x05,0xe0]
1192@ CHECK: muls	r5, r6, r7              @ encoding: [0x96,0x07,0x15,0xe0]
1193@ CHECK: mulgt	r5, r6, r7              @ encoding: [0x96,0x07,0x05,0xc0]
1194@ CHECK: mulsle	r5, r6, r7              @ encoding: [0x96,0x07,0x15,0xd0]
1195
1196
1197@------------------------------------------------------------------------------
1198@ MVN (immediate)
1199@------------------------------------------------------------------------------
1200        mvn r3, #7
1201        mvn r4, #0xff0
1202        mvn r5, #0xff0000
1203        mvns r3, #7
1204        mvneq r4, #0xff0
1205        mvnseq r5, #0xff0000
1206
1207@ CHECK: mvn	r3, #7                  @ encoding: [0x07,0x30,0xe0,0xe3]
1208@ CHECK: mvn	r4, #4080               @ encoding: [0xff,0x4e,0xe0,0xe3]
1209@ CHECK: mvn	r5, #16711680           @ encoding: [0xff,0x58,0xe0,0xe3]
1210@ CHECK: mvns	r3, #7                  @ encoding: [0x07,0x30,0xf0,0xe3]
1211@ CHECK: mvneq	r4, #4080               @ encoding: [0xff,0x4e,0xe0,0x03]
1212@ CHECK: mvnseq	r5, #16711680           @ encoding: [0xff,0x58,0xf0,0x03]
1213
1214
1215@------------------------------------------------------------------------------
1216@ MVN (register)
1217@------------------------------------------------------------------------------
1218        mvn r2, r3
1219        mvns r2, r3
1220        mvn r5, r6, lsl #19
1221        mvn r5, r6, lsr #9
1222        mvn r5, r6, asr #4
1223        mvn r5, r6, ror #6
1224        mvn r5, r6, rrx
1225        mvneq r2, r3
1226        mvnseq r2, r3, lsl #10
1227
1228@ CHECK: mvn	r2, r3                  @ encoding: [0x03,0x20,0xe0,0xe1]
1229@ CHECK: mvns	r2, r3                  @ encoding: [0x03,0x20,0xf0,0xe1]
1230@ CHECK: mvn	r5, r6, lsl #19         @ encoding: [0x86,0x59,0xe0,0xe1]
1231@ CHECK: mvn	r5, r6, lsr #9          @ encoding: [0xa6,0x54,0xe0,0xe1]
1232@ CHECK: mvn	r5, r6, asr #4          @ encoding: [0x46,0x52,0xe0,0xe1]
1233@ CHECK: mvn	r5, r6, ror #6          @ encoding: [0x66,0x53,0xe0,0xe1]
1234@ CHECK: mvn	r5, r6, rrx             @ encoding: [0x66,0x50,0xe0,0xe1]
1235@ CHECK: mvneq	r2, r3                  @ encoding: [0x03,0x20,0xe0,0x01]
1236@ CHECK: mvnseq	r2, r3, lsl #10         @ encoding: [0x03,0x25,0xf0,0x01]
1237
1238
1239@------------------------------------------------------------------------------
1240@ MVN (shifted register)
1241@------------------------------------------------------------------------------
1242        mvn r5, r6, lsl r7
1243        mvns r5, r6, lsr r7
1244        mvngt r5, r6, asr r7
1245        mvnslt r5, r6, ror r7
1246
1247@ CHECK: mvn	r5, r6, lsl r7          @ encoding: [0x16,0x57,0xe0,0xe1]
1248@ CHECK: mvns	r5, r6, lsr r7          @ encoding: [0x36,0x57,0xf0,0xe1]
1249@ CHECK: mvngt	r5, r6, asr r7          @ encoding: [0x56,0x57,0xe0,0xc1]
1250@ CHECK: mvnslt	r5, r6, ror r7          @ encoding: [0x76,0x57,0xf0,0xb1]
1251
1252@------------------------------------------------------------------------------
1253@ NEG
1254@------------------------------------------------------------------------------
1255        neg r5, r8
1256
1257@ CHECK: rsb	r5, r8, #0              @ encoding: [0x00,0x50,0x68,0xe2]
1258
1259
1260@------------------------------------------------------------------------------
1261@ NOP
1262@------------------------------------------------------------------------------
1263        nop
1264        nop.w
1265        nopgt
1266
1267@ CHECK: nop @ encoding: [0x00,0xf0,0x20,0xe3]
1268@ CHECK: nop @ encoding: [0x00,0xf0,0x20,0xe3]
1269@ CHECK: nopgt @ encoding: [0x00,0xf0,0x20,0xc3]
1270
1271
1272@------------------------------------------------------------------------------
1273@ ORR
1274@------------------------------------------------------------------------------
1275        orr r4, r5, #0xf000
1276        orr r4, r5, r6
1277        orr r4, r5, r6, lsl #5
1278        orr r4, r5, r6, lsr #5
1279        orr r4, r5, r6, lsr #5
1280        orr r4, r5, r6, asr #5
1281        orr r4, r5, r6, ror #5
1282        orr r6, r7, r8, lsl r9
1283        orr r6, r7, r8, lsr r9
1284        orr r6, r7, r8, asr r9
1285        orr r6, r7, r8, ror r9
1286        orr r4, r5, r6, rrx
1287
1288        @ destination register is optional
1289        orr r5, #0xf000
1290        orr r4, r5
1291        orr r4, r5, lsl #5
1292        orr r4, r5, lsr #5
1293        orr r4, r5, lsr #5
1294        orr r4, r5, asr #5
1295        orr r4, r5, ror #5
1296        orr r6, r7, lsl r9
1297        orr r6, r7, lsr r9
1298        orr r6, r7, asr r9
1299        orr r6, r7, ror r9
1300        orr r4, r5, rrx
1301
1302@ CHECK: orr	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x85,0xe3]
1303@ CHECK: orr	r4, r5, r6              @ encoding: [0x06,0x40,0x85,0xe1]
1304@ CHECK: orr	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x85,0xe1]
1305@ CHECK: orr	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe1]
1306@ CHECK: orr	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe1]
1307@ CHECK: orr	r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x85,0xe1]
1308@ CHECK: orr	r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x85,0xe1]
1309@ CHECK: orr	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x87,0xe1]
1310@ CHECK: orr	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x87,0xe1]
1311@ CHECK: orr	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x87,0xe1]
1312@ CHECK: orr	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0xe1]
1313@ CHECK: orr	r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x85,0xe1]
1314
1315@ CHECK: orr	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0xe3]
1316@ CHECK: orr	r4, r4, r5              @ encoding: [0x05,0x40,0x84,0xe1]
1317@ CHECK: orr	r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x84,0xe1]
1318@ CHECK: orr	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe1]
1319@ CHECK: orr	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe1]
1320@ CHECK: orr	r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x84,0xe1]
1321@ CHECK: orr	r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x84,0xe1]
1322@ CHECK: orr	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x86,0xe1]
1323@ CHECK: orr	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x86,0xe1]
1324@ CHECK: orr	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0xe1]
1325@ CHECK: orr	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x86,0xe1]
1326@ CHECK: orr	r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x84,0xe1]
1327
1328        orrseq r4, r5, #0xf000
1329        orrne r4, r5, r6
1330        orrseq r4, r5, r6, lsl #5
1331        orrlo r6, r7, r8, ror r9
1332        orrshi r4, r5, r6, rrx
1333        orrcs r5, #0xf000
1334        orrseq r4, r5
1335        orrne r6, r7, asr r9
1336        orrslt r6, r7, ror r9
1337        orrsgt r4, r5, rrx
1338
1339@ CHECK: orrseq	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x95,0x03]
1340@ CHECK: orrne	r4, r5, r6              @ encoding: [0x06,0x40,0x85,0x11]
1341@ CHECK: orrseq	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x95,0x01]
1342@ CHECK: orrlo	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0x31]
1343@ CHECK: orrshi	r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x95,0x81]
1344@ CHECK: orrhs	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0x23]
1345@ CHECK: orrseq	r4, r4, r5              @ encoding: [0x05,0x40,0x94,0x01]
1346@ CHECK: orrne	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0x11]
1347@ CHECK: orrslt	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x96,0xb1]
1348@ CHECK: orrsgt	r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x94,0xc1]
1349
1350    @ Test right shift by 32, which is encoded as 0
1351    orr r3, r1, r2, lsr #32
1352    orr r3, r1, r2, asr #32
1353@ CHECK: orr	r3, r1, r2, lsr #32     @ encoding: [0x22,0x30,0x81,0xe1]
1354@ CHECK: orr	r3, r1, r2, asr #32     @ encoding: [0x42,0x30,0x81,0xe1]
1355
1356@------------------------------------------------------------------------------
1357@ PKH
1358@------------------------------------------------------------------------------
1359        pkhbt r2, r2, r3
1360        pkhbt r2, r2, r3, lsl #31
1361        pkhbt r2, r2, r3, lsl #0
1362        pkhbt r2, r2, r3, lsl #15
1363
1364        pkhtb r2, r2, r3
1365        pkhtb r2, r2, r3, asr #31
1366        pkhtb r2, r2, r3, asr #15
1367
1368@ CHECK: pkhbt	r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
1369@ CHECK: pkhbt	r2, r2, r3, lsl #31     @ encoding: [0x93,0x2f,0x82,0xe6]
1370@ CHECK: pkhbt	r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
1371@ CHECK: pkhbt	r2, r2, r3, lsl #15     @ encoding: [0x93,0x27,0x82,0xe6]
1372
1373@ CHECK: pkhbt	r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
1374@ CHECK: pkhtb	r2, r2, r3, asr #31     @ encoding: [0xd3,0x2f,0x82,0xe6]
1375@ CHECK: pkhtb	r2, r2, r3, asr #15     @ encoding: [0xd3,0x27,0x82,0xe6]
1376
1377@------------------------------------------------------------------------------
1378@ FIXME: PLD
1379@------------------------------------------------------------------------------
1380@------------------------------------------------------------------------------
1381@ FIXME: PLI
1382@------------------------------------------------------------------------------
1383
1384
1385@------------------------------------------------------------------------------
1386@ POP
1387@------------------------------------------------------------------------------
1388        pop {r7}
1389        pop {r7, r8, r9, r10}
1390
1391@ CHECK: pop	{r7}                    @ encoding: [0x04,0x70,0x9d,0xe4]
1392@ CHECK: pop	{r7, r8, r9, r10}       @ encoding: [0x80,0x07,0xbd,0xe8]
1393
1394
1395@------------------------------------------------------------------------------
1396@ PUSH
1397@------------------------------------------------------------------------------
1398        push {r7}
1399        push {r7, r8, r9, r10}
1400
1401@ CHECK: push	{r7}                    @ encoding: [0x04,0x70,0x2d,0xe5]
1402@ CHECK: push	{r7, r8, r9, r10}       @ encoding: [0x80,0x07,0x2d,0xe9]
1403
1404
1405@------------------------------------------------------------------------------
1406@ QADD/QADD16/QADD8
1407@------------------------------------------------------------------------------
1408        qadd r1, r2, r3
1409        qaddne r1, r2, r3
1410        qadd16 r1, r2, r3
1411        qadd16gt r1, r2, r3
1412        qadd8 r1, r2, r3
1413        qadd8le r1, r2, r3
1414
1415@ CHECK: qadd	r1, r2, r3              @ encoding: [0x52,0x10,0x03,0xe1]
1416@ CHECK: qaddne	r1, r2, r3              @ encoding: [0x52,0x10,0x03,0x11]
1417@ CHECK: qadd16	r1, r2, r3              @ encoding: [0x13,0x1f,0x22,0xe6]
1418@ CHECK: qadd16gt	r1, r2, r3      @ encoding: [0x13,0x1f,0x22,0xc6]
1419@ CHECK: qadd8	r1, r2, r3              @ encoding: [0x93,0x1f,0x22,0xe6]
1420@ CHECK: qadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x22,0xd6]
1421
1422
1423@------------------------------------------------------------------------------
1424@ QDADD/QDSUB
1425@------------------------------------------------------------------------------
1426        qdadd r6, r7, r8
1427        qdaddhi r6, r7, r8
1428        qdsub r6, r7, r8
1429        qdsubhi r6, r7, r8
1430
1431@ CHECK: qdadd	r6, r7, r8              @ encoding: [0x57,0x60,0x48,0xe1]
1432@ CHECK: qdaddhi r6, r7, r8             @ encoding: [0x57,0x60,0x48,0x81]
1433@ CHECK: qdsub	r6, r7, r8              @ encoding: [0x57,0x60,0x68,0xe1]
1434@ CHECK: qdsubhi r6, r7, r8             @ encoding: [0x57,0x60,0x68,0x81]
1435
1436
1437@------------------------------------------------------------------------------
1438@ QSAX
1439@------------------------------------------------------------------------------
1440        qsax r9, r12, r0
1441        qsaxeq r9, r12, r0
1442
1443@ CHECK: qsax	r9, r12, r0             @ encoding: [0x50,0x9f,0x2c,0xe6]
1444@ CHECK: qsaxeq	r9, r12, r0             @ encoding: [0x50,0x9f,0x2c,0x06]
1445
1446
1447@------------------------------------------------------------------------------
1448@ QSUB/QSUB16/QSUB8
1449@------------------------------------------------------------------------------
1450        qsub r1, r2, r3
1451        qsubne r1, r2, r3
1452        qsub16 r1, r2, r3
1453        qsub16gt r1, r2, r3
1454        qsub8 r1, r2, r3
1455        qsub8le r1, r2, r3
1456
1457@ CHECK: qsub	r1, r2, r3              @ encoding: [0x52,0x10,0x23,0xe1]
1458@ CHECK: qsubne	r1, r2, r3              @ encoding: [0x52,0x10,0x23,0x11]
1459@ CHECK: qsub16	r1, r2, r3              @ encoding: [0x73,0x1f,0x22,0xe6]
1460@ CHECK: qsub16gt	r1, r2, r3      @ encoding: [0x73,0x1f,0x22,0xc6]
1461@ CHECK: qsub8	r1, r2, r3              @ encoding: [0xf3,0x1f,0x22,0xe6]
1462@ CHECK: qsub8le r1, r2, r3             @ encoding: [0xf3,0x1f,0x22,0xd6]
1463
1464
1465@------------------------------------------------------------------------------
1466@ RBIT
1467@------------------------------------------------------------------------------
1468        rbit r1, r2
1469        rbitne r1, r2
1470
1471@ CHECK: rbit	r1, r2                  @ encoding: [0x32,0x1f,0xff,0xe6]
1472@ CHECK: rbitne	r1, r2                  @ encoding: [0x32,0x1f,0xff,0x16]
1473
1474
1475@------------------------------------------------------------------------------
1476@ REV/REV16/REVSH
1477@------------------------------------------------------------------------------
1478        rev r1, r9
1479        revne r1, r5
1480        rev16 r8, r3
1481        rev16ne r12, r4
1482        revsh r4, r9
1483        revshne r9, r1
1484
1485@ CHECK: rev	r1, r9                  @ encoding: [0x39,0x1f,0xbf,0xe6]
1486@ CHECK: revne	r1, r5                  @ encoding: [0x35,0x1f,0xbf,0x16]
1487@ CHECK: rev16	r8, r3                  @ encoding: [0xb3,0x8f,0xbf,0xe6]
1488@ CHECK: rev16ne r12, r4                @ encoding: [0xb4,0xcf,0xbf,0x16]
1489@ CHECK: revsh	r4, r9                  @ encoding: [0xb9,0x4f,0xff,0xe6]
1490@ CHECK: revshne r9, r1                 @ encoding: [0xb1,0x9f,0xff,0x16]
1491
1492
1493@------------------------------------------------------------------------------
1494@ RFE
1495@------------------------------------------------------------------------------
1496        rfeda r2
1497        rfedb r3
1498        rfeia r5
1499        rfeib r6
1500
1501        rfeda r4!
1502        rfedb r7!
1503        rfeia r9!
1504        rfeib r8!
1505
1506        rfefa r2
1507        rfeea r3
1508        rfefd r5
1509        rfeed r6
1510
1511        rfefa r4!
1512        rfeea r7!
1513        rfefd r9!
1514        rfeed r8!
1515
1516        rfe r1
1517        rfe r1!
1518
1519@ CHECK: rfeda	r2                      @ encoding: [0x00,0x0a,0x12,0xf8]
1520@ CHECK: rfedb	r3                      @ encoding: [0x00,0x0a,0x13,0xf9]
1521@ CHECK: rfeia	r5                      @ encoding: [0x00,0x0a,0x95,0xf8]
1522@ CHECK: rfeib	r6                      @ encoding: [0x00,0x0a,0x96,0xf9]
1523
1524@ CHECK: rfeda	r4!                     @ encoding: [0x00,0x0a,0x34,0xf8]
1525@ CHECK: rfedb	r7!                     @ encoding: [0x00,0x0a,0x37,0xf9]
1526@ CHECK: rfeia	r9!                     @ encoding: [0x00,0x0a,0xb9,0xf8]
1527@ CHECK: rfeib	r8!                     @ encoding: [0x00,0x0a,0xb8,0xf9]
1528
1529@ CHECK: rfeda	r2                      @ encoding: [0x00,0x0a,0x12,0xf8]
1530@ CHECK: rfedb	r3                      @ encoding: [0x00,0x0a,0x13,0xf9]
1531@ CHECK: rfeia	r5                      @ encoding: [0x00,0x0a,0x95,0xf8]
1532@ CHECK: rfeib	r6                      @ encoding: [0x00,0x0a,0x96,0xf9]
1533
1534@ CHECK: rfeda	r4!                     @ encoding: [0x00,0x0a,0x34,0xf8]
1535@ CHECK: rfedb	r7!                     @ encoding: [0x00,0x0a,0x37,0xf9]
1536@ CHECK: rfeia	r9!                     @ encoding: [0x00,0x0a,0xb9,0xf8]
1537@ CHECK: rfeib	r8!                     @ encoding: [0x00,0x0a,0xb8,0xf9]
1538
1539@ CHECK: rfeia	r1                      @ encoding: [0x00,0x0a,0x91,0xf8]
1540@ CHECK: rfeia	r1!                     @ encoding: [0x00,0x0a,0xb1,0xf8]
1541
1542
1543@------------------------------------------------------------------------------
1544@ ROR
1545@------------------------------------------------------------------------------
1546	ror r2, r4, #31
1547	ror r2, r4, #1
1548	ror r2, r4, #0
1549	ror r4, #1
1550
1551@ CHECK: ror	r2, r4, #31             @ encoding: [0xe4,0x2f,0xa0,0xe1]
1552@ CHECK: ror	r2, r4, #1              @ encoding: [0xe4,0x20,0xa0,0xe1]
1553@ CHECK: mov	r2, r4                  @ encoding: [0x04,0x20,0xa0,0xe1]
1554@ CHECK: ror	r4, r4, #1              @ encoding: [0xe4,0x40,0xa0,0xe1]
1555
1556
1557@------------------------------------------------------------------------------
1558@ RSB
1559@------------------------------------------------------------------------------
1560        rsb r4, r5, #0xf000
1561        rsb r4, r5, r6
1562        rsb r4, r5, r6, lsl #5
1563        rsblo r4, r5, r6, lsr #5
1564        rsb r4, r5, r6, lsr #5
1565        rsb r4, r5, r6, asr #5
1566        rsb r4, r5, r6, ror #5
1567        rsb r6, r7, r8, lsl r9
1568        rsb r6, r7, r8, lsr r9
1569        rsb r6, r7, r8, asr r9
1570        rsble r6, r7, r8, ror r9
1571        rsb r4, r5, r6, rrx
1572
1573        @ destination register is optional
1574        rsb r5, #0xf000
1575        rsb r4, r5
1576        rsb r4, r5, lsl #5
1577        rsb r4, r5, lsr #5
1578        rsbne r4, r5, lsr #5
1579        rsb r4, r5, asr #5
1580        rsb r4, r5, ror #5
1581        rsbgt r6, r7, lsl r9
1582        rsb r6, r7, lsr r9
1583        rsb r6, r7, asr r9
1584        rsb r6, r7, ror r9
1585        rsb r4, r5, rrx
1586
1587@ CHECK: rsb	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x65,0xe2]
1588@ CHECK: rsb	r4, r5, r6              @ encoding: [0x06,0x40,0x65,0xe0]
1589@ CHECK: rsb	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x65,0xe0]
1590@ CHECK: rsblo	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x65,0x30]
1591@ CHECK: rsb	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x65,0xe0]
1592@ CHECK: rsb	r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x65,0xe0]
1593@ CHECK: rsb	r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x65,0xe0]
1594@ CHECK: rsb	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x67,0xe0]
1595@ CHECK: rsb	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x67,0xe0]
1596@ CHECK: rsb	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x67,0xe0]
1597@ CHECK: rsble	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x67,0xd0]
1598@ CHECK: rsb	r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x65,0xe0]
1599
1600@ CHECK: rsb	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x65,0xe2]
1601@ CHECK: rsb	r4, r4, r5              @ encoding: [0x05,0x40,0x64,0xe0]
1602@ CHECK: rsb	r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x64,0xe0]
1603@ CHECK: rsb	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x64,0xe0]
1604@ CHECK: rsbne	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x64,0x10]
1605@ CHECK: rsb	r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x64,0xe0]
1606@ CHECK: rsb	r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x64,0xe0]
1607@ CHECK: rsbgt	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x66,0xc0]
1608@ CHECK: rsb	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x66,0xe0]
1609@ CHECK: rsb	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x66,0xe0]
1610@ CHECK: rsb	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x66,0xe0]
1611@ CHECK: rsb	r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x64,0xe0]
1612
1613@------------------------------------------------------------------------------
1614@ RSC
1615@------------------------------------------------------------------------------
1616        rsc r4, r5, #0xf000
1617        rsc r4, r5, r6
1618        rsc r4, r5, r6, lsl #5
1619        rsclo r4, r5, r6, lsr #5
1620        rsc r4, r5, r6, lsr #5
1621        rsc r4, r5, r6, asr #5
1622        rsc r4, r5, r6, ror #5
1623        rsc r6, r7, r8, lsl r9
1624        rsc r6, r7, r8, lsr r9
1625        rsc r6, r7, r8, asr r9
1626        rscle r6, r7, r8, ror r9
1627        rscs r1, r8, #4064
1628
1629        @ destination register is optional
1630        rsc r5, #0xf000
1631        rsc r4, r5
1632        rsc r4, r5, lsl #5
1633        rsc r4, r5, lsr #5
1634        rscne r4, r5, lsr #5
1635        rsc r4, r5, asr #5
1636        rsc r4, r5, ror #5
1637        rscgt r6, r7, lsl r9
1638        rsc r6, r7, lsr r9
1639        rsc r6, r7, asr r9
1640        rsc r6, r7, ror r9
1641
1642@ CHECK: rsc	r4, r5, #61440          @ encoding: [0x0f,0x4a,0xe5,0xe2]
1643@ CHECK: rsc	r4, r5, r6              @ encoding: [0x06,0x40,0xe5,0xe0]
1644@ CHECK: rsc	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0xe5,0xe0]
1645@ CHECK: rsclo	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xe5,0x30]
1646@ CHECK: rsc	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xe5,0xe0]
1647@ CHECK: rsc	r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0xe5,0xe0]
1648@ CHECK: rsc	r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0xe5,0xe0]
1649@ CHECK: rsc	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0xe7,0xe0]
1650@ CHECK: rsc	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0xe7,0xe0]
1651@ CHECK: rsc	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0xe7,0xe0]
1652@ CHECK: rscle	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0xe7,0xd0]
1653@ CHECK: rscs	r1, r8, #4064           @ encoding: [0xfe,0x1e,0xf8,0xe2]
1654
1655@ CHECK: rsc	r5, r5, #61440          @ encoding: [0x0f,0x5a,0xe5,0xe2]
1656@ CHECK: rsc	r4, r4, r5              @ encoding: [0x05,0x40,0xe4,0xe0]
1657@ CHECK: rsc	r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0xe4,0xe0]
1658@ CHECK: rsc	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xe4,0xe0]
1659@ CHECK: rscne	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xe4,0x10]
1660@ CHECK: rsc	r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0xe4,0xe0]
1661@ CHECK: rsc	r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0xe4,0xe0]
1662@ CHECK: rscgt	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0xe6,0xc0]
1663@ CHECK: rsc	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0xe6,0xe0]
1664@ CHECK: rsc	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0xe6,0xe0]
1665@ CHECK: rsc	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xe6,0xe0]
1666
1667@------------------------------------------------------------------------------
1668@ RRX/RRXS
1669@------------------------------------------------------------------------------
1670
1671         rrx r0, r1
1672	 rrx sp, pc
1673	 rrx pc, lr
1674	 rrx lr, sp
1675
1676@ CHECK: rrx	r0, r1                  @ encoding: [0x61,0x00,0xa0,0xe1]
1677@ CHECK: rrx	sp, pc                  @ encoding: [0x6f,0xd0,0xa0,0xe1]
1678@ CHECK: rrx	pc, lr                  @ encoding: [0x6e,0xf0,0xa0,0xe1]
1679@ CHECK: rrx	lr, sp                  @ encoding: [0x6d,0xe0,0xa0,0xe1]
1680
1681         rrxs r0, r1
1682	 rrxs sp, pc
1683	 rrxs pc, lr
1684	 rrxs lr, sp
1685
1686@CHECK: rrxs	r0, r1                  @ encoding: [0x61,0x00,0xb0,0xe1]
1687@CHECK: rrxs	sp, pc                  @ encoding: [0x6f,0xd0,0xb0,0xe1]
1688@CHECK: rrxs	pc, lr                  @ encoding: [0x6e,0xf0,0xb0,0xe1]
1689@CHECK: rrxs	lr, sp                  @ encoding: [0x6d,0xe0,0xb0,0xe1]
1690
1691@ ------------------------------------------------------------------------------
1692@ SADD16/SADD8
1693@------------------------------------------------------------------------------
1694        sadd16 r1, r2, r3
1695        sadd16gt r1, r2, r3
1696        sadd8 r1, r2, r3
1697        sadd8le r1, r2, r3
1698
1699@ CHECK: sadd16	r1, r2, r3              @ encoding: [0x13,0x1f,0x12,0xe6]
1700@ CHECK: sadd16gt	r1, r2, r3      @ encoding: [0x13,0x1f,0x12,0xc6]
1701@ CHECK: sadd8	r1, r2, r3              @ encoding: [0x93,0x1f,0x12,0xe6]
1702@ CHECK: sadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x12,0xd6]
1703
1704
1705@------------------------------------------------------------------------------
1706@ SASX
1707@------------------------------------------------------------------------------
1708        sasx r9, r12, r0
1709        sasxeq r9, r12, r0
1710
1711@ CHECK: sasx	r9, r12, r0             @ encoding: [0x30,0x9f,0x1c,0xe6]
1712@ CHECK: sasxeq	r9, r12, r0             @ encoding: [0x30,0x9f,0x1c,0x06]
1713
1714
1715@------------------------------------------------------------------------------
1716@ SBC
1717@------------------------------------------------------------------------------
1718        sbc r4, r5, #0xf000
1719        sbc r4, r5, r6
1720        sbc r4, r5, r6, lsl #5
1721        sbc r4, r5, r6, lsr #5
1722        sbc r4, r5, r6, lsr #5
1723        sbc r4, r5, r6, asr #5
1724        sbc r4, r5, r6, ror #5
1725        sbc r6, r7, r8, lsl r9
1726        sbc r6, r7, r8, lsr r9
1727        sbc r6, r7, r8, asr r9
1728        sbc r6, r7, r8, ror r9
1729
1730        @ destination register is optional
1731        sbc r5, #0xf000
1732        sbc r4, r5
1733        sbc r4, r5, lsl #5
1734        sbc r4, r5, lsr #5
1735        sbc r4, r5, lsr #5
1736        sbc r4, r5, asr #5
1737        sbc r4, r5, ror #5
1738        sbc r6, r7, lsl r9
1739        sbc r6, r7, lsr r9
1740        sbc r6, r7, asr r9
1741        sbc r6, r7, ror r9
1742
1743@ CHECK: sbc	r4, r5, #61440          @ encoding: [0x0f,0x4a,0xc5,0xe2]
1744@ CHECK: sbc	r4, r5, r6              @ encoding: [0x06,0x40,0xc5,0xe0]
1745@ CHECK: sbc	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0xc5,0xe0]
1746@ CHECK: sbc	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xc5,0xe0]
1747@ CHECK: sbc	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xc5,0xe0]
1748@ CHECK: sbc	r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0xc5,0xe0]
1749@ CHECK: sbc	r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0xc5,0xe0]
1750@ CHECK: sbc	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0xc7,0xe0]
1751@ CHECK: sbc	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0xc7,0xe0]
1752@ CHECK: sbc	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0xc7,0xe0]
1753@ CHECK: sbc	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0xc7,0xe0]
1754
1755@ CHECK: sbc	r5, r5, #61440          @ encoding: [0x0f,0x5a,0xc5,0xe2]
1756@ CHECK: sbc	r4, r4, r5              @ encoding: [0x05,0x40,0xc4,0xe0]
1757@ CHECK: sbc	r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0xc4,0xe0]
1758@ CHECK: sbc	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xc4,0xe0]
1759@ CHECK: sbc	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xc4,0xe0]
1760@ CHECK: sbc	r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0xc4,0xe0]
1761@ CHECK: sbc	r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0xc4,0xe0]
1762@ CHECK: sbc	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0xc6,0xe0]
1763@ CHECK: sbc	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0xc6,0xe0]
1764@ CHECK: sbc	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0xc6,0xe0]
1765@ CHECK: sbc	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xc6,0xe0]
1766
1767
1768@------------------------------------------------------------------------------
1769@ SBFX
1770@------------------------------------------------------------------------------
1771        sbfx r4, r5, #16, #1
1772        sbfxgt r4, r5, #16, #16
1773
1774@ CHECK: sbfx	r4, r5, #16, #1         @ encoding: [0x55,0x48,0xa0,0xe7]
1775@ CHECK: sbfxgt	r4, r5, #16, #16        @ encoding: [0x55,0x48,0xaf,0xc7]
1776
1777
1778@------------------------------------------------------------------------------
1779@ SEL
1780@------------------------------------------------------------------------------
1781        sel r9, r2, r1
1782        selne r9, r2, r1
1783
1784@ CHECK: sel	r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0xe6]
1785@ CHECK: selne	r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0x16]
1786
1787
1788@------------------------------------------------------------------------------
1789@ SETEND
1790@------------------------------------------------------------------------------
1791        setend be
1792        setend BE
1793        setend le
1794        setend LE
1795
1796@ CHECK: setend	be                      @ encoding: [0x00,0x02,0x01,0xf1]
1797@ CHECK: setend	be                      @ encoding: [0x00,0x02,0x01,0xf1]
1798@ CHECK: setend	le                      @ encoding: [0x00,0x00,0x01,0xf1]
1799@ CHECK: setend	le                      @ encoding: [0x00,0x00,0x01,0xf1]
1800
1801
1802@------------------------------------------------------------------------------
1803@ SEV
1804@------------------------------------------------------------------------------
1805        sev
1806        seveq
1807
1808@ CHECK: sev                            @ encoding: [0x04,0xf0,0x20,0xe3]
1809@ CHECK: seveq                          @ encoding: [0x04,0xf0,0x20,0x03]
1810
1811
1812@------------------------------------------------------------------------------
1813@ SHADD16/SHADD8
1814@------------------------------------------------------------------------------
1815        shadd16 r4, r8, r2
1816        shadd16gt r4, r8, r2
1817        shadd8 r4, r8, r2
1818        shadd8gt r4, r8, r2
1819
1820@ CHECK: shadd16	r4, r8, r2      @ encoding: [0x12,0x4f,0x38,0xe6]
1821@ CHECK: shadd16gt	r4, r8, r2      @ encoding: [0x12,0x4f,0x38,0xc6]
1822@ CHECK: shadd8	r4, r8, r2              @ encoding: [0x92,0x4f,0x38,0xe6]
1823@ CHECK: shadd8gt	r4, r8, r2      @ encoding: [0x92,0x4f,0x38,0xc6]
1824
1825
1826@------------------------------------------------------------------------------
1827@ SHASX
1828@------------------------------------------------------------------------------
1829        shasx r4, r8, r2
1830        shasxgt r4, r8, r2
1831
1832@ CHECK: shasx	r4, r8, r2              @ encoding: [0x32,0x4f,0x38,0xe6]
1833@ CHECK: shasxgt r4, r8, r2             @ encoding: [0x32,0x4f,0x38,0xc6]
1834
1835
1836@------------------------------------------------------------------------------
1837@ SHSUB16/SHSUB8
1838@------------------------------------------------------------------------------
1839        shsub16 r4, r8, r2
1840        shsub16gt r4, r8, r2
1841        shsub8 r4, r8, r2
1842        shsub8gt r4, r8, r2
1843
1844@ CHECK: shsub16	r4, r8, r2      @ encoding: [0x72,0x4f,0x38,0xe6]
1845@ CHECK: shsub16gt	r4, r8, r2      @ encoding: [0x72,0x4f,0x38,0xc6]
1846@ CHECK: shsub8	r4, r8, r2              @ encoding: [0xf2,0x4f,0x38,0xe6]
1847@ CHECK: shsub8gt	r4, r8, r2      @ encoding: [0xf2,0x4f,0x38,0xc6]
1848
1849@------------------------------------------------------------------------------
1850@ SMLABB/SMLABT/SMLATB/SMLATT
1851@------------------------------------------------------------------------------
1852        smlabb r3, r1, r9, r0
1853        smlabt r5, r6, r4, r1
1854        smlatb r4, r2, r3, r2
1855        smlatt r8, r3, r8, r4
1856        smlabbge r3, r1, r9, r0
1857        smlabtle r5, r6, r4, r1
1858        smlatbne r4, r2, r3, r2
1859        smlatteq r8, r3, r8, r4
1860
1861@ CHECK: smlabb	r3, r1, r9, r0          @ encoding: [0x81,0x09,0x03,0xe1]
1862@ CHECK: smlabt	r5, r6, r4, r1          @ encoding: [0xc6,0x14,0x05,0xe1]
1863@ CHECK: smlatb	r4, r2, r3, r2          @ encoding: [0xa2,0x23,0x04,0xe1]
1864@ CHECK: smlatt	r8, r3, r8, r4          @ encoding: [0xe3,0x48,0x08,0xe1]
1865@ CHECK: smlabbge	r3, r1, r9, r0  @ encoding: [0x81,0x09,0x03,0xa1]
1866@ CHECK: smlabtle	r5, r6, r4, r1  @ encoding: [0xc6,0x14,0x05,0xd1]
1867@ CHECK: smlatbne	r4, r2, r3, r2  @ encoding: [0xa2,0x23,0x04,0x11]
1868@ CHECK: smlatteq	r8, r3, r8, r4  @ encoding: [0xe3,0x48,0x08,0x01]
1869
1870@------------------------------------------------------------------------------
1871@ SMLAD/SMLADX
1872@------------------------------------------------------------------------------
1873        smlad r2, r3, r5, r8
1874        smladx r2, r3, r5, r8
1875        smladeq r2, r3, r5, r8
1876        smladxhi r2, r3, r5, r8
1877
1878@ CHECK: smlad	r2, r3, r5, r8          @ encoding: [0x13,0x85,0x02,0xe7]
1879@ CHECK: smladx	r2, r3, r5, r8          @ encoding: [0x33,0x85,0x02,0xe7]
1880@ CHECK: smladeq	r2, r3, r5, r8  @ encoding: [0x13,0x85,0x02,0x07]
1881@ CHECK: smladxhi	r2, r3, r5, r8  @ encoding: [0x33,0x85,0x02,0x87]
1882
1883
1884@------------------------------------------------------------------------------
1885@ SMLAL
1886@------------------------------------------------------------------------------
1887        smlal r2, r3, r5, r8
1888        smlals r2, r3, r5, r8
1889        smlaleq r2, r3, r5, r8
1890        smlalshi r2, r3, r5, r8
1891
1892@ CHECK: smlal	r2, r3, r5, r8          @ encoding: [0x95,0x28,0xe3,0xe0]
1893@ CHECK: smlals	r2, r3, r5, r8          @ encoding: [0x95,0x28,0xf3,0xe0]
1894@ CHECK: smlaleq	r2, r3, r5, r8  @ encoding: [0x95,0x28,0xe3,0x00]
1895@ CHECK: smlalshi	r2, r3, r5, r8  @ encoding: [0x95,0x28,0xf3,0x80]
1896
1897
1898@------------------------------------------------------------------------------
1899@ SMLALBB/SMLALBT/SMLALTB/SMLALTT
1900@------------------------------------------------------------------------------
1901        smlalbb r3, r1, r9, r0
1902        smlalbt r5, r6, r4, r1
1903        smlaltb r4, r2, r3, r2
1904        smlaltt r8, r3, r8, r4
1905        smlalbbge r3, r1, r9, r0
1906        smlalbtle r5, r6, r4, r1
1907        smlaltbne r4, r2, r3, r2
1908        smlaltteq r8, r3, r8, r4
1909
1910@ CHECK: smlalbb	r3, r1, r9, r0  @ encoding: [0x89,0x30,0x41,0xe1]
1911@ CHECK: smlalbt	r5, r6, r4, r1  @ encoding: [0xc4,0x51,0x46,0xe1]
1912@ CHECK: smlaltb	r4, r2, r3, r2  @ encoding: [0xa3,0x42,0x42,0xe1]
1913@ CHECK: smlaltt	r8, r3, r8, r4  @ encoding: [0xe8,0x84,0x43,0xe1]
1914@ CHECK: smlalbbge	r3, r1, r9, r0  @ encoding: [0x89,0x30,0x41,0xa1]
1915@ CHECK: smlalbtle	r5, r6, r4, r1  @ encoding: [0xc4,0x51,0x46,0xd1]
1916@ CHECK: smlaltbne	r4, r2, r3, r2  @ encoding: [0xa3,0x42,0x42,0x11]
1917@ CHECK: smlaltteq	r8, r3, r8, r4  @ encoding: [0xe8,0x84,0x43,0x01]
1918
1919
1920@------------------------------------------------------------------------------
1921@ SMLALD/SMLALDX
1922@------------------------------------------------------------------------------
1923        smlald r2, r3, r5, r8
1924        smlaldx r2, r3, r5, r8
1925        smlaldeq r2, r3, r5, r8
1926        smlaldxhi r2, r3, r5, r8
1927
1928@ CHECK: smlald	r2, r3, r5, r8          @ encoding: [0x15,0x28,0x43,0xe7]
1929@ CHECK: smlaldx	r2, r3, r5, r8  @ encoding: [0x35,0x28,0x43,0xe7]
1930@ CHECK: smlaldeq	r2, r3, r5, r8  @ encoding: [0x15,0x28,0x43,0x07]
1931@ CHECK: smlaldxhi	r2, r3, r5, r8  @ encoding: [0x35,0x28,0x43,0x87]
1932
1933
1934@------------------------------------------------------------------------------
1935@ SMLAWB/SMLAWT
1936@------------------------------------------------------------------------------
1937        smlawb r2, r3, r10, r8
1938        smlawt r8, r3, r5, r9
1939        smlawbeq r2, r7, r5, r8
1940        smlawthi r1, r3, r0, r8
1941
1942@ CHECK: smlawb	r2, r3, r10, r8         @ encoding: [0x83,0x8a,0x22,0xe1]
1943@ CHECK: smlawt	r8, r3, r5, r9          @ encoding: [0xc3,0x95,0x28,0xe1]
1944@ CHECK: smlawbeq	r2, r7, r5, r8  @ encoding: [0x87,0x85,0x22,0x01]
1945@ CHECK: smlawthi	r1, r3, r0, r8  @ encoding: [0xc3,0x80,0x21,0x81]
1946
1947
1948@------------------------------------------------------------------------------
1949@ SMLSD/SMLSDX
1950@------------------------------------------------------------------------------
1951        smlsd r2, r3, r5, r8
1952        smlsdx r2, r3, r5, r8
1953        smlsdeq r2, r3, r5, r8
1954        smlsdxhi r2, r3, r5, r8
1955
1956@ CHECK: smlsd	r2, r3, r5, r8          @ encoding: [0x53,0x85,0x02,0xe7]
1957@ CHECK: smlsdx	r2, r3, r5, r8          @ encoding: [0x73,0x85,0x02,0xe7]
1958@ CHECK: smlsdeq	r2, r3, r5, r8  @ encoding: [0x53,0x85,0x02,0x07]
1959@ CHECK: smlsdxhi	r2, r3, r5, r8  @ encoding: [0x73,0x85,0x02,0x87]
1960
1961
1962@------------------------------------------------------------------------------
1963@ SMLSLD/SMLSLDX
1964@------------------------------------------------------------------------------
1965        smlsld r2, r9, r5, r1
1966        smlsldx r4, r11, r2, r8
1967        smlsldeq r8, r2, r5, r6
1968        smlsldxhi r1, r0, r3, r8
1969
1970@ CHECK: smlsld	r2, r9, r5, r1          @ encoding: [0x55,0x21,0x49,0xe7]
1971@ CHECK: smlsldx	r4, r11, r2, r8 @ encoding: [0x72,0x48,0x4b,0xe7]
1972@ CHECK: smlsldeq	r8, r2, r5, r6  @ encoding: [0x55,0x86,0x42,0x07]
1973@ CHECK: smlsldxhi	r1, r0, r3, r8  @ encoding: [0x73,0x18,0x40,0x87]
1974
1975
1976@------------------------------------------------------------------------------
1977@ SMMLA/SMMLAR
1978@------------------------------------------------------------------------------
1979        smmla r1, r2, r3, r4
1980        smmlar r4, r3, r2, r1
1981        smmlalo r1, r2, r3, r4
1982        smmlarcs r4, r3, r2, r1
1983
1984@ CHECK: smmla	r1, r2, r3, r4          @ encoding: [0x12,0x43,0x51,0xe7]
1985@ CHECK: smmlar	r4, r3, r2, r1          @ encoding: [0x33,0x12,0x54,0xe7]
1986@ CHECK: smmlalo	r1, r2, r3, r4  @ encoding: [0x12,0x43,0x51,0x37]
1987@ CHECK: smmlarhs	r4, r3, r2, r1  @ encoding: [0x33,0x12,0x54,0x27]
1988
1989
1990@------------------------------------------------------------------------------
1991@ SMMLS/SMMLSR
1992@------------------------------------------------------------------------------
1993        smmls r1, r2, r3, r4
1994        smmlsr r4, r3, r2, r1
1995        smmlslo r1, r2, r3, r4
1996        smmlsrcs r4, r3, r2, r1
1997
1998@ CHECK: smmls	r1, r2, r3, r4          @ encoding: [0xd2,0x43,0x51,0xe7]
1999@ CHECK: smmlsr	r4, r3, r2, r1          @ encoding: [0xf3,0x12,0x54,0xe7]
2000@ CHECK: smmlslo	r1, r2, r3, r4  @ encoding: [0xd2,0x43,0x51,0x37]
2001@ CHECK: smmlsrhs	r4, r3, r2, r1  @ encoding: [0xf3,0x12,0x54,0x27]
2002
2003
2004@------------------------------------------------------------------------------
2005@ SMMUL/SMMULR
2006@------------------------------------------------------------------------------
2007        smmul r2, r3, r4
2008        smmulr r3, r2, r1
2009        smmulcc r2, r3, r4
2010        smmulrhs r3, r2, r1
2011
2012@ CHECK: smmul	r2, r3, r4              @ encoding: [0x13,0xf4,0x52,0xe7]
2013@ CHECK: smmulr	r3, r2, r1              @ encoding: [0x32,0xf1,0x53,0xe7]
2014@ CHECK: smmullo	r2, r3, r4      @ encoding: [0x13,0xf4,0x52,0x37]
2015@ CHECK: smmulrhs	r3, r2, r1      @ encoding: [0x32,0xf1,0x53,0x27]
2016
2017
2018@------------------------------------------------------------------------------
2019@ SMUAD/SMUADX
2020@------------------------------------------------------------------------------
2021        smuad r2, r3, r4
2022        smuadx r3, r2, r1
2023        smuadlt r2, r3, r4
2024        smuadxge r3, r2, r1
2025
2026@ CHECK: smuad	r2, r3, r4              @ encoding: [0x13,0xf4,0x02,0xe7]
2027@ CHECK: smuadx	r3, r2, r1              @ encoding: [0x32,0xf1,0x03,0xe7]
2028@ CHECK: smuadlt	r2, r3, r4      @ encoding: [0x13,0xf4,0x02,0xb7]
2029@ CHECK: smuadxge	r3, r2, r1      @ encoding: [0x32,0xf1,0x03,0xa7]
2030
2031
2032@------------------------------------------------------------------------------
2033@ SMULBB/SMULBT/SMULTB/SMULTT
2034@------------------------------------------------------------------------------
2035        smulbb r3, r9, r0
2036        smulbt r5, r4, r1
2037        smultb r4, r2, r2
2038        smultt r8, r3, r4
2039        smulbbge r1, r9, r0
2040        smulbtle r5, r6, r4
2041        smultbne r2, r3, r2
2042        smultteq r8, r3, r4
2043
2044@ CHECK: smulbb	r3, r9, r0              @ encoding: [0x89,0x00,0x63,0xe1]
2045@ CHECK: smulbt	r5, r4, r1              @ encoding: [0xc4,0x01,0x65,0xe1]
2046@ CHECK: smultb	r4, r2, r2              @ encoding: [0xa2,0x02,0x64,0xe1]
2047@ CHECK: smultt	r8, r3, r4              @ encoding: [0xe3,0x04,0x68,0xe1]
2048@ CHECK: smulbbge	r1, r9, r0      @ encoding: [0x89,0x00,0x61,0xa1]
2049@ CHECK: smulbtle	r5, r6, r4      @ encoding: [0xc6,0x04,0x65,0xd1]
2050@ CHECK: smultbne	r2, r3, r2      @ encoding: [0xa3,0x02,0x62,0x11]
2051@ CHECK: smultteq	r8, r3, r4      @ encoding: [0xe3,0x04,0x68,0x01]
2052
2053
2054@------------------------------------------------------------------------------
2055@ SMULL
2056@------------------------------------------------------------------------------
2057        smull r3, r9, r0, r1
2058        smulls r3, r9, r0, r2
2059        smulleq r8, r3, r4, r5
2060        smullseq r8, r3, r4, r3
2061
2062@ CHECK: smull	r3, r9, r0, r1          @ encoding: [0x90,0x31,0xc9,0xe0]
2063@ CHECK: smulls	r3, r9, r0, r2          @ encoding: [0x90,0x32,0xd9,0xe0]
2064@ CHECK: smulleq	r8, r3, r4, r5  @ encoding: [0x94,0x85,0xc3,0x00]
2065@ CHECK: smullseq	r8, r3, r4, r3  @ encoding: [0x94,0x83,0xd3,0x00]
2066
2067
2068@------------------------------------------------------------------------------
2069@ SMULWB/SMULWT
2070@------------------------------------------------------------------------------
2071        smulwb r3, r9, r0
2072        smulwt r3, r9, r2
2073
2074@ CHECK: smulwb	r3, r9, r0              @ encoding: [0xa9,0x00,0x23,0xe1]
2075@ CHECK: smulwt	r3, r9, r2              @ encoding: [0xe9,0x02,0x23,0xe1]
2076
2077
2078@------------------------------------------------------------------------------
2079@ SMUSD/SMUSDX
2080@------------------------------------------------------------------------------
2081        smusd r3, r0, r1
2082        smusdx r3, r9, r2
2083        smusdeq r8, r3, r2
2084        smusdxne r7, r4, r3
2085
2086@ CHECK: smusd	r3, r0, r1              @ encoding: [0x50,0xf1,0x03,0xe7]
2087@ CHECK: smusdx	r3, r9, r2              @ encoding: [0x79,0xf2,0x03,0xe7]
2088@ CHECK: smusdeq	r8, r3, r2      @ encoding: [0x53,0xf2,0x08,0x07]
2089@ CHECK: smusdxne	r7, r4, r3      @ encoding: [0x74,0xf3,0x07,0x17]
2090
2091
2092@------------------------------------------------------------------------------
2093@ SRS
2094@------------------------------------------------------------------------------
2095        srsda sp, #5
2096        srsdb sp, #1
2097        srsia sp, #0
2098        srsib sp, #15
2099
2100        srsda sp!, #31
2101        srsdb sp!, #19
2102        srsia sp!, #2
2103        srsib sp!, #14
2104
2105        srsfa sp, #11
2106        srsea sp, #10
2107        srsfd sp, #9
2108        srsed sp, #5
2109
2110        srsfa sp!, #5
2111        srsea sp!, #5
2112        srsfd sp!, #5
2113        srsed sp!, #5
2114
2115        srs sp, #5
2116        srs sp!, #5
2117
2118@ CHECK: srsda	sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
2119@ CHECK: srsdb	sp, #1                  @ encoding: [0x01,0x05,0x4d,0xf9]
2120@ CHECK: srsia	sp, #0                  @ encoding: [0x00,0x05,0xcd,0xf8]
2121@ CHECK: srsib	sp, #15                 @ encoding: [0x0f,0x05,0xcd,0xf9]
2122
2123@ CHECK: srsda	sp!, #31                @ encoding: [0x1f,0x05,0x6d,0xf8]
2124@ CHECK: srsdb	sp!, #19                @ encoding: [0x13,0x05,0x6d,0xf9]
2125@ CHECK: srsia	sp!, #2                 @ encoding: [0x02,0x05,0xed,0xf8]
2126@ CHECK: srsib	sp!, #14                @ encoding: [0x0e,0x05,0xed,0xf9]
2127
2128@ CHECK: srsib	sp, #11                 @ encoding: [0x0b,0x05,0xcd,0xf9]
2129@ CHECK: srsia	sp, #10                 @ encoding: [0x0a,0x05,0xcd,0xf8]
2130@ CHECK: srsdb	sp, #9                  @ encoding: [0x09,0x05,0x4d,0xf9]
2131@ CHECK: srsda	sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
2132
2133@ CHECK: srsib	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf9]
2134@ CHECK: srsia	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
2135@ CHECK: srsdb	sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf9]
2136@ CHECK: srsda	sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf8]
2137
2138@ CHECK: srsia	sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf8]
2139@ CHECK: srsia	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
2140
2141@ Compatibility aliases.
2142        srsda #5
2143        srsdb #1
2144        srsia #0
2145        srsib #15
2146
2147        srsda #31!
2148        srsdb #19!
2149        srsia #2!
2150        srsib #14!
2151
2152        srsfa #11
2153        srsea #10
2154        srsfd #9
2155        srsed #5
2156
2157        srsfa #5!
2158        srsea #5!
2159        srsfd #5!
2160        srsed #5!
2161
2162        srs #5
2163        srs #5!
2164
2165@ CHECK: srsda	sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
2166@ CHECK: srsdb	sp, #1                  @ encoding: [0x01,0x05,0x4d,0xf9]
2167@ CHECK: srsia	sp, #0                  @ encoding: [0x00,0x05,0xcd,0xf8]
2168@ CHECK: srsib	sp, #15                 @ encoding: [0x0f,0x05,0xcd,0xf9]
2169@ CHECK: srsda	sp!, #31                @ encoding: [0x1f,0x05,0x6d,0xf8]
2170@ CHECK: srsdb	sp!, #19                @ encoding: [0x13,0x05,0x6d,0xf9]
2171@ CHECK: srsia	sp!, #2                 @ encoding: [0x02,0x05,0xed,0xf8]
2172@ CHECK: srsib	sp!, #14                @ encoding: [0x0e,0x05,0xed,0xf9]
2173@ CHECK: srsib	sp, #11                 @ encoding: [0x0b,0x05,0xcd,0xf9]
2174@ CHECK: srsia	sp, #10                 @ encoding: [0x0a,0x05,0xcd,0xf8]
2175@ CHECK: srsdb	sp, #9                  @ encoding: [0x09,0x05,0x4d,0xf9]
2176@ CHECK: srsda	sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
2177@ CHECK: srsib	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf9]
2178@ CHECK: srsia	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
2179@ CHECK: srsdb	sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf9]
2180@ CHECK: srsda	sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf8]
2181@ CHECK: srsia	sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf8]
2182@ CHECK: srsia	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
2183
2184
2185@------------------------------------------------------------------------------
2186@ SSAT
2187@------------------------------------------------------------------------------
2188        ssat	r8, #1, r10
2189        ssat	r8, #1, r10, lsl #0
2190        ssat	r8, #1, r10, lsl #31
2191        ssat	r8, #1, r10, asr #32
2192        ssat	r8, #1, r10, asr #1
2193
2194@ CHECK: ssat	r8, #1, r10             @ encoding: [0x1a,0x80,0xa0,0xe6]
2195@ CHECK: ssat	r8, #1, r10             @ encoding: [0x1a,0x80,0xa0,0xe6]
2196@ CHECK: ssat	r8, #1, r10, lsl #31    @ encoding: [0x9a,0x8f,0xa0,0xe6]
2197@ CHECK: ssat	r8, #1, r10, asr #32    @ encoding: [0x5a,0x80,0xa0,0xe6]
2198@ CHECK: ssat	r8, #1, r10, asr #1     @ encoding: [0xda,0x80,0xa0,0xe6]
2199
2200
2201@------------------------------------------------------------------------------
2202@ SSAT16
2203@------------------------------------------------------------------------------
2204        ssat16	r2, #1, r7
2205        ssat16	r3, #16, r5
2206
2207@ CHECK: ssat16	r2, #1, r7              @ encoding: [0x37,0x2f,0xa0,0xe6]
2208@ CHECK: ssat16	r3, #16, r5             @ encoding: [0x35,0x3f,0xaf,0xe6]
2209
2210
2211@------------------------------------------------------------------------------
2212@ SSAX
2213@------------------------------------------------------------------------------
2214        ssax r2, r3, r4
2215        ssaxlt r2, r3, r4
2216
2217@ CHECK: ssax	r2, r3, r4              @ encoding: [0x54,0x2f,0x13,0xe6]
2218@ CHECK: ssaxlt	r2, r3, r4              @ encoding: [0x54,0x2f,0x13,0xb6]
2219
2220@------------------------------------------------------------------------------
2221@ SSUB16/SSUB8
2222@------------------------------------------------------------------------------
2223        ssub16 r1, r0, r6
2224        ssub16ne r5, r3, r2
2225        ssub8 r9, r2, r4
2226        ssub8eq r5, r1, r2
2227
2228@ CHECK: ssub16	r1, r0, r6              @ encoding: [0x76,0x1f,0x10,0xe6]
2229@ CHECK: ssub16ne	r5, r3, r2      @ encoding: [0x72,0x5f,0x13,0x16]
2230@ CHECK: ssub8	r9, r2, r4              @ encoding: [0xf4,0x9f,0x12,0xe6]
2231@ CHECK: ssub8eq	r5, r1, r2      @ encoding: [0xf2,0x5f,0x11,0x06]
2232
2233@------------------------------------------------------------------------------
2234@ STC{L}/STC2{L}
2235@------------------------------------------------------------------------------
2236        stc2 p0, c8, [r1, #4]
2237        stc2 p1, c7, [r2]
2238        stc2 p2, c6, [r3, #-224]
2239        stc2 p3, c5, [r4, #-120]!
2240        stc2 p4, c4, [r5], #16
2241        stc2 p5, c3, [r6], #-72
2242        stc2l p6, c2, [r7, #4]
2243        stc2l p7, c1, [r8]
2244        stc2l p8, c0, [r9, #-224]
2245        stc2l p9, c1, [r10, #-120]!
2246        stc2l p10, c2, [r11], #16
2247        stc2l p11, c3, [r12], #-72
2248
2249        stc p12, c4, [r0, #4]
2250        stc p13, c5, [r1]
2251        stc p14, c6, [r2, #-224]
2252        stc p15, c7, [r3, #-120]!
2253        stc p5, c8, [r4], #16
2254        stc p4, c9, [r5], #-72
2255        stcl p3, c10, [r6, #4]
2256        stcl p2, c11, [r7]
2257        stcl p1, c12, [r8, #-224]
2258        stcl p0, c13, [r9, #-120]!
2259        stcl p6, c14, [r10], #16
2260        stcl p7, c15, [r11], #-72
2261
2262        stclo p12, c4, [r0, #4]
2263        stchi p13, c5, [r1]
2264        stccs p14, c6, [r2, #-224]
2265        stccc p15, c7, [r3, #-120]!
2266        stceq p5, c8, [r4], #16
2267        stcgt p4, c9, [r5], #-72
2268        stcllt p3, c10, [r6, #4]
2269        stclge p2, c11, [r7]
2270        stclle p1, c12, [r8, #-224]
2271        stclne p0, c13, [r9, #-120]!
2272        stcleq p6, c14, [r10], #16
2273        stclhi p7, c15, [r11], #-72
2274
2275        stc2 p2, c8, [r1], { 25 }
2276
2277@ CHECK: stc2	p0, c8, [r1, #4]        @ encoding: [0x01,0x80,0x81,0xfd]
2278@ CHECK: stc2	p1, c7, [r2]            @ encoding: [0x00,0x71,0x82,0xfd]
2279@ CHECK: stc2	p2, c6, [r3, #-224]     @ encoding: [0x38,0x62,0x03,0xfd]
2280@ CHECK: stc2	p3, c5, [r4, #-120]!    @ encoding: [0x1e,0x53,0x24,0xfd]
2281@ CHECK: stc2	p4, c4, [r5], #16       @ encoding: [0x04,0x44,0xa5,0xfc]
2282@ CHECK: stc2	p5, c3, [r6], #-72      @ encoding: [0x12,0x35,0x26,0xfc]
2283@ CHECK: stc2l	p6, c2, [r7, #4]        @ encoding: [0x01,0x26,0xc7,0xfd]
2284@ CHECK: stc2l	p7, c1, [r8]            @ encoding: [0x00,0x17,0xc8,0xfd]
2285@ CHECK: stc2l	p8, c0, [r9, #-224]     @ encoding: [0x38,0x08,0x49,0xfd]
2286@ CHECK: stc2l	p9, c1, [r10, #-120]!   @ encoding: [0x1e,0x19,0x6a,0xfd]
2287@ CHECK: stc2l	p10, c2, [r11], #16     @ encoding: [0x04,0x2a,0xeb,0xfc]
2288@ CHECK: stc2l	p11, c3, [r12], #-72    @ encoding: [0x12,0x3b,0x6c,0xfc]
2289
2290@ CHECK: stc	p12, c4, [r0, #4]       @ encoding: [0x01,0x4c,0x80,0xed]
2291@ CHECK: stc	p13, c5, [r1]           @ encoding: [0x00,0x5d,0x81,0xed]
2292@ CHECK: stc	p14, c6, [r2, #-224]    @ encoding: [0x38,0x6e,0x02,0xed]
2293@ CHECK: stc	p15, c7, [r3, #-120]!   @ encoding: [0x1e,0x7f,0x23,0xed]
2294@ CHECK: stc	p5, c8, [r4], #16       @ encoding: [0x04,0x85,0xa4,0xec]
2295@ CHECK: stc	p4, c9, [r5], #-72      @ encoding: [0x12,0x94,0x25,0xec]
2296@ CHECK: stcl	p3, c10, [r6, #4]       @ encoding: [0x01,0xa3,0xc6,0xed]
2297@ CHECK: stcl	p2, c11, [r7]           @ encoding: [0x00,0xb2,0xc7,0xed]
2298@ CHECK: stcl	p1, c12, [r8, #-224]    @ encoding: [0x38,0xc1,0x48,0xed]
2299@ CHECK: stcl	p0, c13, [r9, #-120]!   @ encoding: [0x1e,0xd0,0x69,0xed]
2300@ CHECK: stcl	p6, c14, [r10], #16     @ encoding: [0x04,0xe6,0xea,0xec]
2301@ CHECK: stcl	p7, c15, [r11], #-72    @ encoding: [0x12,0xf7,0x6b,0xec]
2302
2303@ CHECK: stclo	p12, c4, [r0, #4]       @ encoding: [0x01,0x4c,0x80,0x3d]
2304@ CHECK: stchi	p13, c5, [r1]           @ encoding: [0x00,0x5d,0x81,0x8d]
2305@ CHECK: stchs	p14, c6, [r2, #-224]    @ encoding: [0x38,0x6e,0x02,0x2d]
2306@ CHECK: stclo	p15, c7, [r3, #-120]!   @ encoding: [0x1e,0x7f,0x23,0x3d]
2307@ CHECK: stceq	p5, c8, [r4], #16       @ encoding: [0x04,0x85,0xa4,0x0c]
2308@ CHECK: stcgt	p4, c9, [r5], #-72      @ encoding: [0x12,0x94,0x25,0xcc]
2309@ CHECK: stcllt	p3, c10, [r6, #4]       @ encoding: [0x01,0xa3,0xc6,0xbd]
2310@ CHECK: stclge	p2, c11, [r7]           @ encoding: [0x00,0xb2,0xc7,0xad]
2311@ CHECK: stclle	p1, c12, [r8, #-224]    @ encoding: [0x38,0xc1,0x48,0xdd]
2312@ CHECK: stclne	p0, c13, [r9, #-120]!   @ encoding: [0x1e,0xd0,0x69,0x1d]
2313@ CHECK: stcleq	p6, c14, [r10], #16     @ encoding: [0x04,0xe6,0xea,0x0c]
2314@ CHECK: stclhi	p7, c15, [r11], #-72    @ encoding: [0x12,0xf7,0x6b,0x8c]
2315
2316@ CHECK: stc2	p2, c8, [r1], {25}      @ encoding: [0x19,0x82,0x81,0xfc]
2317
2318
2319@------------------------------------------------------------------------------
2320@ STM*
2321@------------------------------------------------------------------------------
2322        stm       r2, {r1,r3-r6,sp}
2323        stmia     r3, {r1,r3-r6,lr}
2324        stmib     r4, {r1,r3-r6,sp}
2325        stmda     r5, {r1,r3-r6,sp}
2326        stmdb     r6, {r1,r3-r6,r8}
2327        stmfd     sp, {r1,r3-r6,sp}
2328
2329        @ with update
2330        stm       r8!, {r1,r3-r6,sp}
2331        stmib     r9!, {r1,r3-r6,sp}
2332        stmda     sp!, {r1,r3-r6}
2333        stmdb     r0!, {r1,r5,r7,sp}
2334
2335@ CHECK: stm	r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x82,0xe8]
2336@ CHECK: stm	r3, {r1, r3, r4, r5, r6, lr} @ encoding: [0x7a,0x40,0x83,0xe8]
2337@ CHECK: stmib	r4, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x84,0xe9]
2338@ CHECK: stmda	r5, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x05,0xe8]
2339@ CHECK: stmdb	r6, {r1, r3, r4, r5, r6, r8} @ encoding: [0x7a,0x01,0x06,0xe9]
2340@ CHECK: stmdb	sp, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x0d,0xe9]
2341
2342@ CHECK: stm	r8!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa8,0xe8]
2343@ CHECK: stmib	r9!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa9,0xe9]
2344@ CHECK: stmda	sp!, {r1, r3, r4, r5, r6}     @ encoding: [0x7a,0x00,0x2d,0xe8]
2345@ CHECK: stmdb	r0!, {r1, r5, r7, sp}         @ encoding: [0xa2,0x20,0x20,0xe9]
2346
2347
2348@------------------------------------------------------------------------------
2349@ STREX/STREXB/STREXH/STREXD
2350@------------------------------------------------------------------------------
2351        strexb  r1, r3, [r4]
2352        strexh  r4, r2, [r5]
2353        strex  r2, r1, [r7]
2354        strexd  r6, r2, r3, [r8]
2355
2356@ CHECK: strexb	r1, r3, [r4]            @ encoding: [0x93,0x1f,0xc4,0xe1]
2357@ CHECK: strexh	r4, r2, [r5]            @ encoding: [0x92,0x4f,0xe5,0xe1]
2358@ CHECK: strex	r2, r1, [r7]            @ encoding: [0x91,0x2f,0x87,0xe1]
2359@ CHECK: strexd	r6, r2, r3, [r8]        @ encoding: [0x92,0x6f,0xa8,0xe1]
2360
2361@------------------------------------------------------------------------------
2362@ STR
2363@------------------------------------------------------------------------------
2364        strpl	r3, [r10, #-0]!
2365        strpl	r3, [r10, #0]!
2366
2367@ CHECK: strpl	r3, [r10, #-0]!         @ encoding: [0x00,0x30,0x2a,0x55]
2368@ CHECK: strpl	r3, [r10, #0]!          @ encoding: [0x00,0x30,0xaa,0x55]
2369
2370@------------------------------------------------------------------------------
2371@ SUB
2372@------------------------------------------------------------------------------
2373        sub r4, r5, #0xf000
2374        sub r4, r5, r6
2375        sub r4, r5, r6, lsl #5
2376        sub r4, r5, r6, lsr #5
2377        sub r4, r5, r6, lsr #5
2378        sub r4, r5, r6, asr #5
2379        sub r4, r5, r6, ror #5
2380        sub r6, r7, r8, lsl r9
2381        sub r6, r7, r8, lsr r9
2382        sub r6, r7, r8, asr r9
2383        sub r6, r7, r8, ror r9
2384
2385        @ destination register is optional
2386        sub r5, #0xf000
2387        sub r4, r5
2388        sub r4, r5, lsl #5
2389        sub r4, r5, lsr #5
2390        sub r4, r5, lsr #5
2391        sub r4, r5, asr #5
2392        sub r4, r5, ror #5
2393        sub r6, r7, lsl r9
2394        sub r6, r7, lsr r9
2395        sub r6, r7, asr r9
2396        sub r6, r7, ror r9
2397
2398@ CHECK: sub	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x45,0xe2]
2399@ CHECK: sub	r4, r5, r6              @ encoding: [0x06,0x40,0x45,0xe0]
2400@ CHECK: sub	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x45,0xe0]
2401@ CHECK: sub	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x45,0xe0]
2402@ CHECK: sub	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x45,0xe0]
2403@ CHECK: sub	r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x45,0xe0]
2404@ CHECK: sub	r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x45,0xe0]
2405@ CHECK: sub	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x47,0xe0]
2406@ CHECK: sub	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x47,0xe0]
2407@ CHECK: sub	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x47,0xe0]
2408@ CHECK: sub	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x47,0xe0]
2409
2410
2411@ CHECK: sub	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x45,0xe2]
2412@ CHECK: sub	r4, r4, r5              @ encoding: [0x05,0x40,0x44,0xe0]
2413@ CHECK: sub	r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x44,0xe0]
2414@ CHECK: sub	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x44,0xe0]
2415@ CHECK: sub	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x44,0xe0]
2416@ CHECK: sub	r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x44,0xe0]
2417@ CHECK: sub	r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x44,0xe0]
2418@ CHECK: sub	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x46,0xe0]
2419@ CHECK: sub	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x46,0xe0]
2420@ CHECK: sub	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x46,0xe0]
2421@ CHECK: sub	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x46,0xe0]
2422
2423    @ Test right shift by 32, which is encoded as 0
2424    sub r3, r1, r2, lsr #32
2425    sub r3, r1, r2, asr #32
2426@ CHECK: sub	r3, r1, r2, lsr #32     @ encoding: [0x22,0x30,0x41,0xe0]
2427@ CHECK: sub	r3, r1, r2, asr #32     @ encoding: [0x42,0x30,0x41,0xe0]
2428
2429@------------------------------------------------------------------------------
2430@ SVC
2431@------------------------------------------------------------------------------
2432        svc #16
2433        svc #0
2434        svc #0xffffff
2435
2436@ CHECK: svc	#16                     @ encoding: [0x10,0x00,0x00,0xef]
2437@ CHECK: svc	#0                      @ encoding: [0x00,0x00,0x00,0xef]
2438@ CHECK: svc	#16777215               @ encoding: [0xff,0xff,0xff,0xef]
2439
2440
2441@------------------------------------------------------------------------------
2442@ SWP/SWPB
2443@------------------------------------------------------------------------------
2444        swp r1, r2, [r3]
2445        swp r4, r4, [r6]
2446        swpb r5, r1, [r9]
2447
2448@ CHECK: swp	r1, r2, [r3]            @ encoding: [0x92,0x10,0x03,0xe1]
2449@ CHECK: swp	r4, r4, [r6]            @ encoding: [0x94,0x40,0x06,0xe1]
2450@ CHECK: swpb	r5, r1, [r9]            @ encoding: [0x91,0x50,0x49,0xe1]
2451
2452
2453@------------------------------------------------------------------------------
2454@ SXTAB
2455@------------------------------------------------------------------------------
2456        sxtab r2, r3, r4
2457        sxtab r4, r5, r6, ror #0
2458        sxtablt r6, r2, r9, ror #8
2459        sxtab r5, r1, r4, ror #16
2460        sxtab r7, r8, r3, ror #24
2461
2462@ CHECK: sxtab	r2, r3, r4              @ encoding: [0x74,0x20,0xa3,0xe6]
2463@ CHECK: sxtab	r4, r5, r6              @ encoding: [0x76,0x40,0xa5,0xe6]
2464@ CHECK: sxtablt r6, r2, r9, ror #8     @ encoding: [0x79,0x64,0xa2,0xb6]
2465@ CHECK: sxtab	r5, r1, r4, ror #16     @ encoding: [0x74,0x58,0xa1,0xe6]
2466@ CHECK: sxtab	r7, r8, r3, ror #24     @ encoding: [0x73,0x7c,0xa8,0xe6]
2467
2468
2469@------------------------------------------------------------------------------
2470@ SXTAB16
2471@------------------------------------------------------------------------------
2472        sxtab16ge r0, r1, r4
2473        sxtab16 r6, r2, r7, ror #0
2474        sxtab16 r3, r5, r8, ror #8
2475        sxtab16 r3, r2, r1, ror #16
2476        sxtab16eq r1, r2, r3, ror #24
2477
2478@ CHECK: sxtab16ge	r0, r1, r4      @ encoding: [0x74,0x00,0x81,0xa6]
2479@ CHECK: sxtab16	r6, r2, r7      @ encoding: [0x77,0x60,0x82,0xe6]
2480@ CHECK: sxtab16 r3, r5, r8, ror #8     @ encoding: [0x78,0x34,0x85,0xe6]
2481@ CHECK: sxtab16 r3, r2, r1, ror #16    @ encoding: [0x71,0x38,0x82,0xe6]
2482@ CHECK: sxtab16eq r1, r2, r3, ror #24  @ encoding: [0x73,0x1c,0x82,0x06]
2483
2484@------------------------------------------------------------------------------
2485@ SXTAH
2486@------------------------------------------------------------------------------
2487        sxtah r1, r3, r9
2488        sxtahhi r6, r1, r6, ror #0
2489        sxtah r3, r8, r3, ror #8
2490        sxtahlo r2, r2, r4, ror #16
2491        sxtah r9, r3, r3, ror #24
2492
2493@ CHECK: sxtah	r1, r3, r9              @ encoding: [0x79,0x10,0xb3,0xe6]
2494@ CHECK: sxtahhi	r6, r1, r6      @ encoding: [0x76,0x60,0xb1,0x86]
2495@ CHECK: sxtah	r3, r8, r3, ror #8      @ encoding: [0x73,0x34,0xb8,0xe6]
2496@ CHECK: sxtahlo r2, r2, r4, ror #16    @ encoding: [0x74,0x28,0xb2,0x36]
2497@ CHECK: sxtah	r9, r3, r3, ror #24     @ encoding: [0x73,0x9c,0xb3,0xe6]
2498
2499@------------------------------------------------------------------------------
2500@ SXTB
2501@------------------------------------------------------------------------------
2502        sxtbge r2, r4
2503        sxtb r5, r6, ror #0
2504        sxtb r6, r9, ror #8
2505        sxtbcc r5, r1, ror #16
2506        sxtb r8, r3, ror #24
2507
2508@ CHECK: sxtbge	r2, r4                  @ encoding: [0x74,0x20,0xaf,0xa6]
2509@ CHECK: sxtb	r5, r6                  @ encoding: [0x76,0x50,0xaf,0xe6]
2510@ CHECK: sxtb	r6, r9, ror #8          @ encoding: [0x79,0x64,0xaf,0xe6]
2511@ CHECK: sxtblo	r5, r1, ror #16         @ encoding: [0x71,0x58,0xaf,0x36]
2512@ CHECK: sxtb	r8, r3, ror #24         @ encoding: [0x73,0x8c,0xaf,0xe6]
2513
2514
2515@------------------------------------------------------------------------------
2516@ SXTB16
2517@------------------------------------------------------------------------------
2518        sxtb16 r1, r4
2519        sxtb16 r6, r7, ror #0
2520        sxtb16cs r3, r5, ror #8
2521        sxtb16 r3, r1, ror #16
2522        sxtb16ge r2, r3, ror #24
2523
2524@ CHECK: sxtb16	r1, r4                  @ encoding: [0x74,0x10,0x8f,0xe6]
2525@ CHECK: sxtb16	r6, r7                  @ encoding: [0x77,0x60,0x8f,0xe6]
2526@ CHECK: sxtb16hs	r3, r5, ror #8  @ encoding: [0x75,0x34,0x8f,0x26]
2527@ CHECK: sxtb16	r3, r1, ror #16         @ encoding: [0x71,0x38,0x8f,0xe6]
2528@ CHECK: sxtb16ge	r2, r3, ror #24 @ encoding: [0x73,0x2c,0x8f,0xa6]
2529
2530
2531@------------------------------------------------------------------------------
2532@ SXTH
2533@------------------------------------------------------------------------------
2534        sxthne r3, r9
2535        sxth r1, r6, ror #0
2536        sxth r3, r8, ror #8
2537        sxthle r2, r2, ror #16
2538        sxth r9, r3, ror #24
2539
2540@ CHECK: sxthne	r3, r9                  @ encoding: [0x79,0x30,0xbf,0x16]
2541@ CHECK: sxth	r1, r6                  @ encoding: [0x76,0x10,0xbf,0xe6]
2542@ CHECK: sxth	r3, r8, ror #8          @ encoding: [0x78,0x34,0xbf,0xe6]
2543@ CHECK: sxthle	r2, r2, ror #16         @ encoding: [0x72,0x28,0xbf,0xd6]
2544@ CHECK: sxth	r9, r3, ror #24         @ encoding: [0x73,0x9c,0xbf,0xe6]
2545
2546
2547@------------------------------------------------------------------------------
2548@ TEQ
2549@------------------------------------------------------------------------------
2550        teq r5, #0xf000
2551        teq r4, r5
2552        teq r4, r5, lsl #5
2553        teq r4, r5, lsr #5
2554        teq r4, r5, lsr #5
2555        teq r4, r5, asr #5
2556        teq r4, r5, ror #5
2557        teq r6, r7, lsl r9
2558        teq r6, r7, lsr r9
2559        teq r6, r7, asr r9
2560        teq r6, r7, ror r9
2561
2562@ CHECK: teq	r5, #61440              @ encoding: [0x0f,0x0a,0x35,0xe3]
2563@ CHECK: teq	r4, r5                  @ encoding: [0x05,0x00,0x34,0xe1]
2564@ CHECK: teq	r4, r5, lsl #5          @ encoding: [0x85,0x02,0x34,0xe1]
2565@ CHECK: teq	r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x34,0xe1]
2566@ CHECK: teq	r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x34,0xe1]
2567@ CHECK: teq	r4, r5, asr #5          @ encoding: [0xc5,0x02,0x34,0xe1]
2568@ CHECK: teq	r4, r5, ror #5          @ encoding: [0xe5,0x02,0x34,0xe1]
2569@ CHECK: teq	r6, r7, lsl r9          @ encoding: [0x17,0x09,0x36,0xe1]
2570@ CHECK: teq	r6, r7, lsr r9          @ encoding: [0x37,0x09,0x36,0xe1]
2571@ CHECK: teq	r6, r7, asr r9          @ encoding: [0x57,0x09,0x36,0xe1]
2572@ CHECK: teq	r6, r7, ror r9          @ encoding: [0x77,0x09,0x36,0xe1]
2573
2574
2575@------------------------------------------------------------------------------
2576@ TST
2577@------------------------------------------------------------------------------
2578        tst r5, #0xf000
2579        tst r4, r5
2580        tst r4, r5, lsl #5
2581        tst r4, r5, lsr #5
2582        tst r4, r5, lsr #5
2583        tst r4, r5, asr #5
2584        tst r4, r5, ror #5
2585        tst r6, r7, lsl r9
2586        tst r6, r7, lsr r9
2587        tst r6, r7, asr r9
2588        tst r6, r7, ror r9
2589
2590@ CHECK: tst	r5, #61440              @ encoding: [0x0f,0x0a,0x15,0xe3]
2591@ CHECK: tst	r4, r5                  @ encoding: [0x05,0x00,0x14,0xe1]
2592@ CHECK: tst	r4, r5, lsl #5          @ encoding: [0x85,0x02,0x14,0xe1]
2593@ CHECK: tst	r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x14,0xe1]
2594@ CHECK: tst	r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x14,0xe1]
2595@ CHECK: tst	r4, r5, asr #5          @ encoding: [0xc5,0x02,0x14,0xe1]
2596@ CHECK: tst	r4, r5, ror #5          @ encoding: [0xe5,0x02,0x14,0xe1]
2597@ CHECK: tst	r6, r7, lsl r9          @ encoding: [0x17,0x09,0x16,0xe1]
2598@ CHECK: tst	r6, r7, lsr r9          @ encoding: [0x37,0x09,0x16,0xe1]
2599@ CHECK: tst	r6, r7, asr r9          @ encoding: [0x57,0x09,0x16,0xe1]
2600@ CHECK: tst	r6, r7, ror r9          @ encoding: [0x77,0x09,0x16,0xe1]
2601
2602
2603@------------------------------------------------------------------------------
2604@ UADD16/UADD8
2605@------------------------------------------------------------------------------
2606        uadd16 r1, r2, r3
2607        uadd16gt r1, r2, r3
2608        uadd8 r1, r2, r3
2609        uadd8le r1, r2, r3
2610
2611@ CHECK: uadd16	r1, r2, r3              @ encoding: [0x13,0x1f,0x52,0xe6]
2612@ CHECK: uadd16gt	r1, r2, r3      @ encoding: [0x13,0x1f,0x52,0xc6]
2613@ CHECK: uadd8	r1, r2, r3              @ encoding: [0x93,0x1f,0x52,0xe6]
2614@ CHECK: uadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x52,0xd6]
2615
2616
2617@------------------------------------------------------------------------------
2618@ UASX
2619@------------------------------------------------------------------------------
2620        uasx r9, r12, r0
2621        uasxeq r9, r12, r0
2622
2623@ CHECK: uasx	r9, r12, r0             @ encoding: [0x30,0x9f,0x5c,0xe6]
2624@ CHECK: uasxeq	r9, r12, r0             @ encoding: [0x30,0x9f,0x5c,0x06]
2625
2626
2627@------------------------------------------------------------------------------
2628@ UBFX
2629@------------------------------------------------------------------------------
2630        ubfx r4, r5, #16, #1
2631        ubfxgt r4, r5, #16, #16
2632
2633@ CHECK: ubfx	r4, r5, #16, #1         @ encoding: [0x55,0x48,0xe0,0xe7]
2634@ CHECK: ubfxgt	r4, r5, #16, #16        @ encoding: [0x55,0x48,0xef,0xc7]
2635
2636
2637@------------------------------------------------------------------------------
2638@ UHADD16/UHADD8
2639@------------------------------------------------------------------------------
2640        uhadd16 r4, r8, r2
2641        uhadd16gt r4, r8, r2
2642        uhadd8 r4, r8, r2
2643        uhadd8gt r4, r8, r2
2644
2645@ CHECK: uhadd16	r4, r8, r2      @ encoding: [0x12,0x4f,0x78,0xe6]
2646@ CHECK: uhadd16gt	r4, r8, r2      @ encoding: [0x12,0x4f,0x78,0xc6]
2647@ CHECK: uhadd8	r4, r8, r2              @ encoding: [0x92,0x4f,0x78,0xe6]
2648@ CHECK: uhadd8gt	r4, r8, r2      @ encoding: [0x92,0x4f,0x78,0xc6]
2649
2650
2651@------------------------------------------------------------------------------
2652@ UHASX
2653@------------------------------------------------------------------------------
2654        uhasx r4, r8, r2
2655        uhasxgt r4, r8, r2
2656
2657@ CHECK: uhasx	r4, r8, r2              @ encoding: [0x32,0x4f,0x78,0xe6]
2658@ CHECK: uhasxgt r4, r8, r2             @ encoding: [0x32,0x4f,0x78,0xc6]
2659
2660
2661@------------------------------------------------------------------------------
2662@ UHSUB16/UHSUB8
2663@------------------------------------------------------------------------------
2664        uhsub16 r4, r8, r2
2665        uhsub16gt r4, r8, r2
2666        uhsub8 r4, r8, r2
2667        uhsub8gt r4, r8, r2
2668
2669@ CHECK: uhsub16	r4, r8, r2      @ encoding: [0x72,0x4f,0x78,0xe6]
2670@ CHECK: uhsub16gt	r4, r8, r2      @ encoding: [0x72,0x4f,0x78,0xc6]
2671@ CHECK: uhsub8	r4, r8, r2              @ encoding: [0xf2,0x4f,0x78,0xe6]
2672@ CHECK: uhsub8gt	r4, r8, r2      @ encoding: [0xf2,0x4f,0x78,0xc6]
2673
2674
2675@------------------------------------------------------------------------------
2676@ UMAAL
2677@------------------------------------------------------------------------------
2678        umaal r3, r4, r5, r6
2679        umaallt r3, r4, r5, r6
2680
2681@ CHECK: umaal	r3, r4, r5, r6          @ encoding: [0x95,0x36,0x44,0xe0]
2682@ CHECK: umaallt	r3, r4, r5, r6  @ encoding: [0x95,0x36,0x44,0xb0]
2683
2684
2685@------------------------------------------------------------------------------
2686@ UMLAL
2687@------------------------------------------------------------------------------
2688        umlal r2, r4, r6, r8
2689        umlalgt r6, r1, r2, r6
2690        umlals r2, r9, r2, r3
2691        umlalseq r3, r5, r1, r2
2692
2693@ CHECK: umlal	r2, r4, r6, r8          @ encoding: [0x96,0x28,0xa4,0xe0]
2694@ CHECK: umlalgt	r6, r1, r2, r6  @ encoding: [0x92,0x66,0xa1,0xc0]
2695@ CHECK: umlals	r2, r9, r2, r3          @ encoding: [0x92,0x23,0xb9,0xe0]
2696@ CHECK: umlalseq	r3, r5, r1, r2  @ encoding: [0x91,0x32,0xb5,0x00]
2697
2698
2699@------------------------------------------------------------------------------
2700@ UMULL
2701@------------------------------------------------------------------------------
2702        umull r2, r4, r6, r8
2703        umullgt r6, r1, r2, r6
2704        umulls r2, r9, r2, r3
2705        umullseq r3, r5, r1, r2
2706
2707@ CHECK: umull	r2, r4, r6, r8          @ encoding: [0x96,0x28,0x84,0xe0]
2708@ CHECK: umullgt	r6, r1, r2, r6  @ encoding: [0x92,0x66,0x81,0xc0]
2709@ CHECK: umulls	r2, r9, r2, r3          @ encoding: [0x92,0x23,0x99,0xe0]
2710@ CHECK: umullseq	r3, r5, r1, r2  @ encoding: [0x91,0x32,0x95,0x00]
2711
2712
2713@------------------------------------------------------------------------------
2714@ UQADD16/UQADD8
2715@------------------------------------------------------------------------------
2716        uqadd16 r1, r2, r3
2717        uqadd16gt r4, r7, r9
2718        uqadd8 r3, r4, r8
2719        uqadd8le r8, r1, r2
2720
2721
2722@ CHECK: uqadd16	r1, r2, r3      @ encoding: [0x13,0x1f,0x62,0xe6]
2723@ CHECK: uqadd16gt	r4, r7, r9      @ encoding: [0x19,0x4f,0x67,0xc6]
2724@ CHECK: uqadd8	r3, r4, r8              @ encoding: [0x98,0x3f,0x64,0xe6]
2725@ CHECK: uqadd8le	r8, r1, r2      @ encoding: [0x92,0x8f,0x61,0xd6]
2726
2727
2728@------------------------------------------------------------------------------
2729@ UQASX
2730@------------------------------------------------------------------------------
2731        uqasx r2, r4, r1
2732        uqasxhi r5, r2, r9
2733
2734@ CHECK: uqasx	r2, r4, r1              @ encoding: [0x31,0x2f,0x64,0xe6]
2735@ CHECK: uqasxhi	r5, r2, r9      @ encoding: [0x39,0x5f,0x62,0x86]
2736
2737
2738@------------------------------------------------------------------------------
2739@ UQSAX
2740@------------------------------------------------------------------------------
2741        uqsax r1, r3, r7
2742        uqsaxal r3, r6, r2
2743
2744@ CHECK: uqsax	r1, r3, r7              @ encoding: [0x57,0x1f,0x63,0xe6]
2745@ CHECK: uqsax	r3, r6, r2              @ encoding: [0x52,0x3f,0x66,0xe6]
2746
2747
2748@------------------------------------------------------------------------------
2749@ UQSUB16/UQSUB8
2750@------------------------------------------------------------------------------
2751        uqsub16 r1, r5, r3
2752        uqsub16gt r3, r2, r5
2753        uqsub8 r2, r1, r4
2754        uqsub8le r4, r6, r9
2755
2756@ CHECK: uqsub16	r1, r5, r3      @ encoding: [0x73,0x1f,0x65,0xe6]
2757@ CHECK: uqsub16gt	r3, r2, r5      @ encoding: [0x75,0x3f,0x62,0xc6]
2758@ CHECK: uqsub8	r2, r1, r4              @ encoding: [0xf4,0x2f,0x61,0xe6]
2759@ CHECK: uqsub8le	r4, r6, r9      @ encoding: [0xf9,0x4f,0x66,0xd6]
2760
2761
2762@------------------------------------------------------------------------------
2763@ USADA8/USAD8
2764@------------------------------------------------------------------------------
2765        usad8 r2, r1, r4
2766        usad8le r4, r6, r9
2767        usada8 r1, r5, r3, r7
2768        usada8gt r3, r2, r5, r1
2769
2770@ CHECK: usad8	r2, r1, r4              @ encoding: [0x11,0xf4,0x82,0xe7]
2771@ CHECK: usad8le	r4, r6, r9      @ encoding: [0x16,0xf9,0x84,0xd7]
2772@ CHECK: usada8	r1, r5, r3, r7          @ encoding: [0x15,0x73,0x81,0xe7]
2773@ CHECK: usada8gt	r3, r2, r5, r1  @ encoding: [0x12,0x15,0x83,0xc7]
2774
2775
2776@------------------------------------------------------------------------------
2777@ USAT
2778@------------------------------------------------------------------------------
2779        usat	r8, #1, r10
2780        usat	r8, #4, r10, lsl #0
2781        usat	r8, #5, r10, lsl #31
2782        usat	r8, #31, r10, asr #32
2783        usat	r8, #16, r10, asr #1
2784
2785@ CHECK: usat	r8, #1, r10             @ encoding: [0x1a,0x80,0xe1,0xe6]
2786@ CHECK: usat	r8, #4, r10             @ encoding: [0x1a,0x80,0xe4,0xe6]
2787@ CHECK: usat	r8, #5, r10, lsl #31    @ encoding: [0x9a,0x8f,0xe5,0xe6]
2788@ CHECK: usat	r8, #31, r10, asr #32   @ encoding: [0x5a,0x80,0xff,0xe6]
2789@ CHECK: usat	r8, #16, r10, asr #1    @ encoding: [0xda,0x80,0xf0,0xe6]
2790
2791
2792@------------------------------------------------------------------------------
2793@ USAT16
2794@------------------------------------------------------------------------------
2795        usat16	r2, #2, r7
2796        usat16	r3, #15, r5
2797
2798@ CHECK: usat16	r2, #2, r7              @ encoding: [0x37,0x2f,0xe2,0xe6]
2799@ CHECK: usat16	r3, #15, r5             @ encoding: [0x35,0x3f,0xef,0xe6]
2800
2801
2802@------------------------------------------------------------------------------
2803@ USAX
2804@------------------------------------------------------------------------------
2805        usax r2, r3, r4
2806        usaxne r2, r3, r4
2807
2808@ CHECK: usax	r2, r3, r4              @ encoding: [0x54,0x2f,0x53,0xe6]
2809@ CHECK: usaxne	r2, r3, r4              @ encoding: [0x54,0x2f,0x53,0x16]
2810
2811@------------------------------------------------------------------------------
2812@ USUB16/USUB8
2813@------------------------------------------------------------------------------
2814        usub16 r4, r2, r7
2815        usub16hi r1, r1, r3
2816        usub8 r1, r8, r5
2817        usub8le r9, r2, r3
2818
2819@ CHECK: usub16	r4, r2, r7              @ encoding: [0x77,0x4f,0x52,0xe6]
2820@ CHECK: usub16hi	r1, r1, r3      @ encoding: [0x73,0x1f,0x51,0x86]
2821@ CHECK: usub8	r1, r8, r5              @ encoding: [0xf5,0x1f,0x58,0xe6]
2822@ CHECK: usub8le	r9, r2, r3      @ encoding: [0xf3,0x9f,0x52,0xd6]
2823
2824
2825@------------------------------------------------------------------------------
2826@ UXTAB
2827@------------------------------------------------------------------------------
2828        uxtab r2, r3, r4
2829        uxtab r4, r5, r6, ror #0
2830        uxtablt r6, r2, r9, ror #8
2831        uxtab r5, r1, r4, ror #16
2832        uxtab r7, r8, r3, ror #24
2833
2834@ CHECK: uxtab	r2, r3, r4              @ encoding: [0x74,0x20,0xe3,0xe6]
2835@ CHECK: uxtab	r4, r5, r6              @ encoding: [0x76,0x40,0xe5,0xe6]
2836@ CHECK: uxtablt r6, r2, r9, ror #8     @ encoding: [0x79,0x64,0xe2,0xb6]
2837@ CHECK: uxtab	r5, r1, r4, ror #16     @ encoding: [0x74,0x58,0xe1,0xe6]
2838@ CHECK: uxtab	r7, r8, r3, ror #24     @ encoding: [0x73,0x7c,0xe8,0xe6]
2839
2840
2841@------------------------------------------------------------------------------
2842@ UXTAB16
2843@------------------------------------------------------------------------------
2844        uxtab16ge r0, r1, r4
2845        uxtab16 r6, r2, r7, ror #0
2846        uxtab16 r3, r5, r8, ror #8
2847        uxtab16 r3, r2, r1, ror #16
2848        uxtab16eq r1, r2, r3, ror #24
2849
2850@ CHECK: uxtab16ge	r0, r1, r4      @ encoding: [0x74,0x00,0xc1,0xa6]
2851@ CHECK: uxtab16	r6, r2, r7      @ encoding: [0x77,0x60,0xc2,0xe6]
2852@ CHECK: uxtab16	r3, r5, r8, ror #8 @ encoding: [0x78,0x34,0xc5,0xe6]
2853@ CHECK: uxtab16	r3, r2, r1, ror #16 @ encoding: [0x71,0x38,0xc2,0xe6]
2854@ CHECK: uxtab16eq	r1, r2, r3, ror #24 @ encoding: [0x73,0x1c,0xc2,0x06]
2855
2856
2857@------------------------------------------------------------------------------
2858@ UXTAH
2859@------------------------------------------------------------------------------
2860        uxtah r1, r3, r9
2861        uxtahhi r6, r1, r6, ror #0
2862        uxtah r3, r8, r3, ror #8
2863        uxtahlo r2, r2, r4, ror #16
2864        uxtah r9, r3, r3, ror #24
2865
2866@ CHECK: uxtah	r1, r3, r9              @ encoding: [0x79,0x10,0xf3,0xe6]
2867@ CHECK: uxtahhi	r6, r1, r6      @ encoding: [0x76,0x60,0xf1,0x86]
2868@ CHECK: uxtah	r3, r8, r3, ror #8      @ encoding: [0x73,0x34,0xf8,0xe6]
2869@ CHECK: uxtahlo	r2, r2, r4, ror #16 @ encoding: [0x74,0x28,0xf2,0x36]
2870@ CHECK: uxtah	r9, r3, r3, ror #24     @ encoding: [0x73,0x9c,0xf3,0xe6]
2871
2872@------------------------------------------------------------------------------
2873@ UXTB
2874@------------------------------------------------------------------------------
2875        uxtbge r2, r4
2876        uxtb r5, r6, ror #0
2877        uxtb r6, r9, ror #8
2878        uxtbcc r5, r1, ror #16
2879        uxtb r8, r3, ror #24
2880
2881@ CHECK: uxtbge	r2, r4                  @ encoding: [0x74,0x20,0xef,0xa6]
2882@ CHECK: uxtb	r5, r6                  @ encoding: [0x76,0x50,0xef,0xe6]
2883@ CHECK: uxtb	r6, r9, ror #8          @ encoding: [0x79,0x64,0xef,0xe6]
2884@ CHECK: uxtblo	r5, r1, ror #16         @ encoding: [0x71,0x58,0xef,0x36]
2885@ CHECK: uxtb	r8, r3, ror #24         @ encoding: [0x73,0x8c,0xef,0xe6]
2886
2887
2888@------------------------------------------------------------------------------
2889@ UXTB16
2890@------------------------------------------------------------------------------
2891        uxtb16 r1, r4
2892        uxtb16 r6, r7, ror #0
2893        uxtb16cs r3, r5, ror #8
2894        uxtb16 r3, r1, ror #16
2895        uxtb16ge r2, r3, ror #24
2896
2897@ CHECK: uxtb16	r1, r4                  @ encoding: [0x74,0x10,0xcf,0xe6]
2898@ CHECK: uxtb16	r6, r7                  @ encoding: [0x77,0x60,0xcf,0xe6]
2899@ CHECK: uxtb16hs	r3, r5, ror #8  @ encoding: [0x75,0x34,0xcf,0x26]
2900@ CHECK: uxtb16	r3, r1, ror #16         @ encoding: [0x71,0x38,0xcf,0xe6]
2901@ CHECK: uxtb16ge	r2, r3, ror #24 @ encoding: [0x73,0x2c,0xcf,0xa6]
2902
2903
2904@------------------------------------------------------------------------------
2905@ UXTH
2906@------------------------------------------------------------------------------
2907        uxthne r3, r9
2908        uxth r1, r6, ror #0
2909        uxth r3, r8, ror #8
2910        uxthle r2, r2, ror #16
2911        uxth r9, r3, ror #24
2912
2913@ CHECK: uxthne	r3, r9                  @ encoding: [0x79,0x30,0xff,0x16]
2914@ CHECK: uxth	r1, r6                  @ encoding: [0x76,0x10,0xff,0xe6]
2915@ CHECK: uxth	r3, r8, ror #8          @ encoding: [0x78,0x34,0xff,0xe6]
2916@ CHECK: uxthle	r2, r2, ror #16         @ encoding: [0x72,0x28,0xff,0xd6]
2917@ CHECK: uxth	r9, r3, ror #24         @ encoding: [0x73,0x9c,0xff,0xe6]
2918
2919
2920@------------------------------------------------------------------------------
2921@ WFE/WFI/YIELD
2922@------------------------------------------------------------------------------
2923        wfe
2924        wfehi
2925        wfi
2926        wfilt
2927        yield
2928        yieldne
2929        hint #4
2930        hint #3
2931        hint #2
2932        hint #1
2933        hint #0
2934
2935@ CHECK: wfe                            @ encoding: [0x02,0xf0,0x20,0xe3]
2936@ CHECK: wfehi                          @ encoding: [0x02,0xf0,0x20,0x83]
2937@ CHECK: wfi                            @ encoding: [0x03,0xf0,0x20,0xe3]
2938@ CHECK: wfilt                          @ encoding: [0x03,0xf0,0x20,0xb3]
2939@ CHECK: yield                          @ encoding: [0x01,0xf0,0x20,0xe3]
2940@ CHECK: yieldne                        @ encoding: [0x01,0xf0,0x20,0x13]
2941@ CHECK: sev                            @ encoding: [0x04,0xf0,0x20,0xe3]
2942@ CHECK: wfi                            @ encoding: [0x03,0xf0,0x20,0xe3]
2943@ CHECK: wfe                            @ encoding: [0x02,0xf0,0x20,0xe3]
2944@ CHECK: yield                          @ encoding: [0x01,0xf0,0x20,0xe3]
2945@ CHECK: nop                            @ encoding: [0x00,0xf0,0x20,0xe3]
2946