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