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