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