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