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