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