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