• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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@ SMC
1795@------------------------------------------------------------------------------
1796        smc #0xf
1797        smceq #0
1798
1799@ CHECK: smc	#15                     @ encoding: [0x7f,0x00,0x60,0xe1]
1800@ CHECK: smceq	#0                      @ encoding: [0x70,0x00,0x60,0x01]
1801
1802@------------------------------------------------------------------------------
1803@ SMLABB/SMLABT/SMLATB/SMLATT
1804@------------------------------------------------------------------------------
1805        smlabb r3, r1, r9, r0
1806        smlabt r5, r6, r4, r1
1807        smlatb r4, r2, r3, r2
1808        smlatt r8, r3, r8, r4
1809        smlabbge r3, r1, r9, r0
1810        smlabtle r5, r6, r4, r1
1811        smlatbne r4, r2, r3, r2
1812        smlatteq r8, r3, r8, r4
1813
1814@ CHECK: smlabb	r3, r1, r9, r0          @ encoding: [0x81,0x09,0x03,0xe1]
1815@ CHECK: smlabt	r5, r6, r4, r1          @ encoding: [0xc6,0x14,0x05,0xe1]
1816@ CHECK: smlatb	r4, r2, r3, r2          @ encoding: [0xa2,0x23,0x04,0xe1]
1817@ CHECK: smlatt	r8, r3, r8, r4          @ encoding: [0xe3,0x48,0x08,0xe1]
1818@ CHECK: smlabbge	r3, r1, r9, r0  @ encoding: [0x81,0x09,0x03,0xa1]
1819@ CHECK: smlabtle	r5, r6, r4, r1  @ encoding: [0xc6,0x14,0x05,0xd1]
1820@ CHECK: smlatbne	r4, r2, r3, r2  @ encoding: [0xa2,0x23,0x04,0x11]
1821@ CHECK: smlatteq	r8, r3, r8, r4  @ encoding: [0xe3,0x48,0x08,0x01]
1822
1823@------------------------------------------------------------------------------
1824@ SMLAD/SMLADX
1825@------------------------------------------------------------------------------
1826        smlad r2, r3, r5, r8
1827        smladx r2, r3, r5, r8
1828        smladeq r2, r3, r5, r8
1829        smladxhi r2, r3, r5, r8
1830
1831@ CHECK: smlad	r2, r3, r5, r8          @ encoding: [0x13,0x85,0x02,0xe7]
1832@ CHECK: smladx	r2, r3, r5, r8          @ encoding: [0x33,0x85,0x02,0xe7]
1833@ CHECK: smladeq	r2, r3, r5, r8  @ encoding: [0x13,0x85,0x02,0x07]
1834@ CHECK: smladxhi	r2, r3, r5, r8  @ encoding: [0x33,0x85,0x02,0x87]
1835
1836
1837@------------------------------------------------------------------------------
1838@ SMLAL
1839@------------------------------------------------------------------------------
1840        smlal r2, r3, r5, r8
1841        smlals r2, r3, r5, r8
1842        smlaleq r2, r3, r5, r8
1843        smlalshi r2, r3, r5, r8
1844
1845@ CHECK: smlal	r2, r3, r5, r8          @ encoding: [0x95,0x28,0xe3,0xe0]
1846@ CHECK: smlals	r2, r3, r5, r8          @ encoding: [0x95,0x28,0xf3,0xe0]
1847@ CHECK: smlaleq	r2, r3, r5, r8  @ encoding: [0x95,0x28,0xe3,0x00]
1848@ CHECK: smlalshi	r2, r3, r5, r8  @ encoding: [0x95,0x28,0xf3,0x80]
1849
1850
1851@------------------------------------------------------------------------------
1852@ SMLALBB/SMLALBT/SMLALTB/SMLALTT
1853@------------------------------------------------------------------------------
1854        smlalbb r3, r1, r9, r0
1855        smlalbt r5, r6, r4, r1
1856        smlaltb r4, r2, r3, r2
1857        smlaltt r8, r3, r8, r4
1858        smlalbbge r3, r1, r9, r0
1859        smlalbtle r5, r6, r4, r1
1860        smlaltbne r4, r2, r3, r2
1861        smlaltteq r8, r3, r8, r4
1862
1863@ CHECK: smlalbb	r3, r1, r9, r0  @ encoding: [0x89,0x30,0x41,0xe1]
1864@ CHECK: smlalbt	r5, r6, r4, r1  @ encoding: [0xc4,0x51,0x46,0xe1]
1865@ CHECK: smlaltb	r4, r2, r3, r2  @ encoding: [0xa3,0x42,0x42,0xe1]
1866@ CHECK: smlaltt	r8, r3, r8, r4  @ encoding: [0xe8,0x84,0x43,0xe1]
1867@ CHECK: smlalbbge	r3, r1, r9, r0  @ encoding: [0x89,0x30,0x41,0xa1]
1868@ CHECK: smlalbtle	r5, r6, r4, r1  @ encoding: [0xc4,0x51,0x46,0xd1]
1869@ CHECK: smlaltbne	r4, r2, r3, r2  @ encoding: [0xa3,0x42,0x42,0x11]
1870@ CHECK: smlaltteq	r8, r3, r8, r4  @ encoding: [0xe8,0x84,0x43,0x01]
1871
1872
1873@------------------------------------------------------------------------------
1874@ SMLALD/SMLALDX
1875@------------------------------------------------------------------------------
1876        smlald r2, r3, r5, r8
1877        smlaldx r2, r3, r5, r8
1878        smlaldeq r2, r3, r5, r8
1879        smlaldxhi r2, r3, r5, r8
1880
1881@ CHECK: smlald	r2, r3, r5, r8          @ encoding: [0x15,0x28,0x43,0xe7]
1882@ CHECK: smlaldx	r2, r3, r5, r8  @ encoding: [0x35,0x28,0x43,0xe7]
1883@ CHECK: smlaldeq	r2, r3, r5, r8  @ encoding: [0x15,0x28,0x43,0x07]
1884@ CHECK: smlaldxhi	r2, r3, r5, r8  @ encoding: [0x35,0x28,0x43,0x87]
1885
1886
1887@------------------------------------------------------------------------------
1888@ SMLAWB/SMLAWT
1889@------------------------------------------------------------------------------
1890        smlawb r2, r3, r10, r8
1891        smlawt r8, r3, r5, r9
1892        smlawbeq r2, r7, r5, r8
1893        smlawthi r1, r3, r0, r8
1894
1895@ CHECK: smlawb	r2, r3, r10, r8         @ encoding: [0x83,0x8a,0x22,0xe1]
1896@ CHECK: smlawt	r8, r3, r5, r9          @ encoding: [0xc3,0x95,0x28,0xe1]
1897@ CHECK: smlawbeq	r2, r7, r5, r8  @ encoding: [0x87,0x85,0x22,0x01]
1898@ CHECK: smlawthi	r1, r3, r0, r8  @ encoding: [0xc3,0x80,0x21,0x81]
1899
1900
1901@------------------------------------------------------------------------------
1902@ SMLSD/SMLSDX
1903@------------------------------------------------------------------------------
1904        smlsd r2, r3, r5, r8
1905        smlsdx r2, r3, r5, r8
1906        smlsdeq r2, r3, r5, r8
1907        smlsdxhi r2, r3, r5, r8
1908
1909@ CHECK: smlsd	r2, r3, r5, r8          @ encoding: [0x53,0x85,0x02,0xe7]
1910@ CHECK: smlsdx	r2, r3, r5, r8          @ encoding: [0x73,0x85,0x02,0xe7]
1911@ CHECK: smlsdeq	r2, r3, r5, r8  @ encoding: [0x53,0x85,0x02,0x07]
1912@ CHECK: smlsdxhi	r2, r3, r5, r8  @ encoding: [0x73,0x85,0x02,0x87]
1913
1914
1915@------------------------------------------------------------------------------
1916@ SMLSLD/SMLSLDX
1917@------------------------------------------------------------------------------
1918        smlsld r2, r9, r5, r1
1919        smlsldx r4, r11, r2, r8
1920        smlsldeq r8, r2, r5, r6
1921        smlsldxhi r1, r0, r3, r8
1922
1923@ CHECK: smlsld	r2, r9, r5, r1          @ encoding: [0x55,0x21,0x49,0xe7]
1924@ CHECK: smlsldx	r4, r11, r2, r8 @ encoding: [0x72,0x48,0x4b,0xe7]
1925@ CHECK: smlsldeq	r8, r2, r5, r6  @ encoding: [0x55,0x86,0x42,0x07]
1926@ CHECK: smlsldxhi	r1, r0, r3, r8  @ encoding: [0x73,0x18,0x40,0x87]
1927
1928
1929@------------------------------------------------------------------------------
1930@ SMMLA/SMMLAR
1931@------------------------------------------------------------------------------
1932        smmla r1, r2, r3, r4
1933        smmlar r4, r3, r2, r1
1934        smmlalo r1, r2, r3, r4
1935        smmlarcs r4, r3, r2, r1
1936
1937@ CHECK: smmla	r1, r2, r3, r4          @ encoding: [0x12,0x43,0x51,0xe7]
1938@ CHECK: smmlar	r4, r3, r2, r1          @ encoding: [0x33,0x12,0x54,0xe7]
1939@ CHECK: smmlalo	r1, r2, r3, r4  @ encoding: [0x12,0x43,0x51,0x37]
1940@ CHECK: smmlarhs	r4, r3, r2, r1  @ encoding: [0x33,0x12,0x54,0x27]
1941
1942
1943@------------------------------------------------------------------------------
1944@ SMMLS/SMMLSR
1945@------------------------------------------------------------------------------
1946        smmls r1, r2, r3, r4
1947        smmlsr r4, r3, r2, r1
1948        smmlslo r1, r2, r3, r4
1949        smmlsrcs r4, r3, r2, r1
1950
1951@ CHECK: smmls	r1, r2, r3, r4          @ encoding: [0xd2,0x43,0x51,0xe7]
1952@ CHECK: smmlsr	r4, r3, r2, r1          @ encoding: [0xf3,0x12,0x54,0xe7]
1953@ CHECK: smmlslo	r1, r2, r3, r4  @ encoding: [0xd2,0x43,0x51,0x37]
1954@ CHECK: smmlsrhs	r4, r3, r2, r1  @ encoding: [0xf3,0x12,0x54,0x27]
1955
1956
1957@------------------------------------------------------------------------------
1958@ SMMUL/SMMULR
1959@------------------------------------------------------------------------------
1960        smmul r2, r3, r4
1961        smmulr r3, r2, r1
1962        smmulcc r2, r3, r4
1963        smmulrhs r3, r2, r1
1964
1965@ CHECK: smmul	r2, r3, r4              @ encoding: [0x13,0xf4,0x52,0xe7]
1966@ CHECK: smmulr	r3, r2, r1              @ encoding: [0x32,0xf1,0x53,0xe7]
1967@ CHECK: smmullo	r2, r3, r4      @ encoding: [0x13,0xf4,0x52,0x37]
1968@ CHECK: smmulrhs	r3, r2, r1      @ encoding: [0x32,0xf1,0x53,0x27]
1969
1970
1971@------------------------------------------------------------------------------
1972@ SMUAD/SMUADX
1973@------------------------------------------------------------------------------
1974        smuad r2, r3, r4
1975        smuadx r3, r2, r1
1976        smuadlt r2, r3, r4
1977        smuadxge r3, r2, r1
1978
1979@ CHECK: smuad	r2, r3, r4              @ encoding: [0x13,0xf4,0x02,0xe7]
1980@ CHECK: smuadx	r3, r2, r1              @ encoding: [0x32,0xf1,0x03,0xe7]
1981@ CHECK: smuadlt	r2, r3, r4      @ encoding: [0x13,0xf4,0x02,0xb7]
1982@ CHECK: smuadxge	r3, r2, r1      @ encoding: [0x32,0xf1,0x03,0xa7]
1983
1984
1985@------------------------------------------------------------------------------
1986@ SMULBB/SMULBT/SMULTB/SMULTT
1987@------------------------------------------------------------------------------
1988        smulbb r3, r9, r0
1989        smulbt r5, r4, r1
1990        smultb r4, r2, r2
1991        smultt r8, r3, r4
1992        smulbbge r1, r9, r0
1993        smulbtle r5, r6, r4
1994        smultbne r2, r3, r2
1995        smultteq r8, r3, r4
1996
1997@ CHECK: smulbb	r3, r9, r0              @ encoding: [0x89,0x00,0x63,0xe1]
1998@ CHECK: smulbt	r5, r4, r1              @ encoding: [0xc4,0x01,0x65,0xe1]
1999@ CHECK: smultb	r4, r2, r2              @ encoding: [0xa2,0x02,0x64,0xe1]
2000@ CHECK: smultt	r8, r3, r4              @ encoding: [0xe3,0x04,0x68,0xe1]
2001@ CHECK: smulbbge	r1, r9, r0      @ encoding: [0x89,0x00,0x61,0xa1]
2002@ CHECK: smulbtle	r5, r6, r4      @ encoding: [0xc6,0x04,0x65,0xd1]
2003@ CHECK: smultbne	r2, r3, r2      @ encoding: [0xa3,0x02,0x62,0x11]
2004@ CHECK: smultteq	r8, r3, r4      @ encoding: [0xe3,0x04,0x68,0x01]
2005
2006
2007@------------------------------------------------------------------------------
2008@ SMULL
2009@------------------------------------------------------------------------------
2010        smull r3, r9, r0, r1
2011        smulls r3, r9, r0, r2
2012        smulleq r8, r3, r4, r5
2013        smullseq r8, r3, r4, r3
2014
2015@ CHECK: smull	r3, r9, r0, r1          @ encoding: [0x90,0x31,0xc9,0xe0]
2016@ CHECK: smulls	r3, r9, r0, r2          @ encoding: [0x90,0x32,0xd9,0xe0]
2017@ CHECK: smulleq	r8, r3, r4, r5  @ encoding: [0x94,0x85,0xc3,0x00]
2018@ CHECK: smullseq	r8, r3, r4, r3  @ encoding: [0x94,0x83,0xd3,0x00]
2019
2020
2021@------------------------------------------------------------------------------
2022@ SMULWB/SMULWT
2023@------------------------------------------------------------------------------
2024        smulwb r3, r9, r0
2025        smulwt r3, r9, r2
2026
2027@ CHECK: smulwb	r3, r9, r0              @ encoding: [0xa9,0x00,0x23,0xe1]
2028@ CHECK: smulwt	r3, r9, r2              @ encoding: [0xe9,0x02,0x23,0xe1]
2029
2030
2031@------------------------------------------------------------------------------
2032@ SMUSD/SMUSDX
2033@------------------------------------------------------------------------------
2034        smusd r3, r0, r1
2035        smusdx r3, r9, r2
2036        smusdeq r8, r3, r2
2037        smusdxne r7, r4, r3
2038
2039@ CHECK: smusd	r3, r0, r1              @ encoding: [0x50,0xf1,0x03,0xe7]
2040@ CHECK: smusdx	r3, r9, r2              @ encoding: [0x79,0xf2,0x03,0xe7]
2041@ CHECK: smusdeq	r8, r3, r2      @ encoding: [0x53,0xf2,0x08,0x07]
2042@ CHECK: smusdxne	r7, r4, r3      @ encoding: [0x74,0xf3,0x07,0x17]
2043
2044
2045@------------------------------------------------------------------------------
2046@ SRS
2047@------------------------------------------------------------------------------
2048        srsda sp, #5
2049        srsdb sp, #1
2050        srsia sp, #0
2051        srsib sp, #15
2052
2053        srsda sp!, #31
2054        srsdb sp!, #19
2055        srsia sp!, #2
2056        srsib sp!, #14
2057
2058        srsfa sp, #11
2059        srsea sp, #10
2060        srsfd sp, #9
2061        srsed sp, #5
2062
2063        srsfa sp!, #5
2064        srsea sp!, #5
2065        srsfd sp!, #5
2066        srsed sp!, #5
2067
2068        srs sp, #5
2069        srs sp!, #5
2070
2071@ CHECK: srsda	sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
2072@ CHECK: srsdb	sp, #1                  @ encoding: [0x01,0x05,0x4d,0xf9]
2073@ CHECK: srsia	sp, #0                  @ encoding: [0x00,0x05,0xcd,0xf8]
2074@ CHECK: srsib	sp, #15                 @ encoding: [0x0f,0x05,0xcd,0xf9]
2075
2076@ CHECK: srsda	sp!, #31                @ encoding: [0x1f,0x05,0x6d,0xf8]
2077@ CHECK: srsdb	sp!, #19                @ encoding: [0x13,0x05,0x6d,0xf9]
2078@ CHECK: srsia	sp!, #2                 @ encoding: [0x02,0x05,0xed,0xf8]
2079@ CHECK: srsib	sp!, #14                @ encoding: [0x0e,0x05,0xed,0xf9]
2080
2081@ CHECK: srsda	sp, #11                 @ encoding: [0x0b,0x05,0x4d,0xf8]
2082@ CHECK: srsdb	sp, #10                 @ encoding: [0x0a,0x05,0x4d,0xf9]
2083@ CHECK: srsia	sp, #9                  @ encoding: [0x09,0x05,0xcd,0xf8]
2084@ CHECK: srsib	sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf9]
2085
2086@ CHECK: srsda	sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf8]
2087@ CHECK: srsdb	sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf9]
2088@ CHECK: srsia	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
2089@ CHECK: srsib	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf9]
2090
2091@ CHECK: srsia	sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf8]
2092@ CHECK: srsia	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
2093
2094@ Compatibility aliases.
2095        srsda #5
2096        srsdb #1
2097        srsia #0
2098        srsib #15
2099
2100        srsda #31!
2101        srsdb #19!
2102        srsia #2!
2103        srsib #14!
2104
2105        srsfa #11
2106        srsea #10
2107        srsfd #9
2108        srsed #5
2109
2110        srsfa #5!
2111        srsea #5!
2112        srsfd #5!
2113        srsed #5!
2114
2115        srs #5
2116        srs #5!
2117
2118@ CHECK: srsda	sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
2119@ CHECK: srsdb	sp, #1                  @ encoding: [0x01,0x05,0x4d,0xf9]
2120@ CHECK: srsia	sp, #0                  @ encoding: [0x00,0x05,0xcd,0xf8]
2121@ CHECK: srsib	sp, #15                 @ encoding: [0x0f,0x05,0xcd,0xf9]
2122@ CHECK: srsda	sp!, #31                @ encoding: [0x1f,0x05,0x6d,0xf8]
2123@ CHECK: srsdb	sp!, #19                @ encoding: [0x13,0x05,0x6d,0xf9]
2124@ CHECK: srsia	sp!, #2                 @ encoding: [0x02,0x05,0xed,0xf8]
2125@ CHECK: srsib	sp!, #14                @ encoding: [0x0e,0x05,0xed,0xf9]
2126@ CHECK: srsda	sp, #11                 @ encoding: [0x0b,0x05,0x4d,0xf8]
2127@ CHECK: srsdb	sp, #10                 @ encoding: [0x0a,0x05,0x4d,0xf9]
2128@ CHECK: srsia	sp, #9                  @ encoding: [0x09,0x05,0xcd,0xf8]
2129@ CHECK: srsib	sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf9]
2130@ CHECK: srsda	sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf8]
2131@ CHECK: srsdb	sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf9]
2132@ CHECK: srsia	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
2133@ CHECK: srsib	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf9]
2134@ CHECK: srsia	sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf8]
2135@ CHECK: srsia	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
2136
2137
2138@------------------------------------------------------------------------------
2139@ SSAT
2140@------------------------------------------------------------------------------
2141        ssat	r8, #1, r10
2142        ssat	r8, #1, r10, lsl #0
2143        ssat	r8, #1, r10, lsl #31
2144        ssat	r8, #1, r10, asr #32
2145        ssat	r8, #1, r10, asr #1
2146
2147@ CHECK: ssat	r8, #1, r10             @ encoding: [0x1a,0x80,0xa0,0xe6]
2148@ CHECK: ssat	r8, #1, r10             @ encoding: [0x1a,0x80,0xa0,0xe6]
2149@ CHECK: ssat	r8, #1, r10, lsl #31    @ encoding: [0x9a,0x8f,0xa0,0xe6]
2150@ CHECK: ssat	r8, #1, r10, asr #32    @ encoding: [0x5a,0x80,0xa0,0xe6]
2151@ CHECK: ssat	r8, #1, r10, asr #1     @ encoding: [0xda,0x80,0xa0,0xe6]
2152
2153
2154@------------------------------------------------------------------------------
2155@ SSAT16
2156@------------------------------------------------------------------------------
2157        ssat16	r2, #1, r7
2158        ssat16	r3, #16, r5
2159
2160@ CHECK: ssat16	r2, #1, r7              @ encoding: [0x37,0x2f,0xa0,0xe6]
2161@ CHECK: ssat16	r3, #16, r5             @ encoding: [0x35,0x3f,0xaf,0xe6]
2162
2163
2164@------------------------------------------------------------------------------
2165@ SSAX
2166@------------------------------------------------------------------------------
2167        ssax r2, r3, r4
2168        ssaxlt r2, r3, r4
2169
2170@ CHECK: ssax	r2, r3, r4              @ encoding: [0x54,0x2f,0x13,0xe6]
2171@ CHECK: ssaxlt	r2, r3, r4              @ encoding: [0x54,0x2f,0x13,0xb6]
2172
2173@------------------------------------------------------------------------------
2174@ SSUB16/SSUB8
2175@------------------------------------------------------------------------------
2176        ssub16 r1, r0, r6
2177        ssub16ne r5, r3, r2
2178        ssub8 r9, r2, r4
2179        ssub8eq r5, r1, r2
2180
2181@ CHECK: ssub16	r1, r0, r6              @ encoding: [0x76,0x1f,0x10,0xe6]
2182@ CHECK: ssub16ne	r5, r3, r2      @ encoding: [0x72,0x5f,0x13,0x16]
2183@ CHECK: ssub8	r9, r2, r4              @ encoding: [0xf4,0x9f,0x12,0xe6]
2184@ CHECK: ssub8eq	r5, r1, r2      @ encoding: [0xf2,0x5f,0x11,0x06]
2185
2186@------------------------------------------------------------------------------
2187@ STC{L}/STC2{L}
2188@------------------------------------------------------------------------------
2189        stc2 p0, c8, [r1, #4]
2190        stc2 p1, c7, [r2]
2191        stc2 p2, c6, [r3, #-224]
2192        stc2 p3, c5, [r4, #-120]!
2193        stc2 p4, c4, [r5], #16
2194        stc2 p5, c3, [r6], #-72
2195        stc2l p6, c2, [r7, #4]
2196        stc2l p7, c1, [r8]
2197        stc2l p8, c0, [r9, #-224]
2198        stc2l p9, c1, [r10, #-120]!
2199        stc2l p10, c2, [r11], #16
2200        stc2l p11, c3, [r12], #-72
2201
2202        stc p12, c4, [r0, #4]
2203        stc p13, c5, [r1]
2204        stc p14, c6, [r2, #-224]
2205        stc p15, c7, [r3, #-120]!
2206        stc p5, c8, [r4], #16
2207        stc p4, c9, [r5], #-72
2208        stcl p3, c10, [r6, #4]
2209        stcl p2, c11, [r7]
2210        stcl p1, c12, [r8, #-224]
2211        stcl p0, c13, [r9, #-120]!
2212        stcl p6, c14, [r10], #16
2213        stcl p7, c15, [r11], #-72
2214
2215        stclo p12, c4, [r0, #4]
2216        stchi p13, c5, [r1]
2217        stccs p14, c6, [r2, #-224]
2218        stccc p15, c7, [r3, #-120]!
2219        stceq p5, c8, [r4], #16
2220        stcgt p4, c9, [r5], #-72
2221        stcllt p3, c10, [r6, #4]
2222        stclge p2, c11, [r7]
2223        stclle p1, c12, [r8, #-224]
2224        stclne p0, c13, [r9, #-120]!
2225        stcleq p6, c14, [r10], #16
2226        stclhi p7, c15, [r11], #-72
2227
2228        stc2 p2, c8, [r1], { 25 }
2229
2230@ CHECK: stc2	p0, c8, [r1, #4]        @ encoding: [0x01,0x80,0x81,0xfd]
2231@ CHECK: stc2	p1, c7, [r2]            @ encoding: [0x00,0x71,0x82,0xfd]
2232@ CHECK: stc2	p2, c6, [r3, #-224]     @ encoding: [0x38,0x62,0x03,0xfd]
2233@ CHECK: stc2	p3, c5, [r4, #-120]!    @ encoding: [0x1e,0x53,0x24,0xfd]
2234@ CHECK: stc2	p4, c4, [r5], #16       @ encoding: [0x04,0x44,0xa5,0xfc]
2235@ CHECK: stc2	p5, c3, [r6], #-72      @ encoding: [0x12,0x35,0x26,0xfc]
2236@ CHECK: stc2l	p6, c2, [r7, #4]        @ encoding: [0x01,0x26,0xc7,0xfd]
2237@ CHECK: stc2l	p7, c1, [r8]            @ encoding: [0x00,0x17,0xc8,0xfd]
2238@ CHECK: stc2l	p8, c0, [r9, #-224]     @ encoding: [0x38,0x08,0x49,0xfd]
2239@ CHECK: stc2l	p9, c1, [r10, #-120]!   @ encoding: [0x1e,0x19,0x6a,0xfd]
2240@ CHECK: stc2l	p10, c2, [r11], #16     @ encoding: [0x04,0x2a,0xeb,0xfc]
2241@ CHECK: stc2l	p11, c3, [r12], #-72    @ encoding: [0x12,0x3b,0x6c,0xfc]
2242
2243@ CHECK: stc	p12, c4, [r0, #4]       @ encoding: [0x01,0x4c,0x80,0xed]
2244@ CHECK: stc	p13, c5, [r1]           @ encoding: [0x00,0x5d,0x81,0xed]
2245@ CHECK: stc	p14, c6, [r2, #-224]    @ encoding: [0x38,0x6e,0x02,0xed]
2246@ CHECK: stc	p15, c7, [r3, #-120]!   @ encoding: [0x1e,0x7f,0x23,0xed]
2247@ CHECK: stc	p5, c8, [r4], #16       @ encoding: [0x04,0x85,0xa4,0xec]
2248@ CHECK: stc	p4, c9, [r5], #-72      @ encoding: [0x12,0x94,0x25,0xec]
2249@ CHECK: stcl	p3, c10, [r6, #4]       @ encoding: [0x01,0xa3,0xc6,0xed]
2250@ CHECK: stcl	p2, c11, [r7]           @ encoding: [0x00,0xb2,0xc7,0xed]
2251@ CHECK: stcl	p1, c12, [r8, #-224]    @ encoding: [0x38,0xc1,0x48,0xed]
2252@ CHECK: stcl	p0, c13, [r9, #-120]!   @ encoding: [0x1e,0xd0,0x69,0xed]
2253@ CHECK: stcl	p6, c14, [r10], #16     @ encoding: [0x04,0xe6,0xea,0xec]
2254@ CHECK: stcl	p7, c15, [r11], #-72    @ encoding: [0x12,0xf7,0x6b,0xec]
2255
2256@ CHECK: stclo	p12, c4, [r0, #4]       @ encoding: [0x01,0x4c,0x80,0x3d]
2257@ CHECK: stchi	p13, c5, [r1]           @ encoding: [0x00,0x5d,0x81,0x8d]
2258@ CHECK: stchs	p14, c6, [r2, #-224]    @ encoding: [0x38,0x6e,0x02,0x2d]
2259@ CHECK: stclo	p15, c7, [r3, #-120]!   @ encoding: [0x1e,0x7f,0x23,0x3d]
2260@ CHECK: stceq	p5, c8, [r4], #16       @ encoding: [0x04,0x85,0xa4,0x0c]
2261@ CHECK: stcgt	p4, c9, [r5], #-72      @ encoding: [0x12,0x94,0x25,0xcc]
2262@ CHECK: stcllt	p3, c10, [r6, #4]       @ encoding: [0x01,0xa3,0xc6,0xbd]
2263@ CHECK: stclge	p2, c11, [r7]           @ encoding: [0x00,0xb2,0xc7,0xad]
2264@ CHECK: stclle	p1, c12, [r8, #-224]    @ encoding: [0x38,0xc1,0x48,0xdd]
2265@ CHECK: stclne	p0, c13, [r9, #-120]!   @ encoding: [0x1e,0xd0,0x69,0x1d]
2266@ CHECK: stcleq	p6, c14, [r10], #16     @ encoding: [0x04,0xe6,0xea,0x0c]
2267@ CHECK: stclhi	p7, c15, [r11], #-72    @ encoding: [0x12,0xf7,0x6b,0x8c]
2268
2269@ CHECK: stc2	p2, c8, [r1], {25}      @ encoding: [0x19,0x82,0x81,0xfc]
2270
2271
2272@------------------------------------------------------------------------------
2273@ STM*
2274@------------------------------------------------------------------------------
2275        stm       r2, {r1,r3-r6,sp}
2276        stmia     r3, {r1,r3-r6,lr}
2277        stmib     r4, {r1,r3-r6,sp}
2278        stmda     r5, {r1,r3-r6,sp}
2279        stmdb     r6, {r1,r3-r6,r8}
2280        stmfd     sp, {r1,r3-r6,sp}
2281
2282        @ with update
2283        stm       r8!, {r1,r3-r6,sp}
2284        stmib     r9!, {r1,r3-r6,sp}
2285        stmda     sp!, {r1,r3-r6}
2286        stmdb     r0!, {r1,r5,r7,sp}
2287
2288@ CHECK: stm	r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x82,0xe8]
2289@ CHECK: stm	r3, {lr, r1, r3, r4, r5, r6} @ encoding: [0x7a,0x40,0x83,0xe8]
2290@ CHECK: stmib	r4, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x84,0xe9]
2291@ CHECK: stmda	r5, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x05,0xe8]
2292@ CHECK: stmdb	r6, {r1, r3, r4, r5, r6, r8} @ encoding: [0x7a,0x01,0x06,0xe9]
2293@ CHECK: stmdb	sp, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x0d,0xe9]
2294
2295@ CHECK: stm	r8!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa8,0xe8]
2296@ CHECK: stmib	r9!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa9,0xe9]
2297@ CHECK: stmda	sp!, {r1, r3, r4, r5, r6}     @ encoding: [0x7a,0x00,0x2d,0xe8]
2298@ CHECK: stmdb	r0!, {r1, r5, r7, sp}         @ encoding: [0xa2,0x20,0x20,0xe9]
2299
2300
2301@------------------------------------------------------------------------------
2302@ STREX/STREXB/STREXH/STREXD
2303@------------------------------------------------------------------------------
2304        strexb  r1, r3, [r4]
2305        strexh  r4, r2, [r5]
2306        strex  r2, r1, [r7]
2307        strexd  r6, r2, r3, [r8]
2308
2309@ CHECK: strexb	r1, r3, [r4]            @ encoding: [0x93,0x1f,0xc4,0xe1]
2310@ CHECK: strexh	r4, r2, [r5]            @ encoding: [0x92,0x4f,0xe5,0xe1]
2311@ CHECK: strex	r2, r1, [r7]            @ encoding: [0x91,0x2f,0x87,0xe1]
2312@ CHECK: strexd	r6, r2, r3, [r8]        @ encoding: [0x92,0x6f,0xa8,0xe1]
2313
2314@------------------------------------------------------------------------------
2315@ STR
2316@------------------------------------------------------------------------------
2317        strpl	r3, [r10, #-0]!
2318        strpl	r3, [r10, #0]!
2319
2320@ CHECK: strpl	r3, [r10, #-0]!         @ encoding: [0x00,0x30,0x2a,0x55]
2321@ CHECK: strpl	r3, [r10]!              @ encoding: [0x00,0x30,0xaa,0x55]
2322
2323@------------------------------------------------------------------------------
2324@ SUB
2325@------------------------------------------------------------------------------
2326        sub r4, r5, #0xf000
2327        sub r4, r5, r6
2328        sub r4, r5, r6, lsl #5
2329        sub r4, r5, r6, lsr #5
2330        sub r4, r5, r6, lsr #5
2331        sub r4, r5, r6, asr #5
2332        sub r4, r5, r6, ror #5
2333        sub r6, r7, r8, lsl r9
2334        sub r6, r7, r8, lsr r9
2335        sub r6, r7, r8, asr r9
2336        sub r6, r7, r8, ror r9
2337
2338        @ destination register is optional
2339        sub r5, #0xf000
2340        sub r4, r5
2341        sub r4, r5, lsl #5
2342        sub r4, r5, lsr #5
2343        sub r4, r5, lsr #5
2344        sub r4, r5, asr #5
2345        sub r4, r5, ror #5
2346        sub r6, r7, lsl r9
2347        sub r6, r7, lsr r9
2348        sub r6, r7, asr r9
2349        sub r6, r7, ror r9
2350
2351@ CHECK: sub	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x45,0xe2]
2352@ CHECK: sub	r4, r5, r6              @ encoding: [0x06,0x40,0x45,0xe0]
2353@ CHECK: sub	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x45,0xe0]
2354@ CHECK: sub	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x45,0xe0]
2355@ CHECK: sub	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x45,0xe0]
2356@ CHECK: sub	r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x45,0xe0]
2357@ CHECK: sub	r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x45,0xe0]
2358@ CHECK: sub	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x47,0xe0]
2359@ CHECK: sub	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x47,0xe0]
2360@ CHECK: sub	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x47,0xe0]
2361@ CHECK: sub	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x47,0xe0]
2362
2363
2364@ CHECK: sub	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x45,0xe2]
2365@ CHECK: sub	r4, r4, r5              @ encoding: [0x05,0x40,0x44,0xe0]
2366@ CHECK: sub	r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x44,0xe0]
2367@ CHECK: sub	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x44,0xe0]
2368@ CHECK: sub	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x44,0xe0]
2369@ CHECK: sub	r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x44,0xe0]
2370@ CHECK: sub	r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x44,0xe0]
2371@ CHECK: sub	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x46,0xe0]
2372@ CHECK: sub	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x46,0xe0]
2373@ CHECK: sub	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x46,0xe0]
2374@ CHECK: sub	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x46,0xe0]
2375
2376    @ Test right shift by 32, which is encoded as 0
2377    sub r3, r1, r2, lsr #32
2378    sub r3, r1, r2, asr #32
2379@ CHECK: sub	r3, r1, r2, lsr #32     @ encoding: [0x22,0x30,0x41,0xe0]
2380@ CHECK: sub	r3, r1, r2, asr #32     @ encoding: [0x42,0x30,0x41,0xe0]
2381
2382@------------------------------------------------------------------------------
2383@ SVC
2384@------------------------------------------------------------------------------
2385        svc #16
2386        svc #0
2387        svc #0xffffff
2388
2389@ CHECK: svc	#16                     @ encoding: [0x10,0x00,0x00,0xef]
2390@ CHECK: svc	#0                      @ encoding: [0x00,0x00,0x00,0xef]
2391@ CHECK: svc	#16777215               @ encoding: [0xff,0xff,0xff,0xef]
2392
2393
2394@------------------------------------------------------------------------------
2395@ SWP/SWPB
2396@------------------------------------------------------------------------------
2397        swp r1, r2, [r3]
2398        swp r4, r4, [r6]
2399        swpb r5, r1, [r9]
2400
2401@ CHECK: swp	r1, r2, [r3]            @ encoding: [0x92,0x10,0x03,0xe1]
2402@ CHECK: swp	r4, r4, [r6]            @ encoding: [0x94,0x40,0x06,0xe1]
2403@ CHECK: swpb	r5, r1, [r9]            @ encoding: [0x91,0x50,0x49,0xe1]
2404
2405
2406@------------------------------------------------------------------------------
2407@ SXTAB
2408@------------------------------------------------------------------------------
2409        sxtab r2, r3, r4
2410        sxtab r4, r5, r6, ror #0
2411        sxtablt r6, r2, r9, ror #8
2412        sxtab r5, r1, r4, ror #16
2413        sxtab r7, r8, r3, ror #24
2414
2415@ CHECK: sxtab	r2, r3, r4              @ encoding: [0x74,0x20,0xa3,0xe6]
2416@ CHECK: sxtab	r4, r5, r6              @ encoding: [0x76,0x40,0xa5,0xe6]
2417@ CHECK: sxtablt r6, r2, r9, ror #8     @ encoding: [0x79,0x64,0xa2,0xb6]
2418@ CHECK: sxtab	r5, r1, r4, ror #16     @ encoding: [0x74,0x58,0xa1,0xe6]
2419@ CHECK: sxtab	r7, r8, r3, ror #24     @ encoding: [0x73,0x7c,0xa8,0xe6]
2420
2421
2422@------------------------------------------------------------------------------
2423@ SXTAB16
2424@------------------------------------------------------------------------------
2425        sxtab16ge r0, r1, r4
2426        sxtab16 r6, r2, r7, ror #0
2427        sxtab16 r3, r5, r8, ror #8
2428        sxtab16 r3, r2, r1, ror #16
2429        sxtab16eq r1, r2, r3, ror #24
2430
2431@ CHECK: sxtab16ge	r0, r1, r4      @ encoding: [0x74,0x00,0x81,0xa6]
2432@ CHECK: sxtab16	r6, r2, r7      @ encoding: [0x77,0x60,0x82,0xe6]
2433@ CHECK: sxtab16 r3, r5, r8, ror #8     @ encoding: [0x78,0x34,0x85,0xe6]
2434@ CHECK: sxtab16 r3, r2, r1, ror #16    @ encoding: [0x71,0x38,0x82,0xe6]
2435@ CHECK: sxtab16eq r1, r2, r3, ror #24  @ encoding: [0x73,0x1c,0x82,0x06]
2436
2437@------------------------------------------------------------------------------
2438@ SXTAH
2439@------------------------------------------------------------------------------
2440        sxtah r1, r3, r9
2441        sxtahhi r6, r1, r6, ror #0
2442        sxtah r3, r8, r3, ror #8
2443        sxtahlo r2, r2, r4, ror #16
2444        sxtah r9, r3, r3, ror #24
2445
2446@ CHECK: sxtah	r1, r3, r9              @ encoding: [0x79,0x10,0xb3,0xe6]
2447@ CHECK: sxtahhi	r6, r1, r6      @ encoding: [0x76,0x60,0xb1,0x86]
2448@ CHECK: sxtah	r3, r8, r3, ror #8      @ encoding: [0x73,0x34,0xb8,0xe6]
2449@ CHECK: sxtahlo r2, r2, r4, ror #16    @ encoding: [0x74,0x28,0xb2,0x36]
2450@ CHECK: sxtah	r9, r3, r3, ror #24     @ encoding: [0x73,0x9c,0xb3,0xe6]
2451
2452@------------------------------------------------------------------------------
2453@ SXTB
2454@------------------------------------------------------------------------------
2455        sxtbge r2, r4
2456        sxtb r5, r6, ror #0
2457        sxtb r6, r9, ror #8
2458        sxtbcc r5, r1, ror #16
2459        sxtb r8, r3, ror #24
2460
2461@ CHECK: sxtbge	r2, r4                  @ encoding: [0x74,0x20,0xaf,0xa6]
2462@ CHECK: sxtb	r5, r6                  @ encoding: [0x76,0x50,0xaf,0xe6]
2463@ CHECK: sxtb	r6, r9, ror #8          @ encoding: [0x79,0x64,0xaf,0xe6]
2464@ CHECK: sxtblo	r5, r1, ror #16         @ encoding: [0x71,0x58,0xaf,0x36]
2465@ CHECK: sxtb	r8, r3, ror #24         @ encoding: [0x73,0x8c,0xaf,0xe6]
2466
2467
2468@------------------------------------------------------------------------------
2469@ SXTB16
2470@------------------------------------------------------------------------------
2471        sxtb16 r1, r4
2472        sxtb16 r6, r7, ror #0
2473        sxtb16cs r3, r5, ror #8
2474        sxtb16 r3, r1, ror #16
2475        sxtb16ge r2, r3, ror #24
2476
2477@ CHECK: sxtb16	r1, r4                  @ encoding: [0x74,0x10,0x8f,0xe6]
2478@ CHECK: sxtb16	r6, r7                  @ encoding: [0x77,0x60,0x8f,0xe6]
2479@ CHECK: sxtb16hs	r3, r5, ror #8  @ encoding: [0x75,0x34,0x8f,0x26]
2480@ CHECK: sxtb16	r3, r1, ror #16         @ encoding: [0x71,0x38,0x8f,0xe6]
2481@ CHECK: sxtb16ge	r2, r3, ror #24 @ encoding: [0x73,0x2c,0x8f,0xa6]
2482
2483
2484@------------------------------------------------------------------------------
2485@ SXTH
2486@------------------------------------------------------------------------------
2487        sxthne r3, r9
2488        sxth r1, r6, ror #0
2489        sxth r3, r8, ror #8
2490        sxthle r2, r2, ror #16
2491        sxth r9, r3, ror #24
2492
2493@ CHECK: sxthne	r3, r9                  @ encoding: [0x79,0x30,0xbf,0x16]
2494@ CHECK: sxth	r1, r6                  @ encoding: [0x76,0x10,0xbf,0xe6]
2495@ CHECK: sxth	r3, r8, ror #8          @ encoding: [0x78,0x34,0xbf,0xe6]
2496@ CHECK: sxthle	r2, r2, ror #16         @ encoding: [0x72,0x28,0xbf,0xd6]
2497@ CHECK: sxth	r9, r3, ror #24         @ encoding: [0x73,0x9c,0xbf,0xe6]
2498
2499
2500@------------------------------------------------------------------------------
2501@ TEQ
2502@------------------------------------------------------------------------------
2503        teq r5, #0xf000
2504        teq r4, r5
2505        teq r4, r5, lsl #5
2506        teq r4, r5, lsr #5
2507        teq r4, r5, lsr #5
2508        teq r4, r5, asr #5
2509        teq r4, r5, ror #5
2510        teq r6, r7, lsl r9
2511        teq r6, r7, lsr r9
2512        teq r6, r7, asr r9
2513        teq r6, r7, ror r9
2514
2515@ CHECK: teq	r5, #61440              @ encoding: [0x0f,0x0a,0x35,0xe3]
2516@ CHECK: teq	r4, r5                  @ encoding: [0x05,0x00,0x34,0xe1]
2517@ CHECK: teq	r4, r5, lsl #5          @ encoding: [0x85,0x02,0x34,0xe1]
2518@ CHECK: teq	r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x34,0xe1]
2519@ CHECK: teq	r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x34,0xe1]
2520@ CHECK: teq	r4, r5, asr #5          @ encoding: [0xc5,0x02,0x34,0xe1]
2521@ CHECK: teq	r4, r5, ror #5          @ encoding: [0xe5,0x02,0x34,0xe1]
2522@ CHECK: teq	r6, r7, lsl r9          @ encoding: [0x17,0x09,0x36,0xe1]
2523@ CHECK: teq	r6, r7, lsr r9          @ encoding: [0x37,0x09,0x36,0xe1]
2524@ CHECK: teq	r6, r7, asr r9          @ encoding: [0x57,0x09,0x36,0xe1]
2525@ CHECK: teq	r6, r7, ror r9          @ encoding: [0x77,0x09,0x36,0xe1]
2526
2527
2528@------------------------------------------------------------------------------
2529@ TST
2530@------------------------------------------------------------------------------
2531        tst r5, #0xf000
2532        tst r4, r5
2533        tst r4, r5, lsl #5
2534        tst r4, r5, lsr #5
2535        tst r4, r5, lsr #5
2536        tst r4, r5, asr #5
2537        tst r4, r5, ror #5
2538        tst r6, r7, lsl r9
2539        tst r6, r7, lsr r9
2540        tst r6, r7, asr r9
2541        tst r6, r7, ror r9
2542
2543@ CHECK: tst	r5, #61440              @ encoding: [0x0f,0x0a,0x15,0xe3]
2544@ CHECK: tst	r4, r5                  @ encoding: [0x05,0x00,0x14,0xe1]
2545@ CHECK: tst	r4, r5, lsl #5          @ encoding: [0x85,0x02,0x14,0xe1]
2546@ CHECK: tst	r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x14,0xe1]
2547@ CHECK: tst	r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x14,0xe1]
2548@ CHECK: tst	r4, r5, asr #5          @ encoding: [0xc5,0x02,0x14,0xe1]
2549@ CHECK: tst	r4, r5, ror #5          @ encoding: [0xe5,0x02,0x14,0xe1]
2550@ CHECK: tst	r6, r7, lsl r9          @ encoding: [0x17,0x09,0x16,0xe1]
2551@ CHECK: tst	r6, r7, lsr r9          @ encoding: [0x37,0x09,0x16,0xe1]
2552@ CHECK: tst	r6, r7, asr r9          @ encoding: [0x57,0x09,0x16,0xe1]
2553@ CHECK: tst	r6, r7, ror r9          @ encoding: [0x77,0x09,0x16,0xe1]
2554
2555
2556@------------------------------------------------------------------------------
2557@ UADD16/UADD8
2558@------------------------------------------------------------------------------
2559        uadd16 r1, r2, r3
2560        uadd16gt r1, r2, r3
2561        uadd8 r1, r2, r3
2562        uadd8le r1, r2, r3
2563
2564@ CHECK: uadd16	r1, r2, r3              @ encoding: [0x13,0x1f,0x52,0xe6]
2565@ CHECK: uadd16gt	r1, r2, r3      @ encoding: [0x13,0x1f,0x52,0xc6]
2566@ CHECK: uadd8	r1, r2, r3              @ encoding: [0x93,0x1f,0x52,0xe6]
2567@ CHECK: uadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x52,0xd6]
2568
2569
2570@------------------------------------------------------------------------------
2571@ UASX
2572@------------------------------------------------------------------------------
2573        uasx r9, r12, r0
2574        uasxeq r9, r12, r0
2575
2576@ CHECK: uasx	r9, r12, r0             @ encoding: [0x30,0x9f,0x5c,0xe6]
2577@ CHECK: uasxeq	r9, r12, r0             @ encoding: [0x30,0x9f,0x5c,0x06]
2578
2579
2580@------------------------------------------------------------------------------
2581@ UBFX
2582@------------------------------------------------------------------------------
2583        ubfx r4, r5, #16, #1
2584        ubfxgt r4, r5, #16, #16
2585
2586@ CHECK: ubfx	r4, r5, #16, #1         @ encoding: [0x55,0x48,0xe0,0xe7]
2587@ CHECK: ubfxgt	r4, r5, #16, #16        @ encoding: [0x55,0x48,0xef,0xc7]
2588
2589
2590@------------------------------------------------------------------------------
2591@ UHADD16/UHADD8
2592@------------------------------------------------------------------------------
2593        uhadd16 r4, r8, r2
2594        uhadd16gt r4, r8, r2
2595        uhadd8 r4, r8, r2
2596        uhadd8gt r4, r8, r2
2597
2598@ CHECK: uhadd16	r4, r8, r2      @ encoding: [0x12,0x4f,0x78,0xe6]
2599@ CHECK: uhadd16gt	r4, r8, r2      @ encoding: [0x12,0x4f,0x78,0xc6]
2600@ CHECK: uhadd8	r4, r8, r2              @ encoding: [0x92,0x4f,0x78,0xe6]
2601@ CHECK: uhadd8gt	r4, r8, r2      @ encoding: [0x92,0x4f,0x78,0xc6]
2602
2603
2604@------------------------------------------------------------------------------
2605@ UHASX
2606@------------------------------------------------------------------------------
2607        uhasx r4, r8, r2
2608        uhasxgt r4, r8, r2
2609
2610@ CHECK: uhasx	r4, r8, r2              @ encoding: [0x32,0x4f,0x78,0xe6]
2611@ CHECK: uhasxgt r4, r8, r2             @ encoding: [0x32,0x4f,0x78,0xc6]
2612
2613
2614@------------------------------------------------------------------------------
2615@ UHSUB16/UHSUB8
2616@------------------------------------------------------------------------------
2617        uhsub16 r4, r8, r2
2618        uhsub16gt r4, r8, r2
2619        uhsub8 r4, r8, r2
2620        uhsub8gt r4, r8, r2
2621
2622@ CHECK: uhsub16	r4, r8, r2      @ encoding: [0x72,0x4f,0x78,0xe6]
2623@ CHECK: uhsub16gt	r4, r8, r2      @ encoding: [0x72,0x4f,0x78,0xc6]
2624@ CHECK: uhsub8	r4, r8, r2              @ encoding: [0xf2,0x4f,0x78,0xe6]
2625@ CHECK: uhsub8gt	r4, r8, r2      @ encoding: [0xf2,0x4f,0x78,0xc6]
2626
2627
2628@------------------------------------------------------------------------------
2629@ UMAAL
2630@------------------------------------------------------------------------------
2631        umaal r3, r4, r5, r6
2632        umaallt r3, r4, r5, r6
2633
2634@ CHECK: umaal	r3, r4, r5, r6          @ encoding: [0x95,0x36,0x44,0xe0]
2635@ CHECK: umaallt	r3, r4, r5, r6  @ encoding: [0x95,0x36,0x44,0xb0]
2636
2637
2638@------------------------------------------------------------------------------
2639@ UMLAL
2640@------------------------------------------------------------------------------
2641        umlal r2, r4, r6, r8
2642        umlalgt r6, r1, r2, r6
2643        umlals r2, r9, r2, r3
2644        umlalseq r3, r5, r1, r2
2645
2646@ CHECK: umlal	r2, r4, r6, r8          @ encoding: [0x96,0x28,0xa4,0xe0]
2647@ CHECK: umlalgt	r6, r1, r2, r6  @ encoding: [0x92,0x66,0xa1,0xc0]
2648@ CHECK: umlals	r2, r9, r2, r3          @ encoding: [0x92,0x23,0xb9,0xe0]
2649@ CHECK: umlalseq	r3, r5, r1, r2  @ encoding: [0x91,0x32,0xb5,0x00]
2650
2651
2652@------------------------------------------------------------------------------
2653@ UMULL
2654@------------------------------------------------------------------------------
2655        umull r2, r4, r6, r8
2656        umullgt r6, r1, r2, r6
2657        umulls r2, r9, r2, r3
2658        umullseq r3, r5, r1, r2
2659
2660@ CHECK: umull	r2, r4, r6, r8          @ encoding: [0x96,0x28,0x84,0xe0]
2661@ CHECK: umullgt	r6, r1, r2, r6  @ encoding: [0x92,0x66,0x81,0xc0]
2662@ CHECK: umulls	r2, r9, r2, r3          @ encoding: [0x92,0x23,0x99,0xe0]
2663@ CHECK: umullseq	r3, r5, r1, r2  @ encoding: [0x91,0x32,0x95,0x00]
2664
2665
2666@------------------------------------------------------------------------------
2667@ UQADD16/UQADD8
2668@------------------------------------------------------------------------------
2669        uqadd16 r1, r2, r3
2670        uqadd16gt r4, r7, r9
2671        uqadd8 r3, r4, r8
2672        uqadd8le r8, r1, r2
2673
2674
2675@ CHECK: uqadd16	r1, r2, r3      @ encoding: [0x13,0x1f,0x62,0xe6]
2676@ CHECK: uqadd16gt	r4, r7, r9      @ encoding: [0x19,0x4f,0x67,0xc6]
2677@ CHECK: uqadd8	r3, r4, r8              @ encoding: [0x98,0x3f,0x64,0xe6]
2678@ CHECK: uqadd8le	r8, r1, r2      @ encoding: [0x92,0x8f,0x61,0xd6]
2679
2680
2681@------------------------------------------------------------------------------
2682@ UQASX
2683@------------------------------------------------------------------------------
2684        uqasx r2, r4, r1
2685        uqasxhi r5, r2, r9
2686
2687@ CHECK: uqasx	r2, r4, r1              @ encoding: [0x31,0x2f,0x64,0xe6]
2688@ CHECK: uqasxhi	r5, r2, r9      @ encoding: [0x39,0x5f,0x62,0x86]
2689
2690
2691@------------------------------------------------------------------------------
2692@ UQSAX
2693@------------------------------------------------------------------------------
2694        uqsax r1, r3, r7
2695        uqsaxal r3, r6, r2
2696
2697@ CHECK: uqsax	r1, r3, r7              @ encoding: [0x57,0x1f,0x63,0xe6]
2698@ CHECK: uqsax	r3, r6, r2              @ encoding: [0x52,0x3f,0x66,0xe6]
2699
2700
2701@------------------------------------------------------------------------------
2702@ UQSUB16/UQSUB8
2703@------------------------------------------------------------------------------
2704        uqsub16 r1, r5, r3
2705        uqsub16gt r3, r2, r5
2706        uqsub8 r2, r1, r4
2707        uqsub8le r4, r6, r9
2708
2709@ CHECK: uqsub16	r1, r5, r3      @ encoding: [0x73,0x1f,0x65,0xe6]
2710@ CHECK: uqsub16gt	r3, r2, r5      @ encoding: [0x75,0x3f,0x62,0xc6]
2711@ CHECK: uqsub8	r2, r1, r4              @ encoding: [0xf4,0x2f,0x61,0xe6]
2712@ CHECK: uqsub8le	r4, r6, r9      @ encoding: [0xf9,0x4f,0x66,0xd6]
2713
2714
2715@------------------------------------------------------------------------------
2716@ USADA8/USAD8
2717@------------------------------------------------------------------------------
2718        usad8 r2, r1, r4
2719        usad8le r4, r6, r9
2720        usada8 r1, r5, r3, r7
2721        usada8gt r3, r2, r5, r1
2722
2723@ CHECK: usad8	r2, r1, r4              @ encoding: [0x11,0xf4,0x82,0xe7]
2724@ CHECK: usad8le	r4, r6, r9      @ encoding: [0x16,0xf9,0x84,0xd7]
2725@ CHECK: usada8	r1, r5, r3, r7          @ encoding: [0x15,0x73,0x81,0xe7]
2726@ CHECK: usada8gt	r3, r2, r5, r1  @ encoding: [0x12,0x15,0x83,0xc7]
2727
2728
2729@------------------------------------------------------------------------------
2730@ USAT
2731@------------------------------------------------------------------------------
2732        usat	r8, #1, r10
2733        usat	r8, #4, r10, lsl #0
2734        usat	r8, #5, r10, lsl #31
2735        usat	r8, #31, r10, asr #32
2736        usat	r8, #16, r10, asr #1
2737
2738@ CHECK: usat	r8, #1, r10             @ encoding: [0x1a,0x80,0xe1,0xe6]
2739@ CHECK: usat	r8, #4, r10             @ encoding: [0x1a,0x80,0xe4,0xe6]
2740@ CHECK: usat	r8, #5, r10, lsl #31    @ encoding: [0x9a,0x8f,0xe5,0xe6]
2741@ CHECK: usat	r8, #31, r10, asr #32   @ encoding: [0x5a,0x80,0xff,0xe6]
2742@ CHECK: usat	r8, #16, r10, asr #1    @ encoding: [0xda,0x80,0xf0,0xe6]
2743
2744
2745@------------------------------------------------------------------------------
2746@ USAT16
2747@------------------------------------------------------------------------------
2748        usat16	r2, #2, r7
2749        usat16	r3, #15, r5
2750
2751@ CHECK: usat16	r2, #2, r7              @ encoding: [0x37,0x2f,0xe2,0xe6]
2752@ CHECK: usat16	r3, #15, r5             @ encoding: [0x35,0x3f,0xef,0xe6]
2753
2754
2755@------------------------------------------------------------------------------
2756@ USAX
2757@------------------------------------------------------------------------------
2758        usax r2, r3, r4
2759        usaxne r2, r3, r4
2760
2761@ CHECK: usax	r2, r3, r4              @ encoding: [0x54,0x2f,0x53,0xe6]
2762@ CHECK: usaxne	r2, r3, r4              @ encoding: [0x54,0x2f,0x53,0x16]
2763
2764@------------------------------------------------------------------------------
2765@ USUB16/USUB8
2766@------------------------------------------------------------------------------
2767        usub16 r4, r2, r7
2768        usub16hi r1, r1, r3
2769        usub8 r1, r8, r5
2770        usub8le r9, r2, r3
2771
2772@ CHECK: usub16	r4, r2, r7              @ encoding: [0x77,0x4f,0x52,0xe6]
2773@ CHECK: usub16hi	r1, r1, r3      @ encoding: [0x73,0x1f,0x51,0x86]
2774@ CHECK: usub8	r1, r8, r5              @ encoding: [0xf5,0x1f,0x58,0xe6]
2775@ CHECK: usub8le	r9, r2, r3      @ encoding: [0xf3,0x9f,0x52,0xd6]
2776
2777
2778@------------------------------------------------------------------------------
2779@ UXTAB
2780@------------------------------------------------------------------------------
2781        uxtab r2, r3, r4
2782        uxtab r4, r5, r6, ror #0
2783        uxtablt r6, r2, r9, ror #8
2784        uxtab r5, r1, r4, ror #16
2785        uxtab r7, r8, r3, ror #24
2786
2787@ CHECK: uxtab	r2, r3, r4              @ encoding: [0x74,0x20,0xe3,0xe6]
2788@ CHECK: uxtab	r4, r5, r6              @ encoding: [0x76,0x40,0xe5,0xe6]
2789@ CHECK: uxtablt r6, r2, r9, ror #8     @ encoding: [0x79,0x64,0xe2,0xb6]
2790@ CHECK: uxtab	r5, r1, r4, ror #16     @ encoding: [0x74,0x58,0xe1,0xe6]
2791@ CHECK: uxtab	r7, r8, r3, ror #24     @ encoding: [0x73,0x7c,0xe8,0xe6]
2792
2793
2794@------------------------------------------------------------------------------
2795@ UXTAB16
2796@------------------------------------------------------------------------------
2797        uxtab16ge r0, r1, r4
2798        uxtab16 r6, r2, r7, ror #0
2799        uxtab16 r3, r5, r8, ror #8
2800        uxtab16 r3, r2, r1, ror #16
2801        uxtab16eq r1, r2, r3, ror #24
2802
2803@ CHECK: uxtab16ge	r0, r1, r4      @ encoding: [0x74,0x00,0xc1,0xa6]
2804@ CHECK: uxtab16	r6, r2, r7      @ encoding: [0x77,0x60,0xc2,0xe6]
2805@ CHECK: uxtab16	r3, r5, r8, ror #8 @ encoding: [0x78,0x34,0xc5,0xe6]
2806@ CHECK: uxtab16	r3, r2, r1, ror #16 @ encoding: [0x71,0x38,0xc2,0xe6]
2807@ CHECK: uxtab16eq	r1, r2, r3, ror #24 @ encoding: [0x73,0x1c,0xc2,0x06]
2808
2809
2810@------------------------------------------------------------------------------
2811@ UXTAH
2812@------------------------------------------------------------------------------
2813        uxtah r1, r3, r9
2814        uxtahhi r6, r1, r6, ror #0
2815        uxtah r3, r8, r3, ror #8
2816        uxtahlo r2, r2, r4, ror #16
2817        uxtah r9, r3, r3, ror #24
2818
2819@ CHECK: uxtah	r1, r3, r9              @ encoding: [0x79,0x10,0xf3,0xe6]
2820@ CHECK: uxtahhi	r6, r1, r6      @ encoding: [0x76,0x60,0xf1,0x86]
2821@ CHECK: uxtah	r3, r8, r3, ror #8      @ encoding: [0x73,0x34,0xf8,0xe6]
2822@ CHECK: uxtahlo	r2, r2, r4, ror #16 @ encoding: [0x74,0x28,0xf2,0x36]
2823@ CHECK: uxtah	r9, r3, r3, ror #24     @ encoding: [0x73,0x9c,0xf3,0xe6]
2824
2825@------------------------------------------------------------------------------
2826@ UXTB
2827@------------------------------------------------------------------------------
2828        uxtbge r2, r4
2829        uxtb r5, r6, ror #0
2830        uxtb r6, r9, ror #8
2831        uxtbcc r5, r1, ror #16
2832        uxtb r8, r3, ror #24
2833
2834@ CHECK: uxtbge	r2, r4                  @ encoding: [0x74,0x20,0xef,0xa6]
2835@ CHECK: uxtb	r5, r6                  @ encoding: [0x76,0x50,0xef,0xe6]
2836@ CHECK: uxtb	r6, r9, ror #8          @ encoding: [0x79,0x64,0xef,0xe6]
2837@ CHECK: uxtblo	r5, r1, ror #16         @ encoding: [0x71,0x58,0xef,0x36]
2838@ CHECK: uxtb	r8, r3, ror #24         @ encoding: [0x73,0x8c,0xef,0xe6]
2839
2840
2841@------------------------------------------------------------------------------
2842@ UXTB16
2843@------------------------------------------------------------------------------
2844        uxtb16 r1, r4
2845        uxtb16 r6, r7, ror #0
2846        uxtb16cs r3, r5, ror #8
2847        uxtb16 r3, r1, ror #16
2848        uxtb16ge r2, r3, ror #24
2849
2850@ CHECK: uxtb16	r1, r4                  @ encoding: [0x74,0x10,0xcf,0xe6]
2851@ CHECK: uxtb16	r6, r7                  @ encoding: [0x77,0x60,0xcf,0xe6]
2852@ CHECK: uxtb16hs	r3, r5, ror #8  @ encoding: [0x75,0x34,0xcf,0x26]
2853@ CHECK: uxtb16	r3, r1, ror #16         @ encoding: [0x71,0x38,0xcf,0xe6]
2854@ CHECK: uxtb16ge	r2, r3, ror #24 @ encoding: [0x73,0x2c,0xcf,0xa6]
2855
2856
2857@------------------------------------------------------------------------------
2858@ UXTH
2859@------------------------------------------------------------------------------
2860        uxthne r3, r9
2861        uxth r1, r6, ror #0
2862        uxth r3, r8, ror #8
2863        uxthle r2, r2, ror #16
2864        uxth r9, r3, ror #24
2865
2866@ CHECK: uxthne	r3, r9                  @ encoding: [0x79,0x30,0xff,0x16]
2867@ CHECK: uxth	r1, r6                  @ encoding: [0x76,0x10,0xff,0xe6]
2868@ CHECK: uxth	r3, r8, ror #8          @ encoding: [0x78,0x34,0xff,0xe6]
2869@ CHECK: uxthle	r2, r2, ror #16         @ encoding: [0x72,0x28,0xff,0xd6]
2870@ CHECK: uxth	r9, r3, ror #24         @ encoding: [0x73,0x9c,0xff,0xe6]
2871
2872
2873@------------------------------------------------------------------------------
2874@ WFE/WFI/YIELD
2875@------------------------------------------------------------------------------
2876        wfe
2877        wfehi
2878        wfi
2879        wfilt
2880        yield
2881        yieldne
2882        hint #5
2883        hint #4
2884        hint #3
2885        hint #2
2886        hint #1
2887        hint #0
2888
2889@ CHECK: wfe                            @ encoding: [0x02,0xf0,0x20,0xe3]
2890@ CHECK: wfehi                          @ encoding: [0x02,0xf0,0x20,0x83]
2891@ CHECK: wfi                            @ encoding: [0x03,0xf0,0x20,0xe3]
2892@ CHECK: wfilt                          @ encoding: [0x03,0xf0,0x20,0xb3]
2893@ CHECK: yield                          @ encoding: [0x01,0xf0,0x20,0xe3]
2894@ CHECK: yieldne                        @ encoding: [0x01,0xf0,0x20,0x13]
2895@ CHECK: hint	#5                      @ encoding: [0x05,0xf0,0x20,0xe3]
2896@ CHECK: sev                            @ encoding: [0x04,0xf0,0x20,0xe3]
2897@ CHECK: wfi                            @ encoding: [0x03,0xf0,0x20,0xe3]
2898@ CHECK: wfe                            @ encoding: [0x02,0xf0,0x20,0xe3]
2899@ CHECK: yield                          @ encoding: [0x01,0xf0,0x20,0xe3]
2900@ CHECK: nop                            @ encoding: [0x00,0xf0,0x20,0xe3]
2901