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