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