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