38aa1067c2d9896454c7133bebbd54f35568abb7
[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 @------------------------------------------------------------------------------
1458 @ SHADD16/SHADD8
1459 @------------------------------------------------------------------------------
1460         shadd16 r4, r8, r2
1461         shadd16gt r4, r8, r2
1462         shadd8 r4, r8, r2
1463         shadd8gt r4, r8, r2
1464
1465 @ CHECK: shadd16        r4, r8, r2      @ encoding: [0x12,0x4f,0x38,0xe6]
1466 @ CHECK: shadd16gt      r4, r8, r2      @ encoding: [0x12,0x4f,0x38,0xc6]
1467 @ CHECK: shadd8 r4, r8, r2              @ encoding: [0x92,0x4f,0x38,0xe6]
1468 @ CHECK: shadd8gt       r4, r8, r2      @ encoding: [0x92,0x4f,0x38,0xc6]
1469
1470
1471 @------------------------------------------------------------------------------
1472 @ SHASX
1473 @------------------------------------------------------------------------------
1474         shasx r4, r8, r2
1475         shasxgt r4, r8, r2
1476
1477 @ CHECK: shasx  r4, r8, r2              @ encoding: [0x32,0x4f,0x38,0xe6]
1478 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0x32,0x4f,0x38,0xc6]
1479
1480
1481 @------------------------------------------------------------------------------
1482 @ SHSUB16/SHSUB8
1483 @------------------------------------------------------------------------------
1484         shsub16 r4, r8, r2
1485         shsub16gt r4, r8, r2
1486         shsub8 r4, r8, r2
1487         shsub8gt r4, r8, r2
1488
1489 @ CHECK: shsub16        r4, r8, r2      @ encoding: [0x72,0x4f,0x38,0xe6]
1490 @ CHECK: shsub16gt      r4, r8, r2      @ encoding: [0x72,0x4f,0x38,0xc6]
1491 @ CHECK: shsub8 r4, r8, r2              @ encoding: [0xf2,0x4f,0x38,0xe6]
1492 @ CHECK: shsub8gt       r4, r8, r2      @ encoding: [0xf2,0x4f,0x38,0xc6]
1493
1494 @------------------------------------------------------------------------------
1495 @ SMC
1496 @------------------------------------------------------------------------------
1497         smc #0xf
1498         smceq #0
1499
1500 @ CHECK: smc    #15                     @ encoding: [0x7f,0x00,0x60,0xe1]
1501 @ CHECK: smceq  #0                      @ encoding: [0x70,0x00,0x60,0x01]
1502
1503 @------------------------------------------------------------------------------
1504 @ SMLABB/SMLABT/SMLATB/SMLATT
1505 @------------------------------------------------------------------------------
1506         smlabb r3, r1, r9, r0
1507         smlabt r5, r6, r4, r1
1508         smlatb r4, r2, r3, r2
1509         smlatt r8, r3, r8, r4
1510         smlabbge r3, r1, r9, r0
1511         smlabtle r5, r6, r4, r1
1512         smlatbne r4, r2, r3, r2
1513         smlatteq r8, r3, r8, r4
1514
1515 @ CHECK: smlabb r3, r1, r9, r0          @ encoding: [0x81,0x09,0x03,0xe1]
1516 @ CHECK: smlabt r5, r6, r4, r1          @ encoding: [0xc6,0x14,0x05,0xe1]
1517 @ CHECK: smlatb r4, r2, r3, r2          @ encoding: [0xa2,0x23,0x04,0xe1]
1518 @ CHECK: smlatt r8, r3, r8, r4          @ encoding: [0xe3,0x48,0x08,0xe1]
1519 @ CHECK: smlabbge       r3, r1, r9, r0  @ encoding: [0x81,0x09,0x03,0xa1]
1520 @ CHECK: smlabtle       r5, r6, r4, r1  @ encoding: [0xc6,0x14,0x05,0xd1]
1521 @ CHECK: smlatbne       r4, r2, r3, r2  @ encoding: [0xa2,0x23,0x04,0x11]
1522 @ CHECK: smlatteq       r8, r3, r8, r4  @ encoding: [0xe3,0x48,0x08,0x01]
1523
1524 @------------------------------------------------------------------------------
1525 @ SMLAD/SMLADX
1526 @------------------------------------------------------------------------------
1527         smlad r2, r3, r5, r8
1528         smladx r2, r3, r5, r8
1529         smladeq r2, r3, r5, r8
1530         smladxhi r2, r3, r5, r8
1531
1532 @ CHECK: smlad  r2, r3, r5, r8          @ encoding: [0x13,0x85,0x02,0xe7]
1533 @ CHECK: smladx r2, r3, r5, r8          @ encoding: [0x33,0x85,0x02,0xe7]
1534 @ CHECK: smladeq        r2, r3, r5, r8  @ encoding: [0x13,0x85,0x02,0x07]
1535 @ CHECK: smladxhi       r2, r3, r5, r8  @ encoding: [0x33,0x85,0x02,0x87]
1536
1537
1538 @------------------------------------------------------------------------------
1539 @ SMLAL
1540 @------------------------------------------------------------------------------
1541         smlal r2, r3, r5, r8
1542         smlals r2, r3, r5, r8
1543         smlaleq r2, r3, r5, r8
1544         smlalshi r2, r3, r5, r8
1545
1546 @ CHECK: smlal  r2, r3, r5, r8          @ encoding: [0x95,0x28,0xe3,0xe0]
1547 @ CHECK: smlals r2, r3, r5, r8          @ encoding: [0x95,0x28,0xf3,0xe0]
1548 @ CHECK: smlaleq        r2, r3, r5, r8  @ encoding: [0x95,0x28,0xe3,0x00]
1549 @ CHECK: smlalshi       r2, r3, r5, r8  @ encoding: [0x95,0x28,0xf3,0x80]
1550
1551
1552 @------------------------------------------------------------------------------
1553 @ SMLALBB/SMLALBT/SMLALTB/SMLALTT
1554 @------------------------------------------------------------------------------
1555         smlalbb r3, r1, r9, r0
1556         smlalbt r5, r6, r4, r1
1557         smlaltb r4, r2, r3, r2
1558         smlaltt r8, r3, r8, r4
1559         smlalbbge r3, r1, r9, r0
1560         smlalbtle r5, r6, r4, r1
1561         smlaltbne r4, r2, r3, r2
1562         smlaltteq r8, r3, r8, r4
1563
1564 @ CHECK: smlalbb        r3, r1, r9, r0  @ encoding: [0x89,0x30,0x41,0xe1]
1565 @ CHECK: smlalbt        r5, r6, r4, r1  @ encoding: [0xc4,0x51,0x46,0xe1]
1566 @ CHECK: smlaltb        r4, r2, r3, r2  @ encoding: [0xa3,0x42,0x42,0xe1]
1567 @ CHECK: smlaltt        r8, r3, r8, r4  @ encoding: [0xe8,0x84,0x43,0xe1]
1568 @ CHECK: smlalbbge      r3, r1, r9, r0  @ encoding: [0x89,0x30,0x41,0xa1]
1569 @ CHECK: smlalbtle      r5, r6, r4, r1  @ encoding: [0xc4,0x51,0x46,0xd1]
1570 @ CHECK: smlaltbne      r4, r2, r3, r2  @ encoding: [0xa3,0x42,0x42,0x11]
1571 @ CHECK: smlaltteq      r8, r3, r8, r4  @ encoding: [0xe8,0x84,0x43,0x01]
1572
1573
1574 @------------------------------------------------------------------------------
1575 @ SMLALD/SMLALDX
1576 @------------------------------------------------------------------------------
1577         smlald r2, r3, r5, r8
1578         smlaldx r2, r3, r5, r8
1579         smlaldeq r2, r3, r5, r8
1580         smlaldxhi r2, r3, r5, r8
1581
1582 @ CHECK: smlald r2, r3, r5, r8          @ encoding: [0x15,0x28,0x43,0xe7]
1583 @ CHECK: smlaldx        r2, r3, r5, r8  @ encoding: [0x35,0x28,0x43,0xe7]
1584 @ CHECK: smlaldeq       r2, r3, r5, r8  @ encoding: [0x15,0x28,0x43,0x07]
1585 @ CHECK: smlaldxhi      r2, r3, r5, r8  @ encoding: [0x35,0x28,0x43,0x87]
1586
1587
1588 @------------------------------------------------------------------------------
1589 @ SMLAWB/SMLAWT
1590 @------------------------------------------------------------------------------
1591         smlawb r2, r3, r10, r8
1592         smlawt r8, r3, r5, r9
1593         smlawbeq r2, r7, r5, r8
1594         smlawthi r1, r3, r0, r8
1595
1596 @ CHECK: smlawb r2, r3, r10, r8         @ encoding: [0x83,0x8a,0x22,0xe1]
1597 @ CHECK: smlawt r8, r3, r5, r9          @ encoding: [0xc3,0x95,0x28,0xe1]
1598 @ CHECK: smlawbeq       r2, r7, r5, r8  @ encoding: [0x87,0x85,0x22,0x01]
1599 @ CHECK: smlawthi       r1, r3, r0, r8  @ encoding: [0xc3,0x80,0x21,0x81]
1600
1601
1602 @------------------------------------------------------------------------------
1603 @ SMLSD/SMLSDX
1604 @------------------------------------------------------------------------------
1605         smlsd r2, r3, r5, r8
1606         smlsdx r2, r3, r5, r8
1607         smlsdeq r2, r3, r5, r8
1608         smlsdxhi r2, r3, r5, r8
1609
1610 @ CHECK: smlsd  r2, r3, r5, r8          @ encoding: [0x53,0x85,0x02,0xe7]
1611 @ CHECK: smlsdx r2, r3, r5, r8          @ encoding: [0x73,0x85,0x02,0xe7]
1612 @ CHECK: smlsdeq        r2, r3, r5, r8  @ encoding: [0x53,0x85,0x02,0x07]
1613 @ CHECK: smlsdxhi       r2, r3, r5, r8  @ encoding: [0x73,0x85,0x02,0x87]
1614
1615
1616 @------------------------------------------------------------------------------
1617 @ SMLSLD/SMLSLDX
1618 @------------------------------------------------------------------------------
1619         smlsld r2, r9, r5, r1
1620         smlsldx r4, r11, r2, r8
1621         smlsldeq r8, r2, r5, r6
1622         smlsldxhi r1, r0, r3, r8
1623
1624 @ CHECK: smlsld r2, r9, r5, r1          @ encoding: [0x55,0x21,0x49,0xe7]
1625 @ CHECK: smlsldx        r4, r11, r2, r8 @ encoding: [0x72,0x48,0x4b,0xe7]
1626 @ CHECK: smlsldeq       r8, r2, r5, r6  @ encoding: [0x55,0x86,0x42,0x07]
1627 @ CHECK: smlsldxhi      r1, r0, r3, r8  @ encoding: [0x73,0x18,0x40,0x87]
1628
1629
1630 @------------------------------------------------------------------------------
1631 @ SMMLA/SMMLAR
1632 @------------------------------------------------------------------------------
1633         smmla r1, r2, r3, r4
1634         smmlar r4, r3, r2, r1
1635         smmlalo r1, r2, r3, r4
1636         smmlarcs r4, r3, r2, r1
1637
1638 @ CHECK: smmla  r1, r2, r3, r4          @ encoding: [0x12,0x43,0x51,0xe7]
1639 @ CHECK: smmlar r4, r3, r2, r1          @ encoding: [0x33,0x12,0x54,0xe7]
1640 @ CHECK: smmlalo        r1, r2, r3, r4  @ encoding: [0x12,0x43,0x51,0x37]
1641 @ CHECK: smmlarhs       r4, r3, r2, r1  @ encoding: [0x33,0x12,0x54,0x27]
1642
1643
1644 @------------------------------------------------------------------------------
1645 @ SMMLS/SMMLSR
1646 @------------------------------------------------------------------------------
1647         smmls r1, r2, r3, r4
1648         smmlsr r4, r3, r2, r1
1649         smmlslo r1, r2, r3, r4
1650         smmlsrcs r4, r3, r2, r1
1651
1652 @ CHECK: smmls  r1, r2, r3, r4          @ encoding: [0xd2,0x43,0x51,0xe7]
1653 @ CHECK: smmlsr r4, r3, r2, r1          @ encoding: [0xf3,0x12,0x54,0xe7]
1654 @ CHECK: smmlslo        r1, r2, r3, r4  @ encoding: [0xd2,0x43,0x51,0x37]
1655 @ CHECK: smmlsrhs       r4, r3, r2, r1  @ encoding: [0xf3,0x12,0x54,0x27]
1656
1657
1658 @------------------------------------------------------------------------------
1659 @ SMMUL/SMMULR
1660 @------------------------------------------------------------------------------
1661         smmul r2, r3, r4
1662         smmulr r3, r2, r1
1663         smmulcc r2, r3, r4
1664         smmulrhs r3, r2, r1
1665
1666 @ CHECK: smmul  r2, r3, r4              @ encoding: [0x13,0xf4,0x52,0xe7]
1667 @ CHECK: smmulr r3, r2, r1              @ encoding: [0x32,0xf1,0x53,0xe7]
1668 @ CHECK: smmullo        r2, r3, r4      @ encoding: [0x13,0xf4,0x52,0x37]
1669 @ CHECK: smmulrhs       r3, r2, r1      @ encoding: [0x32,0xf1,0x53,0x27]
1670
1671
1672 @------------------------------------------------------------------------------
1673 @ SMUAD/SMUADX
1674 @------------------------------------------------------------------------------
1675         smuad r2, r3, r4
1676         smuadx r3, r2, r1
1677         smuadlt r2, r3, r4
1678         smuadxge r3, r2, r1
1679
1680 @ CHECK: smuad  r2, r3, r4              @ encoding: [0x13,0xf4,0x02,0xe7]
1681 @ CHECK: smuadx r3, r2, r1              @ encoding: [0x32,0xf1,0x03,0xe7]
1682 @ CHECK: smuadlt        r2, r3, r4      @ encoding: [0x13,0xf4,0x02,0xb7]
1683 @ CHECK: smuadxge       r3, r2, r1      @ encoding: [0x32,0xf1,0x03,0xa7]
1684
1685
1686 @------------------------------------------------------------------------------
1687 @ SMULBB/SMULBT/SMULTB/SMULTT
1688 @------------------------------------------------------------------------------
1689         smulbb r3, r9, r0
1690         smulbt r5, r4, r1
1691         smultb r4, r2, r2
1692         smultt r8, r3, r4
1693         smulbbge r1, r9, r0
1694         smulbtle r5, r6, r4
1695         smultbne r2, r3, r2
1696         smultteq r8, r3, r4
1697
1698 @ CHECK: smulbb r3, r9, r0              @ encoding: [0x89,0x00,0x63,0xe1]
1699 @ CHECK: smulbt r5, r4, r1              @ encoding: [0xc4,0x01,0x65,0xe1]
1700 @ CHECK: smultb r4, r2, r2              @ encoding: [0xa2,0x02,0x64,0xe1]
1701 @ CHECK: smultt r8, r3, r4              @ encoding: [0xe3,0x04,0x68,0xe1]
1702 @ CHECK: smulbbge       r1, r9, r0      @ encoding: [0x89,0x00,0x61,0xa1]
1703 @ CHECK: smulbtle       r5, r6, r4      @ encoding: [0xc6,0x04,0x65,0xd1]
1704 @ CHECK: smultbne       r2, r3, r2      @ encoding: [0xa3,0x02,0x62,0x11]
1705 @ CHECK: smultteq       r8, r3, r4      @ encoding: [0xe3,0x04,0x68,0x01]
1706
1707
1708 @------------------------------------------------------------------------------
1709 @ SMULL
1710 @------------------------------------------------------------------------------
1711         smull r3, r9, r0, r1
1712         smulls r3, r9, r0, r2
1713         smulleq r8, r3, r4, r5
1714         smullseq r8, r3, r4, r3
1715
1716 @ CHECK: smull  r3, r9, r0, r1          @ encoding: [0x90,0x31,0xc9,0xe0]
1717 @ CHECK: smulls r3, r9, r0, r2          @ encoding: [0x90,0x32,0xd9,0xe0]
1718 @ CHECK: smulleq        r8, r3, r4, r5  @ encoding: [0x94,0x85,0xc3,0x00]
1719 @ CHECK: smullseq       r8, r3, r4, r3  @ encoding: [0x94,0x83,0xd3,0x00]
1720
1721
1722 @------------------------------------------------------------------------------
1723 @ SMULWB/SMULWT
1724 @------------------------------------------------------------------------------
1725         smulwb r3, r9, r0
1726         smulwt r3, r9, r2
1727
1728 @ CHECK: smulwb r3, r9, r0              @ encoding: [0xa9,0x00,0x23,0xe1]
1729 @ CHECK: smulwt r3, r9, r2              @ encoding: [0xe9,0x02,0x23,0xe1]
1730
1731
1732 @------------------------------------------------------------------------------
1733 @ SMUSD/SMUSDX
1734 @------------------------------------------------------------------------------
1735         smusd r3, r0, r1
1736         smusdx r3, r9, r2
1737         smusdeq r8, r3, r2
1738         smusdxne r7, r4, r3
1739
1740 @ CHECK: smusd  r3, r0, r1              @ encoding: [0x50,0xf1,0x03,0xe7]
1741 @ CHECK: smusdx r3, r9, r2              @ encoding: [0x79,0xf2,0x03,0xe7]
1742 @ CHECK: smusdeq        r8, r3, r2      @ encoding: [0x53,0xf2,0x08,0x07]
1743 @ CHECK: smusdxne       r7, r4, r3      @ encoding: [0x74,0xf3,0x07,0x17]
1744
1745
1746 @------------------------------------------------------------------------------
1747 @ SRS
1748 @------------------------------------------------------------------------------
1749         srsda sp, #5
1750         srsdb sp, #1
1751         srsia sp, #0
1752         srsib sp, #15
1753
1754         srsda sp!, #31
1755         srsdb sp!, #19
1756         srsia sp!, #2
1757         srsib sp!, #14
1758
1759         srsfa sp, #11
1760         srsea sp, #10
1761         srsfd sp, #9
1762         srsed sp, #5
1763
1764         srsfa sp!, #5
1765         srsea sp!, #5
1766         srsfd sp!, #5
1767         srsed sp!, #5
1768
1769         srs sp, #5
1770         srs sp!, #5
1771
1772 @ CHECK: srsda  sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
1773 @ CHECK: srsdb  sp, #1                  @ encoding: [0x01,0x05,0x4d,0xf9]
1774 @ CHECK: srsia  sp, #0                  @ encoding: [0x00,0x05,0xcd,0xf8]
1775 @ CHECK: srsib  sp, #15                 @ encoding: [0x0f,0x05,0xcd,0xf9]
1776
1777 @ CHECK: srsda  sp!, #31                @ encoding: [0x1f,0x05,0x6d,0xf8]
1778 @ CHECK: srsdb  sp!, #19                @ encoding: [0x13,0x05,0x6d,0xf9]
1779 @ CHECK: srsia  sp!, #2                 @ encoding: [0x02,0x05,0xed,0xf8]
1780 @ CHECK: srsib  sp!, #14                @ encoding: [0x0e,0x05,0xed,0xf9]
1781
1782 @ CHECK: srsda  sp, #11                 @ encoding: [0x0b,0x05,0x4d,0xf8]
1783 @ CHECK: srsdb  sp, #10                 @ encoding: [0x0a,0x05,0x4d,0xf9]
1784 @ CHECK: srsia  sp, #9                  @ encoding: [0x09,0x05,0xcd,0xf8]
1785 @ CHECK: srsib  sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf9]
1786
1787 @ CHECK: srsda  sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf8]
1788 @ CHECK: srsdb  sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf9]
1789 @ CHECK: srsia  sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
1790 @ CHECK: srsib  sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf9]
1791
1792 @ CHECK: srsia  sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf8]
1793 @ CHECK: srsia  sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
1794
1795
1796 @------------------------------------------------------------------------------
1797 @ SSAT
1798 @------------------------------------------------------------------------------
1799         ssat    r8, #1, r10
1800         ssat    r8, #1, r10, lsl #0
1801         ssat    r8, #1, r10, lsl #31
1802         ssat    r8, #1, r10, asr #32
1803         ssat    r8, #1, r10, asr #1
1804
1805 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x1a,0x80,0xa0,0xe6]
1806 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x1a,0x80,0xa0,0xe6]
1807 @ CHECK: ssat   r8, #1, r10, lsl #31    @ encoding: [0x9a,0x8f,0xa0,0xe6]
1808 @ CHECK: ssat   r8, #1, r10, asr #32    @ encoding: [0x5a,0x80,0xa0,0xe6]
1809 @ CHECK: ssat   r8, #1, r10, asr #1     @ encoding: [0xda,0x80,0xa0,0xe6]
1810
1811
1812 @------------------------------------------------------------------------------
1813 @ SSAT16
1814 @------------------------------------------------------------------------------
1815         ssat16  r2, #1, r7
1816         ssat16  r3, #16, r5
1817
1818 @ CHECK: ssat16 r2, #1, r7              @ encoding: [0x37,0x2f,0xa0,0xe6]
1819 @ CHECK: ssat16 r3, #16, r5             @ encoding: [0x35,0x3f,0xaf,0xe6]
1820
1821
1822 @------------------------------------------------------------------------------
1823 @ SSAX
1824 @------------------------------------------------------------------------------
1825         ssax r2, r3, r4
1826         ssaxlt r2, r3, r4
1827
1828 @ CHECK: ssax   r2, r3, r4              @ encoding: [0x54,0x2f,0x13,0xe6]
1829 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0x54,0x2f,0x13,0xb6]
1830
1831 @------------------------------------------------------------------------------
1832 @ SSUB16/SSUB8
1833 @------------------------------------------------------------------------------
1834         ssub16 r1, r0, r6
1835         ssub16ne r5, r3, r2
1836         ssub8 r9, r2, r4
1837         ssub8eq r5, r1, r2
1838
1839 @ CHECK: ssub16 r1, r0, r6              @ encoding: [0x76,0x1f,0x10,0xe6]
1840 @ CHECK: ssub16ne       r5, r3, r2      @ encoding: [0x72,0x5f,0x13,0x16]
1841 @ CHECK: ssub8  r9, r2, r4              @ encoding: [0xf4,0x9f,0x12,0xe6]
1842 @ CHECK: ssub8eq        r5, r1, r2      @ encoding: [0xf2,0x5f,0x11,0x06]
1843
1844
1845 @------------------------------------------------------------------------------
1846 @ STM*
1847 @------------------------------------------------------------------------------
1848         stm       r2, {r1,r3-r6,sp}
1849         stmia     r3, {r1,r3-r6,lr}
1850         stmib     r4, {r1,r3-r6,sp}
1851         stmda     r5, {r1,r3-r6,sp}
1852         stmdb     r6, {r1,r3-r6,r8}
1853         stmfd     sp, {r1,r3-r6,sp}
1854
1855         @ with update
1856         stm       r8!, {r1,r3-r6,sp}
1857         stmib     r9!, {r1,r3-r6,sp}
1858         stmda     sp!, {r1,r3-r6}
1859         stmdb     r0!, {r1,r5,r7,sp}
1860
1861 @ CHECK: stm    r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x82,0xe8]
1862 @ CHECK: stm    r3, {lr, r1, r3, r4, r5, r6} @ encoding: [0x7a,0x40,0x83,0xe8]
1863 @ CHECK: stmib  r4, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x84,0xe9]
1864 @ CHECK: stmda  r5, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x05,0xe8]
1865 @ CHECK: stmdb  r6, {r1, r3, r4, r5, r6, r8} @ encoding: [0x7a,0x01,0x06,0xe9]
1866 @ CHECK: stmdb  sp, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x0d,0xe9]
1867
1868 @ CHECK: stm    r8!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa8,0xe8]
1869 @ CHECK: stmib  r9!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa9,0xe9]
1870 @ CHECK: stmda  sp!, {r1, r3, r4, r5, r6}     @ encoding: [0x7a,0x00,0x2d,0xe8]
1871 @ CHECK: stmdb  r0!, {r1, r5, r7, sp}         @ encoding: [0xa2,0x20,0x20,0xe9]
1872
1873
1874 @------------------------------------------------------------------------------
1875 @ STREX/STREXB/STREXH/STREXD
1876 @------------------------------------------------------------------------------
1877         strexb  r1, r3, [r4]
1878         strexh  r4, r2, [r5]
1879         strex  r2, r1, [r7]
1880         strexd  r6, r2, r3, [r8]
1881
1882 @ CHECK: strexb r1, r3, [r4]            @ encoding: [0x93,0x1f,0xc4,0xe1]
1883 @ CHECK: strexh r4, r2, [r5]            @ encoding: [0x92,0x4f,0xe5,0xe1]
1884 @ CHECK: strex  r2, r1, [r7]            @ encoding: [0x91,0x2f,0x87,0xe1]
1885 @ CHECK: strexd r6, r2, r3, [r8]        @ encoding: [0x92,0x6f,0xa8,0xe1]
1886
1887 @------------------------------------------------------------------------------
1888 @ STR
1889 @------------------------------------------------------------------------------
1890         strpl   r3, [r10, #-0]!
1891         strpl   r3, [r10, #0]!
1892
1893 @ CHECK: strpl  r3, [r10, #-0]!         @ encoding: [0x00,0x30,0x2a,0x55]
1894 @ CHECK: strpl  r3, [r10]!              @ encoding: [0x00,0x30,0xaa,0x55]
1895
1896 @------------------------------------------------------------------------------
1897 @ SUB
1898 @------------------------------------------------------------------------------
1899         sub r4, r5, #0xf000
1900         sub r4, r5, r6
1901         sub r4, r5, r6, lsl #5
1902         sub r4, r5, r6, lsr #5
1903         sub r4, r5, r6, lsr #5
1904         sub r4, r5, r6, asr #5
1905         sub r4, r5, r6, ror #5
1906         sub r6, r7, r8, lsl r9
1907         sub r6, r7, r8, lsr r9
1908         sub r6, r7, r8, asr r9
1909         sub r6, r7, r8, ror r9
1910
1911         @ destination register is optional
1912         sub r5, #0xf000
1913         sub r4, r5
1914         sub r4, r5, lsl #5
1915         sub r4, r5, lsr #5
1916         sub r4, r5, lsr #5
1917         sub r4, r5, asr #5
1918         sub r4, r5, ror #5
1919         sub r6, r7, lsl r9
1920         sub r6, r7, lsr r9
1921         sub r6, r7, asr r9
1922         sub r6, r7, ror r9
1923
1924 @ CHECK: sub    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x45,0xe2]
1925 @ CHECK: sub    r4, r5, r6              @ encoding: [0x06,0x40,0x45,0xe0]
1926 @ CHECK: sub    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x45,0xe0]
1927 @ CHECK: sub    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x45,0xe0]
1928 @ CHECK: sub    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x45,0xe0]
1929 @ CHECK: sub    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x45,0xe0]
1930 @ CHECK: sub    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x45,0xe0]
1931 @ CHECK: sub    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x47,0xe0]
1932 @ CHECK: sub    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x47,0xe0]
1933 @ CHECK: sub    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x47,0xe0]
1934 @ CHECK: sub    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x47,0xe0]
1935
1936
1937 @ CHECK: sub    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x45,0xe2]
1938 @ CHECK: sub    r4, r4, r5              @ encoding: [0x05,0x40,0x44,0xe0]
1939 @ CHECK: sub    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x44,0xe0]
1940 @ CHECK: sub    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x44,0xe0]
1941 @ CHECK: sub    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x44,0xe0]
1942 @ CHECK: sub    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x44,0xe0]
1943 @ CHECK: sub    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x44,0xe0]
1944 @ CHECK: sub    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x46,0xe0]
1945 @ CHECK: sub    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x46,0xe0]
1946 @ CHECK: sub    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x46,0xe0]
1947 @ CHECK: sub    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x46,0xe0]
1948
1949
1950 @------------------------------------------------------------------------------
1951 @ SVC
1952 @------------------------------------------------------------------------------
1953         svc #16
1954         svc #0
1955         svc #0xffffff
1956
1957 @ CHECK: svc    #16                     @ encoding: [0x10,0x00,0x00,0xef]
1958 @ CHECK: svc    #0                      @ encoding: [0x00,0x00,0x00,0xef]
1959 @ CHECK: svc    #16777215               @ encoding: [0xff,0xff,0xff,0xef]
1960
1961
1962 @------------------------------------------------------------------------------
1963 @ SWP/SWPB
1964 @------------------------------------------------------------------------------
1965         swp r1, r2, [r3]
1966         swp r4, r4, [r6]
1967         swpb r5, r1, [r9]
1968
1969 @ CHECK: swp    r1, r2, [r3]            @ encoding: [0x92,0x10,0x03,0xe1]
1970 @ CHECK: swp    r4, r4, [r6]            @ encoding: [0x94,0x40,0x06,0xe1]
1971 @ CHECK: swpb   r5, r1, [r9]            @ encoding: [0x91,0x50,0x49,0xe1]
1972
1973
1974 @------------------------------------------------------------------------------
1975 @ SXTAB
1976 @------------------------------------------------------------------------------
1977         sxtab r2, r3, r4
1978         sxtab r4, r5, r6, ror #0
1979         sxtablt r6, r2, r9, ror #8
1980         sxtab r5, r1, r4, ror #16
1981         sxtab r7, r8, r3, ror #24
1982
1983 @ CHECK: sxtab  r2, r3, r4              @ encoding: [0x74,0x20,0xa3,0xe6]
1984 @ CHECK: sxtab  r4, r5, r6              @ encoding: [0x76,0x40,0xa5,0xe6]
1985 @ CHECK: sxtablt r6, r2, r9, ror #8     @ encoding: [0x79,0x64,0xa2,0xb6]
1986 @ CHECK: sxtab  r5, r1, r4, ror #16     @ encoding: [0x74,0x58,0xa1,0xe6]
1987 @ CHECK: sxtab  r7, r8, r3, ror #24     @ encoding: [0x73,0x7c,0xa8,0xe6]
1988
1989
1990 @------------------------------------------------------------------------------
1991 @ SXTAB16
1992 @------------------------------------------------------------------------------
1993         sxtab16ge r0, r1, r4
1994         sxtab16 r6, r2, r7, ror #0
1995         sxtab16 r3, r5, r8, ror #8
1996         sxtab16 r3, r2, r1, ror #16
1997         sxtab16eq r1, r2, r3, ror #24
1998
1999 @ CHECK: sxtab16ge      r0, r1, r4      @ encoding: [0x74,0x00,0x81,0xa6]
2000 @ CHECK: sxtab16        r6, r2, r7      @ encoding: [0x77,0x60,0x82,0xe6]
2001 @ CHECK: sxtab16 r3, r5, r8, ror #8     @ encoding: [0x78,0x34,0x85,0xe6]
2002 @ CHECK: sxtab16 r3, r2, r1, ror #16    @ encoding: [0x71,0x38,0x82,0xe6]
2003 @ CHECK: sxtab16eq r1, r2, r3, ror #24  @ encoding: [0x73,0x1c,0x82,0x06]
2004
2005 @------------------------------------------------------------------------------
2006 @ SXTAH
2007 @------------------------------------------------------------------------------
2008         sxtah r1, r3, r9
2009         sxtahhi r6, r1, r6, ror #0
2010         sxtah r3, r8, r3, ror #8
2011         sxtahlo r2, r2, r4, ror #16
2012         sxtah r9, r3, r3, ror #24
2013
2014 @ CHECK: sxtah  r1, r3, r9              @ encoding: [0x79,0x10,0xb3,0xe6]
2015 @ CHECK: sxtahhi        r6, r1, r6      @ encoding: [0x76,0x60,0xb1,0x86]
2016 @ CHECK: sxtah  r3, r8, r3, ror #8      @ encoding: [0x73,0x34,0xb8,0xe6]
2017 @ CHECK: sxtahlo r2, r2, r4, ror #16    @ encoding: [0x74,0x28,0xb2,0x36]
2018 @ CHECK: sxtah  r9, r3, r3, ror #24     @ encoding: [0x73,0x9c,0xb3,0xe6]
2019
2020 @------------------------------------------------------------------------------
2021 @ SXTB
2022 @------------------------------------------------------------------------------
2023         sxtbge r2, r4
2024         sxtb r5, r6, ror #0
2025         sxtb r6, r9, ror #8
2026         sxtbcc r5, r1, ror #16
2027         sxtb r8, r3, ror #24
2028
2029 @ CHECK: sxtbge r2, r4                  @ encoding: [0x74,0x20,0xaf,0xa6]
2030 @ CHECK: sxtb   r5, r6                  @ encoding: [0x76,0x50,0xaf,0xe6]
2031 @ CHECK: sxtb   r6, r9, ror #8          @ encoding: [0x79,0x64,0xaf,0xe6]
2032 @ CHECK: sxtblo r5, r1, ror #16         @ encoding: [0x71,0x58,0xaf,0x36]
2033 @ CHECK: sxtb   r8, r3, ror #24         @ encoding: [0x73,0x8c,0xaf,0xe6]
2034
2035
2036 @------------------------------------------------------------------------------
2037 @ SXTB16
2038 @------------------------------------------------------------------------------
2039         sxtb16 r1, r4
2040         sxtb16 r6, r7, ror #0
2041         sxtb16cs r3, r5, ror #8
2042         sxtb16 r3, r1, ror #16
2043         sxtb16ge r2, r3, ror #24
2044
2045 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x74,0x10,0x8f,0xe6]
2046 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x77,0x60,0x8f,0xe6]
2047 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x75,0x34,0x8f,0x26]
2048 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x71,0x38,0x8f,0xe6]
2049 @ CHECK: sxtb16ge       r2, r3, ror #24 @ encoding: [0x73,0x2c,0x8f,0xa6]
2050
2051
2052 @------------------------------------------------------------------------------
2053 @ SXTH
2054 @------------------------------------------------------------------------------
2055         sxthne r3, r9
2056         sxth r1, r6, ror #0
2057         sxth r3, r8, ror #8
2058         sxthle r2, r2, ror #16
2059         sxth r9, r3, ror #24
2060
2061 @ CHECK: sxthne r3, r9                  @ encoding: [0x79,0x30,0xbf,0x16]
2062 @ CHECK: sxth   r1, r6                  @ encoding: [0x76,0x10,0xbf,0xe6]
2063 @ CHECK: sxth   r3, r8, ror #8          @ encoding: [0x78,0x34,0xbf,0xe6]
2064 @ CHECK: sxthle r2, r2, ror #16         @ encoding: [0x72,0x28,0xbf,0xd6]
2065 @ CHECK: sxth   r9, r3, ror #24         @ encoding: [0x73,0x9c,0xbf,0xe6]
2066
2067
2068 @------------------------------------------------------------------------------
2069 @ TEQ
2070 @------------------------------------------------------------------------------
2071         teq r5, #0xf000
2072         teq r4, r5
2073         teq r4, r5, lsl #5
2074         teq r4, r5, lsr #5
2075         teq r4, r5, lsr #5
2076         teq r4, r5, asr #5
2077         teq r4, r5, ror #5
2078         teq r6, r7, lsl r9
2079         teq r6, r7, lsr r9
2080         teq r6, r7, asr r9
2081         teq r6, r7, ror r9
2082
2083 @ CHECK: teq    r5, #61440              @ encoding: [0x0f,0x0a,0x35,0xe3]
2084 @ CHECK: teq    r4, r5                  @ encoding: [0x05,0x00,0x34,0xe1]
2085 @ CHECK: teq    r4, r5, lsl #5          @ encoding: [0x85,0x02,0x34,0xe1]
2086 @ CHECK: teq    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x34,0xe1]
2087 @ CHECK: teq    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x34,0xe1]
2088 @ CHECK: teq    r4, r5, asr #5          @ encoding: [0xc5,0x02,0x34,0xe1]
2089 @ CHECK: teq    r4, r5, ror #5          @ encoding: [0xe5,0x02,0x34,0xe1]
2090 @ CHECK: teq    r6, r7, lsl r9          @ encoding: [0x17,0x09,0x36,0xe1]
2091 @ CHECK: teq    r6, r7, lsr r9          @ encoding: [0x37,0x09,0x36,0xe1]
2092 @ CHECK: teq    r6, r7, asr r9          @ encoding: [0x57,0x09,0x36,0xe1]
2093 @ CHECK: teq    r6, r7, ror r9          @ encoding: [0x77,0x09,0x36,0xe1]
2094
2095
2096 @------------------------------------------------------------------------------
2097 @ TST
2098 @------------------------------------------------------------------------------
2099         tst r5, #0xf000
2100         tst r4, r5
2101         tst r4, r5, lsl #5
2102         tst r4, r5, lsr #5
2103         tst r4, r5, lsr #5
2104         tst r4, r5, asr #5
2105         tst r4, r5, ror #5
2106         tst r6, r7, lsl r9
2107         tst r6, r7, lsr r9
2108         tst r6, r7, asr r9
2109         tst r6, r7, ror r9
2110
2111 @ CHECK: tst    r5, #61440              @ encoding: [0x0f,0x0a,0x15,0xe3]
2112 @ CHECK: tst    r4, r5                  @ encoding: [0x05,0x00,0x14,0xe1]
2113 @ CHECK: tst    r4, r5, lsl #5          @ encoding: [0x85,0x02,0x14,0xe1]
2114 @ CHECK: tst    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x14,0xe1]
2115 @ CHECK: tst    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x14,0xe1]
2116 @ CHECK: tst    r4, r5, asr #5          @ encoding: [0xc5,0x02,0x14,0xe1]
2117 @ CHECK: tst    r4, r5, ror #5          @ encoding: [0xe5,0x02,0x14,0xe1]
2118 @ CHECK: tst    r6, r7, lsl r9          @ encoding: [0x17,0x09,0x16,0xe1]
2119 @ CHECK: tst    r6, r7, lsr r9          @ encoding: [0x37,0x09,0x16,0xe1]
2120 @ CHECK: tst    r6, r7, asr r9          @ encoding: [0x57,0x09,0x16,0xe1]
2121 @ CHECK: tst    r6, r7, ror r9          @ encoding: [0x77,0x09,0x16,0xe1]
2122
2123
2124 @------------------------------------------------------------------------------
2125 @ UADD16/UADD8
2126 @------------------------------------------------------------------------------
2127         uadd16 r1, r2, r3
2128         uadd16gt r1, r2, r3
2129         uadd8 r1, r2, r3
2130         uadd8le r1, r2, r3
2131
2132 @ CHECK: uadd16 r1, r2, r3              @ encoding: [0x13,0x1f,0x52,0xe6]
2133 @ CHECK: uadd16gt       r1, r2, r3      @ encoding: [0x13,0x1f,0x52,0xc6]
2134 @ CHECK: uadd8  r1, r2, r3              @ encoding: [0x93,0x1f,0x52,0xe6]
2135 @ CHECK: uadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x52,0xd6]
2136
2137
2138 @------------------------------------------------------------------------------
2139 @ UASX
2140 @------------------------------------------------------------------------------
2141         uasx r9, r12, r0
2142         uasxeq r9, r12, r0
2143
2144 @ CHECK: uasx   r9, r12, r0             @ encoding: [0x30,0x9f,0x5c,0xe6]
2145 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0x30,0x9f,0x5c,0x06]
2146
2147
2148 @------------------------------------------------------------------------------
2149 @ UBFX
2150 @------------------------------------------------------------------------------
2151         ubfx r4, r5, #16, #1
2152         ubfxgt r4, r5, #16, #16
2153
2154 @ CHECK: ubfx   r4, r5, #16, #1         @ encoding: [0x55,0x48,0xe0,0xe7]
2155 @ CHECK: ubfxgt r4, r5, #16, #16        @ encoding: [0x55,0x48,0xef,0xc7]
2156
2157
2158 @------------------------------------------------------------------------------
2159 @ UHADD16/UHADD8
2160 @------------------------------------------------------------------------------
2161         uhadd16 r4, r8, r2
2162         uhadd16gt r4, r8, r2
2163         uhadd8 r4, r8, r2
2164         uhadd8gt r4, r8, r2
2165
2166 @ CHECK: uhadd16        r4, r8, r2      @ encoding: [0x12,0x4f,0x78,0xe6]
2167 @ CHECK: uhadd16gt      r4, r8, r2      @ encoding: [0x12,0x4f,0x78,0xc6]
2168 @ CHECK: uhadd8 r4, r8, r2              @ encoding: [0x92,0x4f,0x78,0xe6]
2169 @ CHECK: uhadd8gt       r4, r8, r2      @ encoding: [0x92,0x4f,0x78,0xc6]
2170
2171
2172 @------------------------------------------------------------------------------
2173 @ UHASX
2174 @------------------------------------------------------------------------------
2175         uhasx r4, r8, r2
2176         uhasxgt r4, r8, r2
2177
2178 @ CHECK: uhasx  r4, r8, r2              @ encoding: [0x32,0x4f,0x78,0xe6]
2179 @ CHECK: uhasxgt r4, r8, r2             @ encoding: [0x32,0x4f,0x78,0xc6]
2180
2181
2182 @------------------------------------------------------------------------------
2183 @ UHSUB16/UHSUB8
2184 @------------------------------------------------------------------------------
2185         uhsub16 r4, r8, r2
2186         uhsub16gt r4, r8, r2
2187         uhsub8 r4, r8, r2
2188         uhsub8gt r4, r8, r2
2189
2190 @ CHECK: uhsub16        r4, r8, r2      @ encoding: [0x72,0x4f,0x78,0xe6]
2191 @ CHECK: uhsub16gt      r4, r8, r2      @ encoding: [0x72,0x4f,0x78,0xc6]
2192 @ CHECK: uhsub8 r4, r8, r2              @ encoding: [0xf2,0x4f,0x78,0xe6]
2193 @ CHECK: uhsub8gt       r4, r8, r2      @ encoding: [0xf2,0x4f,0x78,0xc6]
2194
2195
2196 @------------------------------------------------------------------------------
2197 @ UMAAL
2198 @------------------------------------------------------------------------------
2199         umaal r3, r4, r5, r6
2200         umaallt r3, r4, r5, r6
2201
2202 @ CHECK: umaal  r3, r4, r5, r6          @ encoding: [0x95,0x36,0x44,0xe0]
2203 @ CHECK: umaallt        r3, r4, r5, r6  @ encoding: [0x95,0x36,0x44,0xb0]
2204
2205
2206 @------------------------------------------------------------------------------
2207 @ UMLAL
2208 @------------------------------------------------------------------------------
2209         umlal r2, r4, r6, r8
2210         umlalgt r6, r1, r2, r6
2211         umlals r2, r9, r2, r3
2212         umlalseq r3, r5, r1, r2
2213
2214 @ CHECK: umlal  r2, r4, r6, r8          @ encoding: [0x96,0x28,0xa4,0xe0]
2215 @ CHECK: umlalgt        r6, r1, r2, r6  @ encoding: [0x92,0x66,0xa1,0xc0]
2216 @ CHECK: umlals r2, r9, r2, r3          @ encoding: [0x92,0x23,0xb9,0xe0]
2217 @ CHECK: umlalseq       r3, r5, r1, r2  @ encoding: [0x91,0x32,0xb5,0x00]
2218
2219
2220 @------------------------------------------------------------------------------
2221 @ UMULL
2222 @------------------------------------------------------------------------------
2223         umull r2, r4, r6, r8
2224         umullgt r6, r1, r2, r6
2225         umulls r2, r9, r2, r3
2226         umullseq r3, r5, r1, r2
2227
2228 @ CHECK: umull  r2, r4, r6, r8          @ encoding: [0x96,0x28,0x84,0xe0]
2229 @ CHECK: umullgt        r6, r1, r2, r6  @ encoding: [0x92,0x66,0x81,0xc0]
2230 @ CHECK: umulls r2, r9, r2, r3          @ encoding: [0x92,0x23,0x99,0xe0]
2231 @ CHECK: umullseq       r3, r5, r1, r2  @ encoding: [0x91,0x32,0x95,0x00]
2232
2233
2234 @------------------------------------------------------------------------------
2235 @ UQADD16/UQADD8
2236 @------------------------------------------------------------------------------
2237         uqadd16 r1, r2, r3
2238         uqadd16gt r4, r7, r9
2239         uqadd8 r3, r4, r8
2240         uqadd8le r8, r1, r2
2241
2242
2243 @ CHECK: uqadd16        r1, r2, r3      @ encoding: [0x13,0x1f,0x62,0xe6]
2244 @ CHECK: uqadd16gt      r4, r7, r9      @ encoding: [0x19,0x4f,0x67,0xc6]
2245 @ CHECK: uqadd8 r3, r4, r8              @ encoding: [0x98,0x3f,0x64,0xe6]
2246 @ CHECK: uqadd8le       r8, r1, r2      @ encoding: [0x92,0x8f,0x61,0xd6]
2247
2248
2249 @------------------------------------------------------------------------------
2250 @ UQASX
2251 @------------------------------------------------------------------------------
2252         uqasx r2, r4, r1
2253         uqasxhi r5, r2, r9
2254
2255 @ CHECK: uqasx  r2, r4, r1              @ encoding: [0x31,0x2f,0x64,0xe6]
2256 @ CHECK: uqasxhi        r5, r2, r9      @ encoding: [0x39,0x5f,0x62,0x86]
2257
2258
2259 @------------------------------------------------------------------------------
2260 @ UQSAX
2261 @------------------------------------------------------------------------------
2262         uqsax r1, r3, r7
2263         uqsaxal r3, r6, r2
2264
2265 @ CHECK: uqsax  r1, r3, r7              @ encoding: [0x57,0x1f,0x63,0xe6]
2266 @ CHECK: uqsax  r3, r6, r2              @ encoding: [0x52,0x3f,0x66,0xe6]
2267
2268
2269 @------------------------------------------------------------------------------
2270 @ UQSUB16/UQSUB8
2271 @------------------------------------------------------------------------------
2272         uqsub16 r1, r5, r3
2273         uqsub16gt r3, r2, r5
2274         uqsub8 r2, r1, r4
2275         uqsub8le r4, r6, r9
2276
2277 @ CHECK: uqsub16        r1, r5, r3      @ encoding: [0x73,0x1f,0x65,0xe6]
2278 @ CHECK: uqsub16gt      r3, r2, r5      @ encoding: [0x75,0x3f,0x62,0xc6]
2279 @ CHECK: uqsub8 r2, r1, r4              @ encoding: [0xf4,0x2f,0x61,0xe6]
2280 @ CHECK: uqsub8le       r4, r6, r9      @ encoding: [0xf9,0x4f,0x66,0xd6]
2281
2282
2283 @------------------------------------------------------------------------------
2284 @ USADA8/USAD8
2285 @------------------------------------------------------------------------------
2286         usad8 r2, r1, r4
2287         usad8le r4, r6, r9
2288         usada8 r1, r5, r3, r7
2289         usada8gt r3, r2, r5, r1
2290
2291 @ CHECK: usad8  r2, r1, r4              @ encoding: [0x11,0xf4,0x82,0xe7]
2292 @ CHECK: usad8le        r4, r6, r9      @ encoding: [0x16,0xf9,0x84,0xd7]
2293 @ CHECK: usada8 r1, r5, r3, r7          @ encoding: [0x15,0x73,0x81,0xe7]
2294 @ CHECK: usada8gt       r3, r2, r5, r1  @ encoding: [0x12,0x15,0x83,0xc7]
2295
2296
2297 @------------------------------------------------------------------------------
2298 @ USAT
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 @------------------------------------------------------------------------------
2314 @ USAT16
2315 @------------------------------------------------------------------------------
2316         usat16  r2, #2, r7
2317         usat16  r3, #15, r5
2318
2319 @ CHECK: usat16 r2, #2, r7              @ encoding: [0x37,0x2f,0xe2,0xe6]
2320 @ CHECK: usat16 r3, #15, r5             @ encoding: [0x35,0x3f,0xef,0xe6]
2321
2322
2323 @------------------------------------------------------------------------------
2324 @ USAX
2325 @------------------------------------------------------------------------------
2326         usax r2, r3, r4
2327         usaxne r2, r3, r4
2328
2329 @ CHECK: usax   r2, r3, r4              @ encoding: [0x54,0x2f,0x53,0xe6]
2330 @ CHECK: usaxne r2, r3, r4              @ encoding: [0x54,0x2f,0x53,0x16]
2331
2332 @------------------------------------------------------------------------------
2333 @ USUB16/USUB8
2334 @------------------------------------------------------------------------------
2335         usub16 r4, r2, r7
2336         usub16hi r1, r1, r3
2337         usub8 r1, r8, r5
2338         usub8le r9, r2, r3
2339
2340 @ CHECK: usub16 r4, r2, r7              @ encoding: [0x77,0x4f,0x52,0xe6]
2341 @ CHECK: usub16hi       r1, r1, r3      @ encoding: [0x73,0x1f,0x51,0x86]
2342 @ CHECK: usub8  r1, r8, r5              @ encoding: [0xf5,0x1f,0x58,0xe6]
2343 @ CHECK: usub8le        r9, r2, r3      @ encoding: [0xf3,0x9f,0x52,0xd6]
2344
2345
2346 @------------------------------------------------------------------------------
2347 @ UXTAB
2348 @------------------------------------------------------------------------------
2349         uxtab r2, r3, r4
2350         uxtab r4, r5, r6, ror #0
2351         uxtablt r6, r2, r9, ror #8
2352         uxtab r5, r1, r4, ror #16
2353         uxtab r7, r8, r3, ror #24
2354
2355 @ CHECK: uxtab  r2, r3, r4              @ encoding: [0x74,0x20,0xe3,0xe6]
2356 @ CHECK: uxtab  r4, r5, r6              @ encoding: [0x76,0x40,0xe5,0xe6]
2357 @ CHECK: uxtablt r6, r2, r9, ror #8     @ encoding: [0x79,0x64,0xe2,0xb6]
2358 @ CHECK: uxtab  r5, r1, r4, ror #16     @ encoding: [0x74,0x58,0xe1,0xe6]
2359 @ CHECK: uxtab  r7, r8, r3, ror #24     @ encoding: [0x73,0x7c,0xe8,0xe6]
2360
2361
2362 @------------------------------------------------------------------------------
2363 @ UXTAB16
2364 @------------------------------------------------------------------------------
2365         uxtab16ge r0, r1, r4
2366         uxtab16 r6, r2, r7, ror #0
2367         uxtab16 r3, r5, r8, ror #8
2368         uxtab16 r3, r2, r1, ror #16
2369         uxtab16eq r1, r2, r3, ror #24
2370
2371 @ CHECK: uxtab16ge      r0, r1, r4      @ encoding: [0x74,0x00,0xc1,0xa6]
2372 @ CHECK: uxtab16        r6, r2, r7      @ encoding: [0x77,0x60,0xc2,0xe6]
2373 @ CHECK: uxtab16        r3, r5, r8, ror #8 @ encoding: [0x78,0x34,0xc5,0xe6]
2374 @ CHECK: uxtab16        r3, r2, r1, ror #16 @ encoding: [0x71,0x38,0xc2,0xe6]
2375 @ CHECK: uxtab16eq      r1, r2, r3, ror #24 @ encoding: [0x73,0x1c,0xc2,0x06]
2376
2377
2378 @------------------------------------------------------------------------------
2379 @ UXTAH
2380 @------------------------------------------------------------------------------
2381         uxtah r1, r3, r9
2382         uxtahhi r6, r1, r6, ror #0
2383         uxtah r3, r8, r3, ror #8
2384         uxtahlo r2, r2, r4, ror #16
2385         uxtah r9, r3, r3, ror #24
2386
2387 @ CHECK: uxtah  r1, r3, r9              @ encoding: [0x79,0x10,0xf3,0xe6]
2388 @ CHECK: uxtahhi        r6, r1, r6      @ encoding: [0x76,0x60,0xf1,0x86]
2389 @ CHECK: uxtah  r3, r8, r3, ror #8      @ encoding: [0x73,0x34,0xf8,0xe6]
2390 @ CHECK: uxtahlo        r2, r2, r4, ror #16 @ encoding: [0x74,0x28,0xf2,0x36]
2391 @ CHECK: uxtah  r9, r3, r3, ror #24     @ encoding: [0x73,0x9c,0xf3,0xe6]
2392
2393 @------------------------------------------------------------------------------
2394 @ UXTB
2395 @------------------------------------------------------------------------------
2396         uxtbge r2, r4
2397         uxtb r5, r6, ror #0
2398         uxtb r6, r9, ror #8
2399         uxtbcc r5, r1, ror #16
2400         uxtb r8, r3, ror #24
2401
2402 @ CHECK: uxtbge r2, r4                  @ encoding: [0x74,0x20,0xef,0xa6]
2403 @ CHECK: uxtb   r5, r6                  @ encoding: [0x76,0x50,0xef,0xe6]
2404 @ CHECK: uxtb   r6, r9, ror #8          @ encoding: [0x79,0x64,0xef,0xe6]
2405 @ CHECK: uxtblo r5, r1, ror #16         @ encoding: [0x71,0x58,0xef,0x36]
2406 @ CHECK: uxtb   r8, r3, ror #24         @ encoding: [0x73,0x8c,0xef,0xe6]
2407
2408
2409 @------------------------------------------------------------------------------
2410 @ UXTB16
2411 @------------------------------------------------------------------------------
2412         uxtb16 r1, r4
2413         uxtb16 r6, r7, ror #0
2414         uxtb16cs r3, r5, ror #8
2415         uxtb16 r3, r1, ror #16
2416         uxtb16ge r2, r3, ror #24
2417
2418 @ CHECK: uxtb16 r1, r4                  @ encoding: [0x74,0x10,0xcf,0xe6]
2419 @ CHECK: uxtb16 r6, r7                  @ encoding: [0x77,0x60,0xcf,0xe6]
2420 @ CHECK: uxtb16hs       r3, r5, ror #8  @ encoding: [0x75,0x34,0xcf,0x26]
2421 @ CHECK: uxtb16 r3, r1, ror #16         @ encoding: [0x71,0x38,0xcf,0xe6]
2422 @ CHECK: uxtb16ge       r2, r3, ror #24 @ encoding: [0x73,0x2c,0xcf,0xa6]
2423
2424
2425 @------------------------------------------------------------------------------
2426 @ UXTH
2427 @------------------------------------------------------------------------------
2428         uxthne r3, r9
2429         uxth r1, r6, ror #0
2430         uxth r3, r8, ror #8
2431         uxthle r2, r2, ror #16
2432         uxth r9, r3, ror #24
2433
2434 @ CHECK: uxthne r3, r9                  @ encoding: [0x79,0x30,0xff,0x16]
2435 @ CHECK: uxth   r1, r6                  @ encoding: [0x76,0x10,0xff,0xe6]
2436 @ CHECK: uxth   r3, r8, ror #8          @ encoding: [0x78,0x34,0xff,0xe6]
2437 @ CHECK: uxthle r2, r2, ror #16         @ encoding: [0x72,0x28,0xff,0xd6]
2438 @ CHECK: uxth   r9, r3, ror #24         @ encoding: [0x73,0x9c,0xff,0xe6]
2439
2440
2441 @------------------------------------------------------------------------------
2442 @ WFE/WFI/YIELD
2443 @------------------------------------------------------------------------------
2444         wfe
2445         wfehi
2446         wfi
2447         wfilt
2448         yield
2449         yieldne
2450
2451 @ CHECK: wfe @ encoding: [0x02,0xf0,0x20,0xe3]
2452 @ CHECK: wfehi @ encoding: [0x02,0xf0,0x20,0x83]
2453 @ CHECK: wfi @ encoding: [0x03,0xf0,0x20,0xe3]
2454 @ CHECK: wfilt @ encoding: [0x03,0xf0,0x20,0xb3]
2455 @ CHECK: yield @ encoding: [0x01,0xf0,0x20,0xe3]
2456 @ CHECK: yieldne @ encoding: [0x01,0xf0,0x20,0x13]