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