55d9f02619508ec28efe862415c443634cc8b8a5
[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 @ LDC{L}/LDC2{L}
647 @------------------------------------------------------------------------------
648         ldc2 p0, c8, [r1, #4]
649         ldc2 p1, c7, [r2]
650         ldc2 p2, c6, [r3, #-224]
651         ldc2 p3, c5, [r4, #-120]!
652         ldc2 p4, c4, [r5], #16
653         ldc2 p5, c3, [r6], #-72
654         ldc2l p6, c2, [r7, #4]
655         ldc2l p7, c1, [r8]
656         ldc2l p8, c0, [r9, #-224]
657         ldc2l p9, c1, [r10, #-120]!
658         ldc2l p10, c2, [r11], #16
659         ldc2l p11, c3, [r12], #-72
660
661         ldc p12, c4, [r0, #4]
662         ldc p13, c5, [r1]
663         ldc p14, c6, [r2, #-224]
664         ldc p15, c7, [r3, #-120]!
665         ldc p5, c8, [r4], #16
666         ldc p4, c9, [r5], #-72
667         ldcl p3, c10, [r6, #4]
668         ldcl p2, c11, [r7]
669         ldcl p1, c12, [r8, #-224]
670         ldcl p0, c13, [r9, #-120]!
671         ldcl p6, c14, [r10], #16
672         ldcl p7, c15, [r11], #-72
673
674         ldclo p12, c4, [r0, #4]
675         ldchi p13, c5, [r1]
676         ldccs p14, c6, [r2, #-224]
677         ldccc p15, c7, [r3, #-120]!
678         ldceq p5, c8, [r4], #16
679         ldcgt p4, c9, [r5], #-72
680         ldcllt p3, c10, [r6, #4]
681         ldclge p2, c11, [r7]
682         ldclle p1, c12, [r8, #-224]
683         ldclne p0, c13, [r9, #-120]!
684         ldcleq p6, c14, [r10], #16
685         ldclhi p7, c15, [r11], #-72
686
687         ldc2 p2, c8, [r1], { 25 }
688
689 @ CHECK: ldc2   p0, c8, [r1, #4]        @ encoding: [0x01,0x80,0x91,0xfd]
690 @ CHECK: ldc2   p1, c7, [r2]            @ encoding: [0x00,0x71,0x92,0xfd]
691 @ CHECK: ldc2   p2, c6, [r3, #-224]     @ encoding: [0x38,0x62,0x13,0xfd]
692 @ CHECK: ldc2   p3, c5, [r4, #-120]!    @ encoding: [0x1e,0x53,0x34,0xfd]
693 @ CHECK: ldc2   p4, c4, [r5], #16       @ encoding: [0x04,0x44,0xb5,0xfc]
694 @ CHECK: ldc2   p5, c3, [r6], #-72      @ encoding: [0x12,0x35,0x36,0xfc]
695 @ CHECK: ldc2l  p6, c2, [r7, #4]        @ encoding: [0x01,0x26,0xd7,0xfd]
696 @ CHECK: ldc2l  p7, c1, [r8]            @ encoding: [0x00,0x17,0xd8,0xfd]
697 @ CHECK: ldc2l  p8, c0, [r9, #-224]     @ encoding: [0x38,0x08,0x59,0xfd]
698 @ CHECK: ldc2l  p9, c1, [r10, #-120]!   @ encoding: [0x1e,0x19,0x7a,0xfd]
699 @ CHECK: ldc2l  p10, c2, [r11], #16     @ encoding: [0x04,0x2a,0xfb,0xfc]
700 @ CHECK: ldc2l  p11, c3, [r12], #-72    @ encoding: [0x12,0x3b,0x7c,0xfc]
701
702 @ CHECK: ldc    p12, c4, [r0, #4]       @ encoding: [0x01,0x4c,0x90,0xed]
703 @ CHECK: ldc    p13, c5, [r1]           @ encoding: [0x00,0x5d,0x91,0xed]
704 @ CHECK: ldc    p14, c6, [r2, #-224]    @ encoding: [0x38,0x6e,0x12,0xed]
705 @ CHECK: ldc    p15, c7, [r3, #-120]!   @ encoding: [0x1e,0x7f,0x33,0xed]
706 @ CHECK: ldc    p5, c8, [r4], #16       @ encoding: [0x04,0x85,0xb4,0xec]
707 @ CHECK: ldc    p4, c9, [r5], #-72      @ encoding: [0x12,0x94,0x35,0xec]
708 @ CHECK: ldcl   p3, c10, [r6, #4]       @ encoding: [0x01,0xa3,0xd6,0xed]
709 @ CHECK: ldcl   p2, c11, [r7]           @ encoding: [0x00,0xb2,0xd7,0xed]
710 @ CHECK: ldcl   p1, c12, [r8, #-224]    @ encoding: [0x38,0xc1,0x58,0xed]
711 @ CHECK: ldcl   p0, c13, [r9, #-120]!   @ encoding: [0x1e,0xd0,0x79,0xed]
712 @ CHECK: ldcl   p6, c14, [r10], #16     @ encoding: [0x04,0xe6,0xfa,0xec]
713 @ CHECK: ldcl   p7, c15, [r11], #-72    @ encoding: [0x12,0xf7,0x7b,0xec]
714
715 @ CHECK: ldclo  p12, c4, [r0, #4]       @ encoding: [0x01,0x4c,0x90,0x3d]
716 @ CHECK: ldchi  p13, c5, [r1]           @ encoding: [0x00,0x5d,0x91,0x8d]
717 @ CHECK: ldchs  p14, c6, [r2, #-224]    @ encoding: [0x38,0x6e,0x12,0x2d]
718 @ CHECK: ldclo  p15, c7, [r3, #-120]!   @ encoding: [0x1e,0x7f,0x33,0x3d]
719 @ CHECK: ldceq  p5, c8, [r4], #16       @ encoding: [0x04,0x85,0xb4,0x0c]
720 @ CHECK: ldcgt  p4, c9, [r5], #-72      @ encoding: [0x12,0x94,0x35,0xcc]
721 @ CHECK: ldcllt p3, c10, [r6, #4]       @ encoding: [0x01,0xa3,0xd6,0xbd]
722 @ CHECK: ldclge p2, c11, [r7]           @ encoding: [0x00,0xb2,0xd7,0xad]
723 @ CHECK: ldclle p1, c12, [r8, #-224]    @ encoding: [0x38,0xc1,0x58,0xdd]
724 @ CHECK: ldclne p0, c13, [r9, #-120]!   @ encoding: [0x1e,0xd0,0x79,0x1d]
725 @ CHECK: ldcleq p6, c14, [r10], #16     @ encoding: [0x04,0xe6,0xfa,0x0c]
726 @ CHECK: ldclhi p7, c15, [r11], #-72    @ encoding: [0x12,0xf7,0x7b,0x8c]
727
728 @ CHECK: ldc2   p2, c8, [r1], {25}      @ encoding: [0x19,0x82,0x91,0xfc]
729
730
731 @------------------------------------------------------------------------------
732 @ LDM*
733 @------------------------------------------------------------------------------
734         ldm       r2, {r1,r3-r6,sp}
735         ldmia     r2, {r1,r3-r6,sp}
736         ldmib     r2, {r1,r3-r6,sp}
737         ldmda     r2, {r1,r3-r6,sp}
738         ldmdb     r2, {r1,r3-r6,sp}
739         ldmfd     r2, {r1,r3-r6,sp}
740
741         @ with update
742         ldm       r2!, {r1,r3-r6,sp}
743         ldmib     r2!, {r1,r3-r6,sp}
744         ldmda     r2!, {r1,r3-r6,sp}
745         ldmdb     r2!, {r1,r3-r6,sp}
746
747 @ CHECK: ldm   r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
748 @ CHECK: ldm   r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
749 @ CHECK: ldmib r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe9]
750 @ CHECK: ldmda r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x12,0xe8]
751 @ CHECK: ldmdb r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x12,0xe9]
752 @ CHECK: ldm   r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
753
754 @ CHECK: ldm   r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xb2,0xe8]
755 @ CHECK: ldmib r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xb2,0xe9]
756 @ CHECK: ldmda r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x32,0xe8]
757 @ CHECK: ldmdb r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x32,0xe9]
758
759
760 @------------------------------------------------------------------------------
761 @ LDREX/LDREXB/LDREXH/LDREXD
762 @------------------------------------------------------------------------------
763         ldrexb  r3, [r4]
764         ldrexh  r2, [r5]
765         ldrex  r1, [r7]
766         ldrexd  r6, r7, [r8]
767
768 @ CHECK: ldrexb r3, [r4]                @ encoding: [0x9f,0x3f,0xd4,0xe1]
769 @ CHECK: ldrexh r2, [r5]                @ encoding: [0x9f,0x2f,0xf5,0xe1]
770 @ CHECK: ldrex  r1, [r7]                @ encoding: [0x9f,0x1f,0x97,0xe1]
771 @ CHECK: ldrexd r6, r7, [r8]            @ encoding: [0x9f,0x6f,0xb8,0xe1]
772
773 @------------------------------------------------------------------------------
774 @ LDRHT
775 @------------------------------------------------------------------------------
776         ldrhthi r8, [r11], #-0
777         ldrhthi r8, [r11], #0
778
779 @ CHECK: ldrhthi r8, [r11], #-0         @ encoding: [0xb0,0x80,0x7b,0x80]
780 @ CHECK: ldrhthi r8, [r11], #0          @ encoding: [0xb0,0x80,0xfb,0x80]
781
782 @------------------------------------------------------------------------------
783 @ FIXME: LSL
784 @------------------------------------------------------------------------------
785 @------------------------------------------------------------------------------
786 @ FIXME: LSR
787 @------------------------------------------------------------------------------
788
789 @------------------------------------------------------------------------------
790 @ MCR/MCR2
791 @------------------------------------------------------------------------------
792         mcr  p7, #1, r5, c1, c1, #4
793         mcr2  p7, #1, r5, c1, c1, #4
794
795 @ CHECK: mcr  p7, #1, r5, c1, c1, #4    @ encoding: [0x91,0x57,0x21,0xee]
796 @ CHECK: mcr2  p7, #1, r5, c1, c1, #4   @ encoding: [0x91,0x57,0x21,0xfe]
797
798 @------------------------------------------------------------------------------
799 @ MCRR/MCRR2
800 @------------------------------------------------------------------------------
801         mcrr  p7, #15, r5, r4, c1
802         mcrr2  p7, #15, r5, r4, c1
803
804 @ CHECK: mcrr  p7, #15, r5, r4, c1      @ encoding: [0xf1,0x57,0x44,0xec]
805 @ CHECK: mcrr2  p7, #15, r5, r4, c1     @ encoding: [0xf1,0x57,0x44,0xfc]
806
807
808 @------------------------------------------------------------------------------
809 @ MLA
810 @------------------------------------------------------------------------------
811         mla  r1,r2,r3,r4
812         mlas r1,r2,r3,r4
813         mlane  r1,r2,r3,r4
814         mlasne r1,r2,r3,r4
815
816 @ CHECK: mla    r1, r2, r3, r4          @ encoding: [0x92,0x43,0x21,0xe0]
817 @ CHECK: mlas   r1, r2, r3, r4          @ encoding: [0x92,0x43,0x31,0xe0]
818 @ CHECK: mlane  r1, r2, r3, r4          @ encoding: [0x92,0x43,0x21,0x10]
819 @ CHECK: mlasne r1, r2, r3, r4          @ encoding: [0x92,0x43,0x31,0x10]
820
821 @------------------------------------------------------------------------------
822 @ MLS
823 @------------------------------------------------------------------------------
824         mls  r2,r5,r6,r3
825         mlsne  r2,r5,r6,r3
826
827 @ CHECK: mls    r2, r5, r6, r3          @ encoding: [0x95,0x36,0x62,0xe0]
828 @ CHECK: mlsne  r2, r5, r6, r3          @ encoding: [0x95,0x36,0x62,0x10]
829
830 @------------------------------------------------------------------------------
831 @ MOV (immediate)
832 @------------------------------------------------------------------------------
833         mov r3, #7
834         mov r4, #0xff0
835         mov r5, #0xff0000
836         mov r6, #0xffff
837         movw r9, #0xffff
838         movs r3, #7
839         moveq r4, #0xff0
840         movseq r5, #0xff0000
841
842 @ CHECK: mov    r3, #7                  @ encoding: [0x07,0x30,0xa0,0xe3]
843 @ CHECK: mov    r4, #4080               @ encoding: [0xff,0x4e,0xa0,0xe3]
844 @ CHECK: mov    r5, #16711680           @ encoding: [0xff,0x58,0xa0,0xe3]
845 @ CHECK: movw   r6, #65535              @ encoding: [0xff,0x6f,0x0f,0xe3]
846 @ CHECK: movw   r9, #65535              @ encoding: [0xff,0x9f,0x0f,0xe3]
847 @ CHECK: movs   r3, #7                  @ encoding: [0x07,0x30,0xb0,0xe3]
848 @ CHECK: moveq  r4, #4080               @ encoding: [0xff,0x4e,0xa0,0x03]
849 @ CHECK: movseq r5, #16711680           @ encoding: [0xff,0x58,0xb0,0x03]
850
851 @------------------------------------------------------------------------------
852 @ MOV (register)
853 @------------------------------------------------------------------------------
854         mov r2, r3
855         movs r2, r3
856         moveq r2, r3
857         movseq r2, r3
858
859 @ CHECK: mov    r2, r3                  @ encoding: [0x03,0x20,0xa0,0xe1]
860 @ CHECK: movs   r2, r3                  @ encoding: [0x03,0x20,0xb0,0xe1]
861 @ CHECK: moveq  r2, r3                  @ encoding: [0x03,0x20,0xa0,0x01]
862 @ CHECK: movseq r2, r3                  @ encoding: [0x03,0x20,0xb0,0x01]
863
864 @------------------------------------------------------------------------------
865 @ MOVT
866 @------------------------------------------------------------------------------
867         movt r3, #7
868         movt r6, #0xffff
869         movteq r4, #0xff0
870
871 @ CHECK: movt   r3, #7                  @ encoding: [0x07,0x30,0x40,0xe3]
872 @ CHECK: movt   r6, #65535              @ encoding: [0xff,0x6f,0x4f,0xe3]
873 @ CHECK: movteq r4, #4080               @ encoding: [0xf0,0x4f,0x40,0x03]
874
875
876 @------------------------------------------------------------------------------
877 @ MRC/MRC2
878 @------------------------------------------------------------------------------
879         mrc  p14, #0, r1, c1, c2, #4
880         mrc2  p14, #0, r1, c1, c2, #4
881
882 @ CHECK: mrc  p14, #0, r1, c1, c2, #4   @ encoding: [0x92,0x1e,0x11,0xee]
883 @ CHECK: mrc2  p14, #0, r1, c1, c2, #4  @ encoding: [0x92,0x1e,0x11,0xfe]
884
885 @------------------------------------------------------------------------------
886 @ MRRC/MRRC2
887 @------------------------------------------------------------------------------
888         mrrc  p7, #1, r5, r4, c1
889         mrrc2  p7, #1, r5, r4, c1
890
891 @ CHECK: mrrc  p7, #1, r5, r4, c1       @ encoding: [0x11,0x57,0x54,0xec]
892 @ CHECK: mrrc2  p7, #1, r5, r4, c1      @ encoding: [0x11,0x57,0x54,0xfc]
893
894
895 @------------------------------------------------------------------------------
896 @ MRS
897 @------------------------------------------------------------------------------
898         mrs  r8, apsr
899         mrs  r8, cpsr
900         mrs  r8, spsr
901 @ CHECK: mrs  r8, apsr                  @ encoding: [0x00,0x80,0x0f,0xe1]
902 @ CHECK: mrs  r8, apsr                  @ encoding: [0x00,0x80,0x0f,0xe1]
903 @ CHECK: mrs  r8, spsr                  @ encoding: [0x00,0x80,0x4f,0xe1]
904
905
906
907 @------------------------------------------------------------------------------
908 @ MSR
909 @------------------------------------------------------------------------------
910
911         msr  apsr, #5
912         msr  apsr_g, #5
913         msr  apsr_nzcvq, #5
914         msr  APSR_nzcvq, #5
915         msr  apsr_nzcvqg, #5
916         msr  cpsr_fc, #5
917         msr  cpsr_c, #5
918         msr  cpsr_x, #5
919         msr  cpsr_fc, #5
920         msr  cpsr_all, #5
921         msr  cpsr_fsx, #5
922         msr  spsr_fc, #5
923         msr  SPSR_fsxc, #5
924         msr  cpsr_fsxc, #5
925
926 @ CHECK: msr    APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
927 @ CHECK: msr    APSR_g, #5              @ encoding: [0x05,0xf0,0x24,0xe3]
928 @ CHECK: msr    APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
929 @ CHECK: msr    APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
930 @ CHECK: msr    APSR_nzcvqg, #5         @ encoding: [0x05,0xf0,0x2c,0xe3]
931 @ CHECK: msr    CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
932 @ CHECK: msr    CPSR_c, #5              @ encoding: [0x05,0xf0,0x21,0xe3]
933 @ CHECK: msr    CPSR_x, #5              @ encoding: [0x05,0xf0,0x22,0xe3]
934 @ CHECK: msr    CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
935 @ CHECK: msr    CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
936 @ CHECK: msr    CPSR_fsx, #5            @ encoding: [0x05,0xf0,0x2e,0xe3]
937 @ CHECK: msr    SPSR_fc, #5             @ encoding: [0x05,0xf0,0x69,0xe3]
938 @ CHECK: msr    SPSR_fsxc, #5           @ encoding: [0x05,0xf0,0x6f,0xe3]
939 @ CHECK: msr    CPSR_fsxc, #5           @ encoding: [0x05,0xf0,0x2f,0xe3]
940
941         msr  apsr, r0
942         msr  apsr_g, r0
943         msr  apsr_nzcvq, r0
944         msr  APSR_nzcvq, r0
945         msr  apsr_nzcvqg, r0
946         msr  cpsr_fc, r0
947         msr  cpsr_c, r0
948         msr  cpsr_x, r0
949         msr  cpsr_fc, r0
950         msr  cpsr_all, r0
951         msr  cpsr_fsx, r0
952         msr  spsr_fc, r0
953         msr  SPSR_fsxc, r0
954         msr  cpsr_fsxc, r0
955
956 @ CHECK: msr  APSR_nzcvq, r0            @ encoding: [0x00,0xf0,0x28,0xe1]
957 @ CHECK: msr  APSR_g, r0                @ encoding: [0x00,0xf0,0x24,0xe1]
958 @ CHECK: msr  APSR_nzcvq, r0            @ encoding: [0x00,0xf0,0x28,0xe1]
959 @ CHECK: msr  APSR_nzcvq, r0            @ encoding: [0x00,0xf0,0x28,0xe1]
960 @ CHECK: msr  APSR_nzcvqg, r0           @ encoding: [0x00,0xf0,0x2c,0xe1]
961 @ CHECK: msr  CPSR_fc, r0               @ encoding: [0x00,0xf0,0x29,0xe1]
962 @ CHECK: msr  CPSR_c, r0                @ encoding: [0x00,0xf0,0x21,0xe1]
963 @ CHECK: msr  CPSR_x, r0                @ encoding: [0x00,0xf0,0x22,0xe1]
964 @ CHECK: msr  CPSR_fc, r0               @ encoding: [0x00,0xf0,0x29,0xe1]
965 @ CHECK: msr  CPSR_fc, r0               @ encoding: [0x00,0xf0,0x29,0xe1]
966 @ CHECK: msr  CPSR_fsx, r0              @ encoding: [0x00,0xf0,0x2e,0xe1]
967 @ CHECK: msr  SPSR_fc, r0               @ encoding: [0x00,0xf0,0x69,0xe1]
968 @ CHECK: msr  SPSR_fsxc, r0             @ encoding: [0x00,0xf0,0x6f,0xe1]
969 @ CHECK: msr  CPSR_fsxc, r0             @ encoding: [0x00,0xf0,0x2f,0xe1]
970
971 @------------------------------------------------------------------------------
972 @ MUL
973 @------------------------------------------------------------------------------
974         mul r5, r6, r7
975         muls r5, r6, r7
976         mulgt r5, r6, r7
977         mulsle r5, r6, r7
978
979 @ CHECK: mul    r5, r6, r7              @ encoding: [0x96,0x07,0x05,0xe0]
980 @ CHECK: muls   r5, r6, r7              @ encoding: [0x96,0x07,0x15,0xe0]
981 @ CHECK: mulgt  r5, r6, r7              @ encoding: [0x96,0x07,0x05,0xc0]
982 @ CHECK: mulsle r5, r6, r7              @ encoding: [0x96,0x07,0x15,0xd0]
983
984
985 @------------------------------------------------------------------------------
986 @ MVN (immediate)
987 @------------------------------------------------------------------------------
988         mvn r3, #7
989         mvn r4, #0xff0
990         mvn r5, #0xff0000
991         mvns r3, #7
992         mvneq r4, #0xff0
993         mvnseq r5, #0xff0000
994
995 @ CHECK: mvn    r3, #7                  @ encoding: [0x07,0x30,0xe0,0xe3]
996 @ CHECK: mvn    r4, #4080               @ encoding: [0xff,0x4e,0xe0,0xe3]
997 @ CHECK: mvn    r5, #16711680           @ encoding: [0xff,0x58,0xe0,0xe3]
998 @ CHECK: mvns   r3, #7                  @ encoding: [0x07,0x30,0xf0,0xe3]
999 @ CHECK: mvneq  r4, #4080               @ encoding: [0xff,0x4e,0xe0,0x03]
1000 @ CHECK: mvnseq r5, #16711680           @ encoding: [0xff,0x58,0xf0,0x03]
1001
1002
1003 @------------------------------------------------------------------------------
1004 @ MVN (register)
1005 @------------------------------------------------------------------------------
1006         mvn r2, r3
1007         mvns r2, r3
1008         mvn r5, r6, lsl #19
1009         mvn r5, r6, lsr #9
1010         mvn r5, r6, asr #4
1011         mvn r5, r6, ror #6
1012         mvn r5, r6, rrx
1013         mvneq r2, r3
1014         mvnseq r2, r3, lsl #10
1015
1016 @ CHECK: mvn    r2, r3                  @ encoding: [0x03,0x20,0xe0,0xe1]
1017 @ CHECK: mvns   r2, r3                  @ encoding: [0x03,0x20,0xf0,0xe1]
1018 @ CHECK: mvn    r5, r6, lsl #19         @ encoding: [0x86,0x59,0xe0,0xe1]
1019 @ CHECK: mvn    r5, r6, lsr #9          @ encoding: [0xa6,0x54,0xe0,0xe1]
1020 @ CHECK: mvn    r5, r6, asr #4          @ encoding: [0x46,0x52,0xe0,0xe1]
1021 @ CHECK: mvn    r5, r6, ror #6          @ encoding: [0x66,0x53,0xe0,0xe1]
1022 @ CHECK: mvn    r5, r6, rrx             @ encoding: [0x66,0x50,0xe0,0xe1]
1023 @ CHECK: mvneq  r2, r3                  @ encoding: [0x03,0x20,0xe0,0x01]
1024 @ CHECK: mvnseq r2, r3, lsl #10         @ encoding: [0x03,0x25,0xf0,0x01]
1025
1026
1027 @------------------------------------------------------------------------------
1028 @ MVN (shifted register)
1029 @------------------------------------------------------------------------------
1030         mvn r5, r6, lsl r7
1031         mvns r5, r6, lsr r7
1032         mvngt r5, r6, asr r7
1033         mvnslt r5, r6, ror r7
1034
1035 @ CHECK: mvn    r5, r6, lsl r7          @ encoding: [0x16,0x57,0xe0,0xe1]
1036 @ CHECK: mvns   r5, r6, lsr r7          @ encoding: [0x36,0x57,0xf0,0xe1]
1037 @ CHECK: mvngt  r5, r6, asr r7          @ encoding: [0x56,0x57,0xe0,0xc1]
1038 @ CHECK: mvnslt r5, r6, ror r7          @ encoding: [0x76,0x57,0xf0,0xb1]
1039
1040 @------------------------------------------------------------------------------
1041 @ NOP
1042 @------------------------------------------------------------------------------
1043         nop
1044         nopgt
1045
1046 @ CHECK: nop @ encoding: [0x00,0xf0,0x20,0xe3]
1047 @ CHECK: nopgt @ encoding: [0x00,0xf0,0x20,0xc3]
1048
1049
1050 @------------------------------------------------------------------------------
1051 @ ORR
1052 @------------------------------------------------------------------------------
1053         orr r4, r5, #0xf000
1054         orr r4, r5, r6
1055         orr r4, r5, r6, lsl #5
1056         orr r4, r5, r6, lsr #5
1057         orr r4, r5, r6, lsr #5
1058         orr r4, r5, r6, asr #5
1059         orr r4, r5, r6, ror #5
1060         orr r6, r7, r8, lsl r9
1061         orr r6, r7, r8, lsr r9
1062         orr r6, r7, r8, asr r9
1063         orr r6, r7, r8, ror r9
1064         orr r4, r5, r6, rrx
1065
1066         @ destination register is optional
1067         orr r5, #0xf000
1068         orr r4, r5
1069         orr r4, r5, lsl #5
1070         orr r4, r5, lsr #5
1071         orr r4, r5, lsr #5
1072         orr r4, r5, asr #5
1073         orr r4, r5, ror #5
1074         orr r6, r7, lsl r9
1075         orr r6, r7, lsr r9
1076         orr r6, r7, asr r9
1077         orr r6, r7, ror r9
1078         orr r4, r5, rrx
1079
1080 @ CHECK: orr    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x85,0xe3]
1081 @ CHECK: orr    r4, r5, r6              @ encoding: [0x06,0x40,0x85,0xe1]
1082 @ CHECK: orr    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x85,0xe1]
1083 @ CHECK: orr    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe1]
1084 @ CHECK: orr    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe1]
1085 @ CHECK: orr    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x85,0xe1]
1086 @ CHECK: orr    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x85,0xe1]
1087 @ CHECK: orr    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x87,0xe1]
1088 @ CHECK: orr    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x87,0xe1]
1089 @ CHECK: orr    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x87,0xe1]
1090 @ CHECK: orr    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0xe1]
1091 @ CHECK: orr    r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x85,0xe1]
1092
1093 @ CHECK: orr    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0xe3]
1094 @ CHECK: orr    r4, r4, r5              @ encoding: [0x05,0x40,0x84,0xe1]
1095 @ CHECK: orr    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x84,0xe1]
1096 @ CHECK: orr    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe1]
1097 @ CHECK: orr    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe1]
1098 @ CHECK: orr    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x84,0xe1]
1099 @ CHECK: orr    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x84,0xe1]
1100 @ CHECK: orr    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x86,0xe1]
1101 @ CHECK: orr    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x86,0xe1]
1102 @ CHECK: orr    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0xe1]
1103 @ CHECK: orr    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x86,0xe1]
1104 @ CHECK: orr    r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x84,0xe1]
1105
1106         orrseq r4, r5, #0xf000
1107         orrne r4, r5, r6
1108         orrseq r4, r5, r6, lsl #5
1109         orrlo r6, r7, r8, ror r9
1110         orrshi r4, r5, r6, rrx
1111         orrcs r5, #0xf000
1112         orrseq r4, r5
1113         orrne r6, r7, asr r9
1114         orrslt r6, r7, ror r9
1115         orrsgt r4, r5, rrx
1116
1117 @ CHECK: orrseq r4, r5, #61440          @ encoding: [0x0f,0x4a,0x95,0x03]
1118 @ CHECK: orrne  r4, r5, r6              @ encoding: [0x06,0x40,0x85,0x11]
1119 @ CHECK: orrseq r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x95,0x01]
1120 @ CHECK: orrlo  r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0x31]
1121 @ CHECK: orrshi r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x95,0x81]
1122 @ CHECK: orrhs  r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0x23]
1123 @ CHECK: orrseq r4, r4, r5              @ encoding: [0x05,0x40,0x94,0x01]
1124 @ CHECK: orrne  r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0x11]
1125 @ CHECK: orrslt r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x96,0xb1]
1126 @ CHECK: orrsgt r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x94,0xc1]
1127
1128 @------------------------------------------------------------------------------
1129 @ PKH
1130 @------------------------------------------------------------------------------
1131         pkhbt r2, r2, r3
1132         pkhbt r2, r2, r3, lsl #31
1133         pkhbt r2, r2, r3, lsl #0
1134         pkhbt r2, r2, r3, lsl #15
1135
1136         pkhtb r2, r2, r3
1137         pkhtb r2, r2, r3, asr #31
1138         pkhtb r2, r2, r3, asr #15
1139
1140 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
1141 @ CHECK: pkhbt  r2, r2, r3, lsl #31     @ encoding: [0x93,0x2f,0x82,0xe6]
1142 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
1143 @ CHECK: pkhbt  r2, r2, r3, lsl #15     @ encoding: [0x93,0x27,0x82,0xe6]
1144
1145 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
1146 @ CHECK: pkhtb  r2, r2, r3, asr #31     @ encoding: [0xd3,0x2f,0x82,0xe6]
1147 @ CHECK: pkhtb  r2, r2, r3, asr #15     @ encoding: [0xd3,0x27,0x82,0xe6]
1148
1149 @------------------------------------------------------------------------------
1150 @ FIXME: PLD
1151 @------------------------------------------------------------------------------
1152 @------------------------------------------------------------------------------
1153 @ FIXME: PLI
1154 @------------------------------------------------------------------------------
1155
1156
1157 @------------------------------------------------------------------------------
1158 @ POP
1159 @------------------------------------------------------------------------------
1160         pop {r7}
1161         pop {r7, r8, r9, r10}
1162
1163 @ CHECK: pop    {r7}                    @ encoding: [0x04,0x70,0x9d,0xe4]
1164 @ CHECK: pop    {r7, r8, r9, r10}       @ encoding: [0x80,0x07,0xbd,0xe8]
1165
1166
1167 @------------------------------------------------------------------------------
1168 @ PUSH
1169 @------------------------------------------------------------------------------
1170         push {r7}
1171         push {r7, r8, r9, r10}
1172
1173 @ CHECK: push   {r7}                    @ encoding: [0x04,0x70,0x2d,0xe5]
1174 @ CHECK: push   {r7, r8, r9, r10}       @ encoding: [0x80,0x07,0x2d,0xe9]
1175
1176
1177 @------------------------------------------------------------------------------
1178 @ QADD/QADD16/QADD8
1179 @------------------------------------------------------------------------------
1180         qadd r1, r2, r3
1181         qaddne r1, r2, r3
1182         qadd16 r1, r2, r3
1183         qadd16gt r1, r2, r3
1184         qadd8 r1, r2, r3
1185         qadd8le r1, r2, r3
1186
1187 @ CHECK: qadd   r1, r2, r3              @ encoding: [0x52,0x10,0x03,0xe1]
1188 @ CHECK: qaddne r1, r2, r3              @ encoding: [0x52,0x10,0x03,0x11]
1189 @ CHECK: qadd16 r1, r2, r3              @ encoding: [0x13,0x1f,0x22,0xe6]
1190 @ CHECK: qadd16gt       r1, r2, r3      @ encoding: [0x13,0x1f,0x22,0xc6]
1191 @ CHECK: qadd8  r1, r2, r3              @ encoding: [0x93,0x1f,0x22,0xe6]
1192 @ CHECK: qadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x22,0xd6]
1193
1194
1195 @------------------------------------------------------------------------------
1196 @ QDADD/QDSUB
1197 @------------------------------------------------------------------------------
1198         qdadd r6, r7, r8
1199         qdaddhi r6, r7, r8
1200         qdsub r6, r7, r8
1201         qdsubhi r6, r7, r8
1202
1203 @ CHECK: qdadd  r6, r7, r8              @ encoding: [0x57,0x60,0x48,0xe1]
1204 @ CHECK: qdaddhi r6, r7, r8             @ encoding: [0x57,0x60,0x48,0x81]
1205 @ CHECK: qdsub  r6, r7, r8              @ encoding: [0x57,0x60,0x68,0xe1]
1206 @ CHECK: qdsubhi r6, r7, r8             @ encoding: [0x57,0x60,0x68,0x81]
1207
1208
1209 @------------------------------------------------------------------------------
1210 @ QSAX
1211 @------------------------------------------------------------------------------
1212         qsax r9, r12, r0
1213         qsaxeq r9, r12, r0
1214
1215 @ CHECK: qsax   r9, r12, r0             @ encoding: [0x50,0x9f,0x2c,0xe6]
1216 @ CHECK: qsaxeq r9, r12, r0             @ encoding: [0x50,0x9f,0x2c,0x06]
1217
1218
1219 @------------------------------------------------------------------------------
1220 @ QSUB/QSUB16/QSUB8
1221 @------------------------------------------------------------------------------
1222         qsub r1, r2, r3
1223         qsubne r1, r2, r3
1224         qsub16 r1, r2, r3
1225         qsub16gt r1, r2, r3
1226         qsub8 r1, r2, r3
1227         qsub8le r1, r2, r3
1228
1229 @ CHECK: qsub   r1, r2, r3              @ encoding: [0x52,0x10,0x23,0xe1]
1230 @ CHECK: qsubne r1, r2, r3              @ encoding: [0x52,0x10,0x23,0x11]
1231 @ CHECK: qsub16 r1, r2, r3              @ encoding: [0x73,0x1f,0x22,0xe6]
1232 @ CHECK: qsub16gt       r1, r2, r3      @ encoding: [0x73,0x1f,0x22,0xc6]
1233 @ CHECK: qsub8  r1, r2, r3              @ encoding: [0xf3,0x1f,0x22,0xe6]
1234 @ CHECK: qsub8le r1, r2, r3             @ encoding: [0xf3,0x1f,0x22,0xd6]
1235
1236
1237 @------------------------------------------------------------------------------
1238 @ RBIT
1239 @------------------------------------------------------------------------------
1240         rbit r1, r2
1241         rbitne r1, r2
1242
1243 @ CHECK: rbit   r1, r2                  @ encoding: [0x32,0x1f,0xff,0xe6]
1244 @ CHECK: rbitne r1, r2                  @ encoding: [0x32,0x1f,0xff,0x16]
1245
1246
1247 @------------------------------------------------------------------------------
1248 @ REV/REV16/REVSH
1249 @------------------------------------------------------------------------------
1250         rev r1, r9
1251         revne r1, r5
1252         rev16 r8, r3
1253         rev16ne r12, r4
1254         revsh r4, r9
1255         revshne r9, r1
1256
1257 @ CHECK: rev    r1, r9                  @ encoding: [0x39,0x1f,0xbf,0xe6]
1258 @ CHECK: revne  r1, r5                  @ encoding: [0x35,0x1f,0xbf,0x16]
1259 @ CHECK: rev16  r8, r3                  @ encoding: [0xb3,0x8f,0xbf,0xe6]
1260 @ CHECK: rev16ne r12, r4                @ encoding: [0xb4,0xcf,0xbf,0x16]
1261 @ CHECK: revsh  r4, r9                  @ encoding: [0xb9,0x4f,0xff,0xe6]
1262 @ CHECK: revshne r9, r1                 @ encoding: [0xb1,0x9f,0xff,0x16]
1263
1264
1265 @------------------------------------------------------------------------------
1266 @ RFE
1267 @------------------------------------------------------------------------------
1268         rfeda r2
1269         rfedb r3
1270         rfeia r5
1271         rfeib r6
1272
1273         rfeda r4!
1274         rfedb r7!
1275         rfeia r9!
1276         rfeib r8!
1277
1278         rfefa r2
1279         rfeea r3
1280         rfefd r5
1281         rfeed r6
1282
1283         rfefa r4!
1284         rfeea r7!
1285         rfefd r9!
1286         rfeed r8!
1287
1288         rfe r1
1289         rfe r1!
1290
1291 @ CHECK: rfeda  r2                      @ encoding: [0x00,0x0a,0x12,0xf8]
1292 @ CHECK: rfedb  r3                      @ encoding: [0x00,0x0a,0x13,0xf9]
1293 @ CHECK: rfeia  r5                      @ encoding: [0x00,0x0a,0x95,0xf8]
1294 @ CHECK: rfeib  r6                      @ encoding: [0x00,0x0a,0x96,0xf9]
1295
1296 @ CHECK: rfeda  r4!                     @ encoding: [0x00,0x0a,0x34,0xf8]
1297 @ CHECK: rfedb  r7!                     @ encoding: [0x00,0x0a,0x37,0xf9]
1298 @ CHECK: rfeia  r9!                     @ encoding: [0x00,0x0a,0xb9,0xf8]
1299 @ CHECK: rfeib  r8!                     @ encoding: [0x00,0x0a,0xb8,0xf9]
1300
1301 @ CHECK: rfeda  r2                      @ encoding: [0x00,0x0a,0x12,0xf8]
1302 @ CHECK: rfedb  r3                      @ encoding: [0x00,0x0a,0x13,0xf9]
1303 @ CHECK: rfeia  r5                      @ encoding: [0x00,0x0a,0x95,0xf8]
1304 @ CHECK: rfeib  r6                      @ encoding: [0x00,0x0a,0x96,0xf9]
1305
1306 @ CHECK: rfeda  r4!                     @ encoding: [0x00,0x0a,0x34,0xf8]
1307 @ CHECK: rfedb  r7!                     @ encoding: [0x00,0x0a,0x37,0xf9]
1308 @ CHECK: rfeia  r9!                     @ encoding: [0x00,0x0a,0xb9,0xf8]
1309 @ CHECK: rfeib  r8!                     @ encoding: [0x00,0x0a,0xb8,0xf9]
1310
1311 @ CHECK: rfeia  r1                      @ encoding: [0x00,0x0a,0x91,0xf8]
1312 @ CHECK: rfeia  r1!                     @ encoding: [0x00,0x0a,0xb1,0xf8]
1313
1314
1315 @------------------------------------------------------------------------------
1316 @ RSB
1317 @------------------------------------------------------------------------------
1318         rsb r4, r5, #0xf000
1319         rsb r4, r5, r6
1320         rsb r4, r5, r6, lsl #5
1321         rsblo r4, r5, r6, lsr #5
1322         rsb r4, r5, r6, lsr #5
1323         rsb r4, r5, r6, asr #5
1324         rsb r4, r5, r6, ror #5
1325         rsb r6, r7, r8, lsl r9
1326         rsb r6, r7, r8, lsr r9
1327         rsb r6, r7, r8, asr r9
1328         rsble r6, r7, r8, ror r9
1329         rsb r4, r5, r6, rrx
1330
1331         @ destination register is optional
1332         rsb r5, #0xf000
1333         rsb r4, r5
1334         rsb r4, r5, lsl #5
1335         rsb r4, r5, lsr #5
1336         rsbne r4, r5, lsr #5
1337         rsb r4, r5, asr #5
1338         rsb r4, r5, ror #5
1339         rsbgt r6, r7, lsl r9
1340         rsb r6, r7, lsr r9
1341         rsb r6, r7, asr r9
1342         rsb r6, r7, ror r9
1343         rsb r4, r5, rrx
1344
1345 @ CHECK: rsb    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x65,0xe2]
1346 @ CHECK: rsb    r4, r5, r6              @ encoding: [0x06,0x40,0x65,0xe0]
1347 @ CHECK: rsb    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x65,0xe0]
1348 @ CHECK: rsblo  r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x65,0x30]
1349 @ CHECK: rsb    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x65,0xe0]
1350 @ CHECK: rsb    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x65,0xe0]
1351 @ CHECK: rsb    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x65,0xe0]
1352 @ CHECK: rsb    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x67,0xe0]
1353 @ CHECK: rsb    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x67,0xe0]
1354 @ CHECK: rsb    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x67,0xe0]
1355 @ CHECK: rsble  r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x67,0xd0]
1356 @ CHECK: rsb    r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x65,0xe0]
1357
1358 @ CHECK: rsb    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x65,0xe2]
1359 @ CHECK: rsb    r4, r4, r5              @ encoding: [0x05,0x40,0x64,0xe0]
1360 @ CHECK: rsb    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x64,0xe0]
1361 @ CHECK: rsb    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x64,0xe0]
1362 @ CHECK: rsbne  r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x64,0x10]
1363 @ CHECK: rsb    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x64,0xe0]
1364 @ CHECK: rsb    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x64,0xe0]
1365 @ CHECK: rsbgt  r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x66,0xc0]
1366 @ CHECK: rsb    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x66,0xe0]
1367 @ CHECK: rsb    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x66,0xe0]
1368 @ CHECK: rsb    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x66,0xe0]
1369 @ CHECK: rsb    r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x64,0xe0]
1370
1371 @------------------------------------------------------------------------------
1372 @ RSC
1373 @------------------------------------------------------------------------------
1374         rsc r4, r5, #0xf000
1375         rsc r4, r5, r6
1376         rsc r4, r5, r6, lsl #5
1377         rsclo r4, r5, r6, lsr #5
1378         rsc r4, r5, r6, lsr #5
1379         rsc r4, r5, r6, asr #5
1380         rsc r4, r5, r6, ror #5
1381         rsc r6, r7, r8, lsl r9
1382         rsc r6, r7, r8, lsr r9
1383         rsc r6, r7, r8, asr r9
1384         rscle r6, r7, r8, ror r9
1385         rscs r1, r8, #4064
1386
1387         @ destination register is optional
1388         rsc r5, #0xf000
1389         rsc r4, r5
1390         rsc r4, r5, lsl #5
1391         rsc r4, r5, lsr #5
1392         rscne r4, r5, lsr #5
1393         rsc r4, r5, asr #5
1394         rsc r4, r5, ror #5
1395         rscgt r6, r7, lsl r9
1396         rsc r6, r7, lsr r9
1397         rsc r6, r7, asr r9
1398         rsc r6, r7, ror r9
1399
1400 @ CHECK: rsc    r4, r5, #61440          @ encoding: [0x0f,0x4a,0xe5,0xe2]
1401 @ CHECK: rsc    r4, r5, r6              @ encoding: [0x06,0x40,0xe5,0xe0]
1402 @ CHECK: rsc    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0xe5,0xe0]
1403 @ CHECK: rsclo  r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xe5,0x30]
1404 @ CHECK: rsc    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xe5,0xe0]
1405 @ CHECK: rsc    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0xe5,0xe0]
1406 @ CHECK: rsc    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0xe5,0xe0]
1407 @ CHECK: rsc    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0xe7,0xe0]
1408 @ CHECK: rsc    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0xe7,0xe0]
1409 @ CHECK: rsc    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0xe7,0xe0]
1410 @ CHECK: rscle  r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0xe7,0xd0]
1411 @ CHECK: rscs   r1, r8, #4064           @ encoding: [0xfe,0x1e,0xf8,0xe2]
1412
1413 @ CHECK: rsc    r5, r5, #61440          @ encoding: [0x0f,0x5a,0xe5,0xe2]
1414 @ CHECK: rsc    r4, r4, r5              @ encoding: [0x05,0x40,0xe4,0xe0]
1415 @ CHECK: rsc    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0xe4,0xe0]
1416 @ CHECK: rsc    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xe4,0xe0]
1417 @ CHECK: rscne  r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xe4,0x10]
1418 @ CHECK: rsc    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0xe4,0xe0]
1419 @ CHECK: rsc    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0xe4,0xe0]
1420 @ CHECK: rscgt  r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0xe6,0xc0]
1421 @ CHECK: rsc    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0xe6,0xe0]
1422 @ CHECK: rsc    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0xe6,0xe0]
1423 @ CHECK: rsc    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xe6,0xe0]
1424
1425 @------------------------------------------------------------------------------
1426 @ SADD16/SADD8
1427 @------------------------------------------------------------------------------
1428         sadd16 r1, r2, r3
1429         sadd16gt r1, r2, r3
1430         sadd8 r1, r2, r3
1431         sadd8le r1, r2, r3
1432
1433 @ CHECK: sadd16 r1, r2, r3              @ encoding: [0x13,0x1f,0x12,0xe6]
1434 @ CHECK: sadd16gt       r1, r2, r3      @ encoding: [0x13,0x1f,0x12,0xc6]
1435 @ CHECK: sadd8  r1, r2, r3              @ encoding: [0x93,0x1f,0x12,0xe6]
1436 @ CHECK: sadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x12,0xd6]
1437
1438
1439 @------------------------------------------------------------------------------
1440 @ SASX
1441 @------------------------------------------------------------------------------
1442         sasx r9, r12, r0
1443         sasxeq r9, r12, r0
1444
1445 @ CHECK: sasx   r9, r12, r0             @ encoding: [0x30,0x9f,0x1c,0xe6]
1446 @ CHECK: sasxeq r9, r12, r0             @ encoding: [0x30,0x9f,0x1c,0x06]
1447
1448
1449 @------------------------------------------------------------------------------
1450 @ SBC
1451 @------------------------------------------------------------------------------
1452         sbc r4, r5, #0xf000
1453         sbc r4, r5, r6
1454         sbc r4, r5, r6, lsl #5
1455         sbc r4, r5, r6, lsr #5
1456         sbc r4, r5, r6, lsr #5
1457         sbc r4, r5, r6, asr #5
1458         sbc r4, r5, r6, ror #5
1459         sbc r6, r7, r8, lsl r9
1460         sbc r6, r7, r8, lsr r9
1461         sbc r6, r7, r8, asr r9
1462         sbc r6, r7, r8, ror r9
1463
1464         @ destination register is optional
1465         sbc r5, #0xf000
1466         sbc r4, r5
1467         sbc r4, r5, lsl #5
1468         sbc r4, r5, lsr #5
1469         sbc r4, r5, lsr #5
1470         sbc r4, r5, asr #5
1471         sbc r4, r5, ror #5
1472         sbc r6, r7, lsl r9
1473         sbc r6, r7, lsr r9
1474         sbc r6, r7, asr r9
1475         sbc r6, r7, ror r9
1476
1477 @ CHECK: sbc    r4, r5, #61440          @ encoding: [0x0f,0x4a,0xc5,0xe2]
1478 @ CHECK: sbc    r4, r5, r6              @ encoding: [0x06,0x40,0xc5,0xe0]
1479 @ CHECK: sbc    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0xc5,0xe0]
1480 @ CHECK: sbc    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xc5,0xe0]
1481 @ CHECK: sbc    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xc5,0xe0]
1482 @ CHECK: sbc    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0xc5,0xe0]
1483 @ CHECK: sbc    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0xc5,0xe0]
1484 @ CHECK: sbc    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0xc7,0xe0]
1485 @ CHECK: sbc    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0xc7,0xe0]
1486 @ CHECK: sbc    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0xc7,0xe0]
1487 @ CHECK: sbc    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0xc7,0xe0]
1488
1489 @ CHECK: sbc    r5, r5, #61440          @ encoding: [0x0f,0x5a,0xc5,0xe2]
1490 @ CHECK: sbc    r4, r4, r5              @ encoding: [0x05,0x40,0xc4,0xe0]
1491 @ CHECK: sbc    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0xc4,0xe0]
1492 @ CHECK: sbc    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xc4,0xe0]
1493 @ CHECK: sbc    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xc4,0xe0]
1494 @ CHECK: sbc    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0xc4,0xe0]
1495 @ CHECK: sbc    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0xc4,0xe0]
1496 @ CHECK: sbc    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0xc6,0xe0]
1497 @ CHECK: sbc    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0xc6,0xe0]
1498 @ CHECK: sbc    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0xc6,0xe0]
1499 @ CHECK: sbc    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xc6,0xe0]
1500
1501
1502 @------------------------------------------------------------------------------
1503 @ SBFX
1504 @------------------------------------------------------------------------------
1505         sbfx r4, r5, #16, #1
1506         sbfxgt r4, r5, #16, #16
1507
1508 @ CHECK: sbfx   r4, r5, #16, #1         @ encoding: [0x55,0x48,0xa0,0xe7]
1509 @ CHECK: sbfxgt r4, r5, #16, #16        @ encoding: [0x55,0x48,0xaf,0xc7]
1510
1511
1512 @------------------------------------------------------------------------------
1513 @ SEL
1514 @------------------------------------------------------------------------------
1515         sel r9, r2, r1
1516         selne r9, r2, r1
1517
1518 @ CHECK: sel    r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0xe6]
1519 @ CHECK: selne  r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0x16]
1520
1521
1522 @------------------------------------------------------------------------------
1523 @ SETEND
1524 @------------------------------------------------------------------------------
1525         setend be
1526         setend le
1527
1528 @ CHECK: setend be                      @ encoding: [0x00,0x02,0x01,0xf1]
1529 @ CHECK: setend le                      @ encoding: [0x00,0x00,0x01,0xf1]
1530
1531
1532 @------------------------------------------------------------------------------
1533 @ SEV
1534 @------------------------------------------------------------------------------
1535         sev
1536         seveq
1537
1538 @ CHECK: sev                            @ encoding: [0x04,0xf0,0x20,0xe3]
1539 @ CHECK: seveq                          @ encoding: [0x04,0xf0,0x20,0x03]
1540
1541
1542 @------------------------------------------------------------------------------
1543 @ SHADD16/SHADD8
1544 @------------------------------------------------------------------------------
1545         shadd16 r4, r8, r2
1546         shadd16gt r4, r8, r2
1547         shadd8 r4, r8, r2
1548         shadd8gt r4, r8, r2
1549
1550 @ CHECK: shadd16        r4, r8, r2      @ encoding: [0x12,0x4f,0x38,0xe6]
1551 @ CHECK: shadd16gt      r4, r8, r2      @ encoding: [0x12,0x4f,0x38,0xc6]
1552 @ CHECK: shadd8 r4, r8, r2              @ encoding: [0x92,0x4f,0x38,0xe6]
1553 @ CHECK: shadd8gt       r4, r8, r2      @ encoding: [0x92,0x4f,0x38,0xc6]
1554
1555
1556 @------------------------------------------------------------------------------
1557 @ SHASX
1558 @------------------------------------------------------------------------------
1559         shasx r4, r8, r2
1560         shasxgt r4, r8, r2
1561
1562 @ CHECK: shasx  r4, r8, r2              @ encoding: [0x32,0x4f,0x38,0xe6]
1563 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0x32,0x4f,0x38,0xc6]
1564
1565
1566 @------------------------------------------------------------------------------
1567 @ SHSUB16/SHSUB8
1568 @------------------------------------------------------------------------------
1569         shsub16 r4, r8, r2
1570         shsub16gt r4, r8, r2
1571         shsub8 r4, r8, r2
1572         shsub8gt r4, r8, r2
1573
1574 @ CHECK: shsub16        r4, r8, r2      @ encoding: [0x72,0x4f,0x38,0xe6]
1575 @ CHECK: shsub16gt      r4, r8, r2      @ encoding: [0x72,0x4f,0x38,0xc6]
1576 @ CHECK: shsub8 r4, r8, r2              @ encoding: [0xf2,0x4f,0x38,0xe6]
1577 @ CHECK: shsub8gt       r4, r8, r2      @ encoding: [0xf2,0x4f,0x38,0xc6]
1578
1579 @------------------------------------------------------------------------------
1580 @ SMC
1581 @------------------------------------------------------------------------------
1582         smc #0xf
1583         smceq #0
1584
1585 @ CHECK: smc    #15                     @ encoding: [0x7f,0x00,0x60,0xe1]
1586 @ CHECK: smceq  #0                      @ encoding: [0x70,0x00,0x60,0x01]
1587
1588 @------------------------------------------------------------------------------
1589 @ SMLABB/SMLABT/SMLATB/SMLATT
1590 @------------------------------------------------------------------------------
1591         smlabb r3, r1, r9, r0
1592         smlabt r5, r6, r4, r1
1593         smlatb r4, r2, r3, r2
1594         smlatt r8, r3, r8, r4
1595         smlabbge r3, r1, r9, r0
1596         smlabtle r5, r6, r4, r1
1597         smlatbne r4, r2, r3, r2
1598         smlatteq r8, r3, r8, r4
1599
1600 @ CHECK: smlabb r3, r1, r9, r0          @ encoding: [0x81,0x09,0x03,0xe1]
1601 @ CHECK: smlabt r5, r6, r4, r1          @ encoding: [0xc6,0x14,0x05,0xe1]
1602 @ CHECK: smlatb r4, r2, r3, r2          @ encoding: [0xa2,0x23,0x04,0xe1]
1603 @ CHECK: smlatt r8, r3, r8, r4          @ encoding: [0xe3,0x48,0x08,0xe1]
1604 @ CHECK: smlabbge       r3, r1, r9, r0  @ encoding: [0x81,0x09,0x03,0xa1]
1605 @ CHECK: smlabtle       r5, r6, r4, r1  @ encoding: [0xc6,0x14,0x05,0xd1]
1606 @ CHECK: smlatbne       r4, r2, r3, r2  @ encoding: [0xa2,0x23,0x04,0x11]
1607 @ CHECK: smlatteq       r8, r3, r8, r4  @ encoding: [0xe3,0x48,0x08,0x01]
1608
1609 @------------------------------------------------------------------------------
1610 @ SMLAD/SMLADX
1611 @------------------------------------------------------------------------------
1612         smlad r2, r3, r5, r8
1613         smladx r2, r3, r5, r8
1614         smladeq r2, r3, r5, r8
1615         smladxhi r2, r3, r5, r8
1616
1617 @ CHECK: smlad  r2, r3, r5, r8          @ encoding: [0x13,0x85,0x02,0xe7]
1618 @ CHECK: smladx r2, r3, r5, r8          @ encoding: [0x33,0x85,0x02,0xe7]
1619 @ CHECK: smladeq        r2, r3, r5, r8  @ encoding: [0x13,0x85,0x02,0x07]
1620 @ CHECK: smladxhi       r2, r3, r5, r8  @ encoding: [0x33,0x85,0x02,0x87]
1621
1622
1623 @------------------------------------------------------------------------------
1624 @ SMLAL
1625 @------------------------------------------------------------------------------
1626         smlal r2, r3, r5, r8
1627         smlals r2, r3, r5, r8
1628         smlaleq r2, r3, r5, r8
1629         smlalshi r2, r3, r5, r8
1630
1631 @ CHECK: smlal  r2, r3, r5, r8          @ encoding: [0x95,0x28,0xe3,0xe0]
1632 @ CHECK: smlals r2, r3, r5, r8          @ encoding: [0x95,0x28,0xf3,0xe0]
1633 @ CHECK: smlaleq        r2, r3, r5, r8  @ encoding: [0x95,0x28,0xe3,0x00]
1634 @ CHECK: smlalshi       r2, r3, r5, r8  @ encoding: [0x95,0x28,0xf3,0x80]
1635
1636
1637 @------------------------------------------------------------------------------
1638 @ SMLALBB/SMLALBT/SMLALTB/SMLALTT
1639 @------------------------------------------------------------------------------
1640         smlalbb r3, r1, r9, r0
1641         smlalbt r5, r6, r4, r1
1642         smlaltb r4, r2, r3, r2
1643         smlaltt r8, r3, r8, r4
1644         smlalbbge r3, r1, r9, r0
1645         smlalbtle r5, r6, r4, r1
1646         smlaltbne r4, r2, r3, r2
1647         smlaltteq r8, r3, r8, r4
1648
1649 @ CHECK: smlalbb        r3, r1, r9, r0  @ encoding: [0x89,0x30,0x41,0xe1]
1650 @ CHECK: smlalbt        r5, r6, r4, r1  @ encoding: [0xc4,0x51,0x46,0xe1]
1651 @ CHECK: smlaltb        r4, r2, r3, r2  @ encoding: [0xa3,0x42,0x42,0xe1]
1652 @ CHECK: smlaltt        r8, r3, r8, r4  @ encoding: [0xe8,0x84,0x43,0xe1]
1653 @ CHECK: smlalbbge      r3, r1, r9, r0  @ encoding: [0x89,0x30,0x41,0xa1]
1654 @ CHECK: smlalbtle      r5, r6, r4, r1  @ encoding: [0xc4,0x51,0x46,0xd1]
1655 @ CHECK: smlaltbne      r4, r2, r3, r2  @ encoding: [0xa3,0x42,0x42,0x11]
1656 @ CHECK: smlaltteq      r8, r3, r8, r4  @ encoding: [0xe8,0x84,0x43,0x01]
1657
1658
1659 @------------------------------------------------------------------------------
1660 @ SMLALD/SMLALDX
1661 @------------------------------------------------------------------------------
1662         smlald r2, r3, r5, r8
1663         smlaldx r2, r3, r5, r8
1664         smlaldeq r2, r3, r5, r8
1665         smlaldxhi r2, r3, r5, r8
1666
1667 @ CHECK: smlald r2, r3, r5, r8          @ encoding: [0x15,0x28,0x43,0xe7]
1668 @ CHECK: smlaldx        r2, r3, r5, r8  @ encoding: [0x35,0x28,0x43,0xe7]
1669 @ CHECK: smlaldeq       r2, r3, r5, r8  @ encoding: [0x15,0x28,0x43,0x07]
1670 @ CHECK: smlaldxhi      r2, r3, r5, r8  @ encoding: [0x35,0x28,0x43,0x87]
1671
1672
1673 @------------------------------------------------------------------------------
1674 @ SMLAWB/SMLAWT
1675 @------------------------------------------------------------------------------
1676         smlawb r2, r3, r10, r8
1677         smlawt r8, r3, r5, r9
1678         smlawbeq r2, r7, r5, r8
1679         smlawthi r1, r3, r0, r8
1680
1681 @ CHECK: smlawb r2, r3, r10, r8         @ encoding: [0x83,0x8a,0x22,0xe1]
1682 @ CHECK: smlawt r8, r3, r5, r9          @ encoding: [0xc3,0x95,0x28,0xe1]
1683 @ CHECK: smlawbeq       r2, r7, r5, r8  @ encoding: [0x87,0x85,0x22,0x01]
1684 @ CHECK: smlawthi       r1, r3, r0, r8  @ encoding: [0xc3,0x80,0x21,0x81]
1685
1686
1687 @------------------------------------------------------------------------------
1688 @ SMLSD/SMLSDX
1689 @------------------------------------------------------------------------------
1690         smlsd r2, r3, r5, r8
1691         smlsdx r2, r3, r5, r8
1692         smlsdeq r2, r3, r5, r8
1693         smlsdxhi r2, r3, r5, r8
1694
1695 @ CHECK: smlsd  r2, r3, r5, r8          @ encoding: [0x53,0x85,0x02,0xe7]
1696 @ CHECK: smlsdx r2, r3, r5, r8          @ encoding: [0x73,0x85,0x02,0xe7]
1697 @ CHECK: smlsdeq        r2, r3, r5, r8  @ encoding: [0x53,0x85,0x02,0x07]
1698 @ CHECK: smlsdxhi       r2, r3, r5, r8  @ encoding: [0x73,0x85,0x02,0x87]
1699
1700
1701 @------------------------------------------------------------------------------
1702 @ SMLSLD/SMLSLDX
1703 @------------------------------------------------------------------------------
1704         smlsld r2, r9, r5, r1
1705         smlsldx r4, r11, r2, r8
1706         smlsldeq r8, r2, r5, r6
1707         smlsldxhi r1, r0, r3, r8
1708
1709 @ CHECK: smlsld r2, r9, r5, r1          @ encoding: [0x55,0x21,0x49,0xe7]
1710 @ CHECK: smlsldx        r4, r11, r2, r8 @ encoding: [0x72,0x48,0x4b,0xe7]
1711 @ CHECK: smlsldeq       r8, r2, r5, r6  @ encoding: [0x55,0x86,0x42,0x07]
1712 @ CHECK: smlsldxhi      r1, r0, r3, r8  @ encoding: [0x73,0x18,0x40,0x87]
1713
1714
1715 @------------------------------------------------------------------------------
1716 @ SMMLA/SMMLAR
1717 @------------------------------------------------------------------------------
1718         smmla r1, r2, r3, r4
1719         smmlar r4, r3, r2, r1
1720         smmlalo r1, r2, r3, r4
1721         smmlarcs r4, r3, r2, r1
1722
1723 @ CHECK: smmla  r1, r2, r3, r4          @ encoding: [0x12,0x43,0x51,0xe7]
1724 @ CHECK: smmlar r4, r3, r2, r1          @ encoding: [0x33,0x12,0x54,0xe7]
1725 @ CHECK: smmlalo        r1, r2, r3, r4  @ encoding: [0x12,0x43,0x51,0x37]
1726 @ CHECK: smmlarhs       r4, r3, r2, r1  @ encoding: [0x33,0x12,0x54,0x27]
1727
1728
1729 @------------------------------------------------------------------------------
1730 @ SMMLS/SMMLSR
1731 @------------------------------------------------------------------------------
1732         smmls r1, r2, r3, r4
1733         smmlsr r4, r3, r2, r1
1734         smmlslo r1, r2, r3, r4
1735         smmlsrcs r4, r3, r2, r1
1736
1737 @ CHECK: smmls  r1, r2, r3, r4          @ encoding: [0xd2,0x43,0x51,0xe7]
1738 @ CHECK: smmlsr r4, r3, r2, r1          @ encoding: [0xf3,0x12,0x54,0xe7]
1739 @ CHECK: smmlslo        r1, r2, r3, r4  @ encoding: [0xd2,0x43,0x51,0x37]
1740 @ CHECK: smmlsrhs       r4, r3, r2, r1  @ encoding: [0xf3,0x12,0x54,0x27]
1741
1742
1743 @------------------------------------------------------------------------------
1744 @ SMMUL/SMMULR
1745 @------------------------------------------------------------------------------
1746         smmul r2, r3, r4
1747         smmulr r3, r2, r1
1748         smmulcc r2, r3, r4
1749         smmulrhs r3, r2, r1
1750
1751 @ CHECK: smmul  r2, r3, r4              @ encoding: [0x13,0xf4,0x52,0xe7]
1752 @ CHECK: smmulr r3, r2, r1              @ encoding: [0x32,0xf1,0x53,0xe7]
1753 @ CHECK: smmullo        r2, r3, r4      @ encoding: [0x13,0xf4,0x52,0x37]
1754 @ CHECK: smmulrhs       r3, r2, r1      @ encoding: [0x32,0xf1,0x53,0x27]
1755
1756
1757 @------------------------------------------------------------------------------
1758 @ SMUAD/SMUADX
1759 @------------------------------------------------------------------------------
1760         smuad r2, r3, r4
1761         smuadx r3, r2, r1
1762         smuadlt r2, r3, r4
1763         smuadxge r3, r2, r1
1764
1765 @ CHECK: smuad  r2, r3, r4              @ encoding: [0x13,0xf4,0x02,0xe7]
1766 @ CHECK: smuadx r3, r2, r1              @ encoding: [0x32,0xf1,0x03,0xe7]
1767 @ CHECK: smuadlt        r2, r3, r4      @ encoding: [0x13,0xf4,0x02,0xb7]
1768 @ CHECK: smuadxge       r3, r2, r1      @ encoding: [0x32,0xf1,0x03,0xa7]
1769
1770
1771 @------------------------------------------------------------------------------
1772 @ SMULBB/SMULBT/SMULTB/SMULTT
1773 @------------------------------------------------------------------------------
1774         smulbb r3, r9, r0
1775         smulbt r5, r4, r1
1776         smultb r4, r2, r2
1777         smultt r8, r3, r4
1778         smulbbge r1, r9, r0
1779         smulbtle r5, r6, r4
1780         smultbne r2, r3, r2
1781         smultteq r8, r3, r4
1782
1783 @ CHECK: smulbb r3, r9, r0              @ encoding: [0x89,0x00,0x63,0xe1]
1784 @ CHECK: smulbt r5, r4, r1              @ encoding: [0xc4,0x01,0x65,0xe1]
1785 @ CHECK: smultb r4, r2, r2              @ encoding: [0xa2,0x02,0x64,0xe1]
1786 @ CHECK: smultt r8, r3, r4              @ encoding: [0xe3,0x04,0x68,0xe1]
1787 @ CHECK: smulbbge       r1, r9, r0      @ encoding: [0x89,0x00,0x61,0xa1]
1788 @ CHECK: smulbtle       r5, r6, r4      @ encoding: [0xc6,0x04,0x65,0xd1]
1789 @ CHECK: smultbne       r2, r3, r2      @ encoding: [0xa3,0x02,0x62,0x11]
1790 @ CHECK: smultteq       r8, r3, r4      @ encoding: [0xe3,0x04,0x68,0x01]
1791
1792
1793 @------------------------------------------------------------------------------
1794 @ SMULL
1795 @------------------------------------------------------------------------------
1796         smull r3, r9, r0, r1
1797         smulls r3, r9, r0, r2
1798         smulleq r8, r3, r4, r5
1799         smullseq r8, r3, r4, r3
1800
1801 @ CHECK: smull  r3, r9, r0, r1          @ encoding: [0x90,0x31,0xc9,0xe0]
1802 @ CHECK: smulls r3, r9, r0, r2          @ encoding: [0x90,0x32,0xd9,0xe0]
1803 @ CHECK: smulleq        r8, r3, r4, r5  @ encoding: [0x94,0x85,0xc3,0x00]
1804 @ CHECK: smullseq       r8, r3, r4, r3  @ encoding: [0x94,0x83,0xd3,0x00]
1805
1806
1807 @------------------------------------------------------------------------------
1808 @ SMULWB/SMULWT
1809 @------------------------------------------------------------------------------
1810         smulwb r3, r9, r0
1811         smulwt r3, r9, r2
1812
1813 @ CHECK: smulwb r3, r9, r0              @ encoding: [0xa9,0x00,0x23,0xe1]
1814 @ CHECK: smulwt r3, r9, r2              @ encoding: [0xe9,0x02,0x23,0xe1]
1815
1816
1817 @------------------------------------------------------------------------------
1818 @ SMUSD/SMUSDX
1819 @------------------------------------------------------------------------------
1820         smusd r3, r0, r1
1821         smusdx r3, r9, r2
1822         smusdeq r8, r3, r2
1823         smusdxne r7, r4, r3
1824
1825 @ CHECK: smusd  r3, r0, r1              @ encoding: [0x50,0xf1,0x03,0xe7]
1826 @ CHECK: smusdx r3, r9, r2              @ encoding: [0x79,0xf2,0x03,0xe7]
1827 @ CHECK: smusdeq        r8, r3, r2      @ encoding: [0x53,0xf2,0x08,0x07]
1828 @ CHECK: smusdxne       r7, r4, r3      @ encoding: [0x74,0xf3,0x07,0x17]
1829
1830
1831 @------------------------------------------------------------------------------
1832 @ SRS
1833 @------------------------------------------------------------------------------
1834         srsda sp, #5
1835         srsdb sp, #1
1836         srsia sp, #0
1837         srsib sp, #15
1838
1839         srsda sp!, #31
1840         srsdb sp!, #19
1841         srsia sp!, #2
1842         srsib sp!, #14
1843
1844         srsfa sp, #11
1845         srsea sp, #10
1846         srsfd sp, #9
1847         srsed sp, #5
1848
1849         srsfa sp!, #5
1850         srsea sp!, #5
1851         srsfd sp!, #5
1852         srsed sp!, #5
1853
1854         srs sp, #5
1855         srs sp!, #5
1856
1857 @ CHECK: srsda  sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
1858 @ CHECK: srsdb  sp, #1                  @ encoding: [0x01,0x05,0x4d,0xf9]
1859 @ CHECK: srsia  sp, #0                  @ encoding: [0x00,0x05,0xcd,0xf8]
1860 @ CHECK: srsib  sp, #15                 @ encoding: [0x0f,0x05,0xcd,0xf9]
1861
1862 @ CHECK: srsda  sp!, #31                @ encoding: [0x1f,0x05,0x6d,0xf8]
1863 @ CHECK: srsdb  sp!, #19                @ encoding: [0x13,0x05,0x6d,0xf9]
1864 @ CHECK: srsia  sp!, #2                 @ encoding: [0x02,0x05,0xed,0xf8]
1865 @ CHECK: srsib  sp!, #14                @ encoding: [0x0e,0x05,0xed,0xf9]
1866
1867 @ CHECK: srsda  sp, #11                 @ encoding: [0x0b,0x05,0x4d,0xf8]
1868 @ CHECK: srsdb  sp, #10                 @ encoding: [0x0a,0x05,0x4d,0xf9]
1869 @ CHECK: srsia  sp, #9                  @ encoding: [0x09,0x05,0xcd,0xf8]
1870 @ CHECK: srsib  sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf9]
1871
1872 @ CHECK: srsda  sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf8]
1873 @ CHECK: srsdb  sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf9]
1874 @ CHECK: srsia  sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
1875 @ CHECK: srsib  sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf9]
1876
1877 @ CHECK: srsia  sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf8]
1878 @ CHECK: srsia  sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
1879
1880
1881 @------------------------------------------------------------------------------
1882 @ SSAT
1883 @------------------------------------------------------------------------------
1884         ssat    r8, #1, r10
1885         ssat    r8, #1, r10, lsl #0
1886         ssat    r8, #1, r10, lsl #31
1887         ssat    r8, #1, r10, asr #32
1888         ssat    r8, #1, r10, asr #1
1889
1890 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x1a,0x80,0xa0,0xe6]
1891 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x1a,0x80,0xa0,0xe6]
1892 @ CHECK: ssat   r8, #1, r10, lsl #31    @ encoding: [0x9a,0x8f,0xa0,0xe6]
1893 @ CHECK: ssat   r8, #1, r10, asr #32    @ encoding: [0x5a,0x80,0xa0,0xe6]
1894 @ CHECK: ssat   r8, #1, r10, asr #1     @ encoding: [0xda,0x80,0xa0,0xe6]
1895
1896
1897 @------------------------------------------------------------------------------
1898 @ SSAT16
1899 @------------------------------------------------------------------------------
1900         ssat16  r2, #1, r7
1901         ssat16  r3, #16, r5
1902
1903 @ CHECK: ssat16 r2, #1, r7              @ encoding: [0x37,0x2f,0xa0,0xe6]
1904 @ CHECK: ssat16 r3, #16, r5             @ encoding: [0x35,0x3f,0xaf,0xe6]
1905
1906
1907 @------------------------------------------------------------------------------
1908 @ SSAX
1909 @------------------------------------------------------------------------------
1910         ssax r2, r3, r4
1911         ssaxlt r2, r3, r4
1912
1913 @ CHECK: ssax   r2, r3, r4              @ encoding: [0x54,0x2f,0x13,0xe6]
1914 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0x54,0x2f,0x13,0xb6]
1915
1916 @------------------------------------------------------------------------------
1917 @ SSUB16/SSUB8
1918 @------------------------------------------------------------------------------
1919         ssub16 r1, r0, r6
1920         ssub16ne r5, r3, r2
1921         ssub8 r9, r2, r4
1922         ssub8eq r5, r1, r2
1923
1924 @ CHECK: ssub16 r1, r0, r6              @ encoding: [0x76,0x1f,0x10,0xe6]
1925 @ CHECK: ssub16ne       r5, r3, r2      @ encoding: [0x72,0x5f,0x13,0x16]
1926 @ CHECK: ssub8  r9, r2, r4              @ encoding: [0xf4,0x9f,0x12,0xe6]
1927 @ CHECK: ssub8eq        r5, r1, r2      @ encoding: [0xf2,0x5f,0x11,0x06]
1928
1929 @------------------------------------------------------------------------------
1930 @ STC{L}/STC2{L}
1931 @------------------------------------------------------------------------------
1932         stc2 p0, c8, [r1, #4]
1933         stc2 p1, c7, [r2]
1934         stc2 p2, c6, [r3, #-224]
1935         stc2 p3, c5, [r4, #-120]!
1936         stc2 p4, c4, [r5], #16
1937         stc2 p5, c3, [r6], #-72
1938         stc2l p6, c2, [r7, #4]
1939         stc2l p7, c1, [r8]
1940         stc2l p8, c0, [r9, #-224]
1941         stc2l p9, c1, [r10, #-120]!
1942         stc2l p10, c2, [r11], #16
1943         stc2l p11, c3, [r12], #-72
1944
1945         stc p12, c4, [r0, #4]
1946         stc p13, c5, [r1]
1947         stc p14, c6, [r2, #-224]
1948         stc p15, c7, [r3, #-120]!
1949         stc p5, c8, [r4], #16
1950         stc p4, c9, [r5], #-72
1951         stcl p3, c10, [r6, #4]
1952         stcl p2, c11, [r7]
1953         stcl p1, c12, [r8, #-224]
1954         stcl p0, c13, [r9, #-120]!
1955         stcl p6, c14, [r10], #16
1956         stcl p7, c15, [r11], #-72
1957
1958         stclo p12, c4, [r0, #4]
1959         stchi p13, c5, [r1]
1960         stccs p14, c6, [r2, #-224]
1961         stccc p15, c7, [r3, #-120]!
1962         stceq p5, c8, [r4], #16
1963         stcgt p4, c9, [r5], #-72
1964         stcllt p3, c10, [r6, #4]
1965         stclge p2, c11, [r7]
1966         stclle p1, c12, [r8, #-224]
1967         stclne p0, c13, [r9, #-120]!
1968         stcleq p6, c14, [r10], #16
1969         stclhi p7, c15, [r11], #-72
1970
1971         stc2 p2, c8, [r1], { 25 }
1972
1973 @ CHECK: stc2   p0, c8, [r1, #4]        @ encoding: [0x01,0x80,0x81,0xfd]
1974 @ CHECK: stc2   p1, c7, [r2]            @ encoding: [0x00,0x71,0x82,0xfd]
1975 @ CHECK: stc2   p2, c6, [r3, #-224]     @ encoding: [0x38,0x62,0x03,0xfd]
1976 @ CHECK: stc2   p3, c5, [r4, #-120]!    @ encoding: [0x1e,0x53,0x24,0xfd]
1977 @ CHECK: stc2   p4, c4, [r5], #16       @ encoding: [0x04,0x44,0xa5,0xfc]
1978 @ CHECK: stc2   p5, c3, [r6], #-72      @ encoding: [0x12,0x35,0x26,0xfc]
1979 @ CHECK: stc2l  p6, c2, [r7, #4]        @ encoding: [0x01,0x26,0xc7,0xfd]
1980 @ CHECK: stc2l  p7, c1, [r8]            @ encoding: [0x00,0x17,0xc8,0xfd]
1981 @ CHECK: stc2l  p8, c0, [r9, #-224]     @ encoding: [0x38,0x08,0x49,0xfd]
1982 @ CHECK: stc2l  p9, c1, [r10, #-120]!   @ encoding: [0x1e,0x19,0x6a,0xfd]
1983 @ CHECK: stc2l  p10, c2, [r11], #16     @ encoding: [0x04,0x2a,0xeb,0xfc]
1984 @ CHECK: stc2l  p11, c3, [r12], #-72    @ encoding: [0x12,0x3b,0x6c,0xfc]
1985
1986 @ CHECK: stc    p12, c4, [r0, #4]       @ encoding: [0x01,0x4c,0x80,0xed]
1987 @ CHECK: stc    p13, c5, [r1]           @ encoding: [0x00,0x5d,0x81,0xed]
1988 @ CHECK: stc    p14, c6, [r2, #-224]    @ encoding: [0x38,0x6e,0x02,0xed]
1989 @ CHECK: stc    p15, c7, [r3, #-120]!   @ encoding: [0x1e,0x7f,0x23,0xed]
1990 @ CHECK: stc    p5, c8, [r4], #16       @ encoding: [0x04,0x85,0xa4,0xec]
1991 @ CHECK: stc    p4, c9, [r5], #-72      @ encoding: [0x12,0x94,0x25,0xec]
1992 @ CHECK: stcl   p3, c10, [r6, #4]       @ encoding: [0x01,0xa3,0xc6,0xed]
1993 @ CHECK: stcl   p2, c11, [r7]           @ encoding: [0x00,0xb2,0xc7,0xed]
1994 @ CHECK: stcl   p1, c12, [r8, #-224]    @ encoding: [0x38,0xc1,0x48,0xed]
1995 @ CHECK: stcl   p0, c13, [r9, #-120]!   @ encoding: [0x1e,0xd0,0x69,0xed]
1996 @ CHECK: stcl   p6, c14, [r10], #16     @ encoding: [0x04,0xe6,0xea,0xec]
1997 @ CHECK: stcl   p7, c15, [r11], #-72    @ encoding: [0x12,0xf7,0x6b,0xec]
1998
1999 @ CHECK: stclo  p12, c4, [r0, #4]       @ encoding: [0x01,0x4c,0x80,0x3d]
2000 @ CHECK: stchi  p13, c5, [r1]           @ encoding: [0x00,0x5d,0x81,0x8d]
2001 @ CHECK: stchs  p14, c6, [r2, #-224]    @ encoding: [0x38,0x6e,0x02,0x2d]
2002 @ CHECK: stclo  p15, c7, [r3, #-120]!   @ encoding: [0x1e,0x7f,0x23,0x3d]
2003 @ CHECK: stceq  p5, c8, [r4], #16       @ encoding: [0x04,0x85,0xa4,0x0c]
2004 @ CHECK: stcgt  p4, c9, [r5], #-72      @ encoding: [0x12,0x94,0x25,0xcc]
2005 @ CHECK: stcllt p3, c10, [r6, #4]       @ encoding: [0x01,0xa3,0xc6,0xbd]
2006 @ CHECK: stclge p2, c11, [r7]           @ encoding: [0x00,0xb2,0xc7,0xad]
2007 @ CHECK: stclle p1, c12, [r8, #-224]    @ encoding: [0x38,0xc1,0x48,0xdd]
2008 @ CHECK: stclne p0, c13, [r9, #-120]!   @ encoding: [0x1e,0xd0,0x69,0x1d]
2009 @ CHECK: stcleq p6, c14, [r10], #16     @ encoding: [0x04,0xe6,0xea,0x0c]
2010 @ CHECK: stclhi p7, c15, [r11], #-72    @ encoding: [0x12,0xf7,0x6b,0x8c]
2011
2012 @ CHECK: stc2   p2, c8, [r1], {25}      @ encoding: [0x19,0x82,0x81,0xfc]
2013
2014
2015 @------------------------------------------------------------------------------
2016 @ STM*
2017 @------------------------------------------------------------------------------
2018         stm       r2, {r1,r3-r6,sp}
2019         stmia     r3, {r1,r3-r6,lr}
2020         stmib     r4, {r1,r3-r6,sp}
2021         stmda     r5, {r1,r3-r6,sp}
2022         stmdb     r6, {r1,r3-r6,r8}
2023         stmfd     sp, {r1,r3-r6,sp}
2024
2025         @ with update
2026         stm       r8!, {r1,r3-r6,sp}
2027         stmib     r9!, {r1,r3-r6,sp}
2028         stmda     sp!, {r1,r3-r6}
2029         stmdb     r0!, {r1,r5,r7,sp}
2030
2031 @ CHECK: stm    r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x82,0xe8]
2032 @ CHECK: stm    r3, {lr, r1, r3, r4, r5, r6} @ encoding: [0x7a,0x40,0x83,0xe8]
2033 @ CHECK: stmib  r4, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x84,0xe9]
2034 @ CHECK: stmda  r5, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x05,0xe8]
2035 @ CHECK: stmdb  r6, {r1, r3, r4, r5, r6, r8} @ encoding: [0x7a,0x01,0x06,0xe9]
2036 @ CHECK: stmdb  sp, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x0d,0xe9]
2037
2038 @ CHECK: stm    r8!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa8,0xe8]
2039 @ CHECK: stmib  r9!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa9,0xe9]
2040 @ CHECK: stmda  sp!, {r1, r3, r4, r5, r6}     @ encoding: [0x7a,0x00,0x2d,0xe8]
2041 @ CHECK: stmdb  r0!, {r1, r5, r7, sp}         @ encoding: [0xa2,0x20,0x20,0xe9]
2042
2043
2044 @------------------------------------------------------------------------------
2045 @ STREX/STREXB/STREXH/STREXD
2046 @------------------------------------------------------------------------------
2047         strexb  r1, r3, [r4]
2048         strexh  r4, r2, [r5]
2049         strex  r2, r1, [r7]
2050         strexd  r6, r2, r3, [r8]
2051
2052 @ CHECK: strexb r1, r3, [r4]            @ encoding: [0x93,0x1f,0xc4,0xe1]
2053 @ CHECK: strexh r4, r2, [r5]            @ encoding: [0x92,0x4f,0xe5,0xe1]
2054 @ CHECK: strex  r2, r1, [r7]            @ encoding: [0x91,0x2f,0x87,0xe1]
2055 @ CHECK: strexd r6, r2, r3, [r8]        @ encoding: [0x92,0x6f,0xa8,0xe1]
2056
2057 @------------------------------------------------------------------------------
2058 @ STR
2059 @------------------------------------------------------------------------------
2060         strpl   r3, [r10, #-0]!
2061         strpl   r3, [r10, #0]!
2062
2063 @ CHECK: strpl  r3, [r10, #-0]!         @ encoding: [0x00,0x30,0x2a,0x55]
2064 @ CHECK: strpl  r3, [r10]!              @ encoding: [0x00,0x30,0xaa,0x55]
2065
2066 @------------------------------------------------------------------------------
2067 @ SUB
2068 @------------------------------------------------------------------------------
2069         sub r4, r5, #0xf000
2070         sub r4, r5, r6
2071         sub r4, r5, r6, lsl #5
2072         sub r4, r5, r6, lsr #5
2073         sub r4, r5, r6, lsr #5
2074         sub r4, r5, r6, asr #5
2075         sub r4, r5, r6, ror #5
2076         sub r6, r7, r8, lsl r9
2077         sub r6, r7, r8, lsr r9
2078         sub r6, r7, r8, asr r9
2079         sub r6, r7, r8, ror r9
2080
2081         @ destination register is optional
2082         sub r5, #0xf000
2083         sub r4, r5
2084         sub r4, r5, lsl #5
2085         sub r4, r5, lsr #5
2086         sub r4, r5, lsr #5
2087         sub r4, r5, asr #5
2088         sub r4, r5, ror #5
2089         sub r6, r7, lsl r9
2090         sub r6, r7, lsr r9
2091         sub r6, r7, asr r9
2092         sub r6, r7, ror r9
2093
2094 @ CHECK: sub    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x45,0xe2]
2095 @ CHECK: sub    r4, r5, r6              @ encoding: [0x06,0x40,0x45,0xe0]
2096 @ CHECK: sub    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x45,0xe0]
2097 @ CHECK: sub    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x45,0xe0]
2098 @ CHECK: sub    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x45,0xe0]
2099 @ CHECK: sub    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x45,0xe0]
2100 @ CHECK: sub    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x45,0xe0]
2101 @ CHECK: sub    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x47,0xe0]
2102 @ CHECK: sub    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x47,0xe0]
2103 @ CHECK: sub    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x47,0xe0]
2104 @ CHECK: sub    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x47,0xe0]
2105
2106
2107 @ CHECK: sub    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x45,0xe2]
2108 @ CHECK: sub    r4, r4, r5              @ encoding: [0x05,0x40,0x44,0xe0]
2109 @ CHECK: sub    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x44,0xe0]
2110 @ CHECK: sub    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x44,0xe0]
2111 @ CHECK: sub    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x44,0xe0]
2112 @ CHECK: sub    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x44,0xe0]
2113 @ CHECK: sub    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x44,0xe0]
2114 @ CHECK: sub    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x46,0xe0]
2115 @ CHECK: sub    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x46,0xe0]
2116 @ CHECK: sub    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x46,0xe0]
2117 @ CHECK: sub    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x46,0xe0]
2118
2119
2120 @------------------------------------------------------------------------------
2121 @ SVC
2122 @------------------------------------------------------------------------------
2123         svc #16
2124         svc #0
2125         svc #0xffffff
2126
2127 @ CHECK: svc    #16                     @ encoding: [0x10,0x00,0x00,0xef]
2128 @ CHECK: svc    #0                      @ encoding: [0x00,0x00,0x00,0xef]
2129 @ CHECK: svc    #16777215               @ encoding: [0xff,0xff,0xff,0xef]
2130
2131
2132 @------------------------------------------------------------------------------
2133 @ SWP/SWPB
2134 @------------------------------------------------------------------------------
2135         swp r1, r2, [r3]
2136         swp r4, r4, [r6]
2137         swpb r5, r1, [r9]
2138
2139 @ CHECK: swp    r1, r2, [r3]            @ encoding: [0x92,0x10,0x03,0xe1]
2140 @ CHECK: swp    r4, r4, [r6]            @ encoding: [0x94,0x40,0x06,0xe1]
2141 @ CHECK: swpb   r5, r1, [r9]            @ encoding: [0x91,0x50,0x49,0xe1]
2142
2143
2144 @------------------------------------------------------------------------------
2145 @ SXTAB
2146 @------------------------------------------------------------------------------
2147         sxtab r2, r3, r4
2148         sxtab r4, r5, r6, ror #0
2149         sxtablt r6, r2, r9, ror #8
2150         sxtab r5, r1, r4, ror #16
2151         sxtab r7, r8, r3, ror #24
2152
2153 @ CHECK: sxtab  r2, r3, r4              @ encoding: [0x74,0x20,0xa3,0xe6]
2154 @ CHECK: sxtab  r4, r5, r6              @ encoding: [0x76,0x40,0xa5,0xe6]
2155 @ CHECK: sxtablt r6, r2, r9, ror #8     @ encoding: [0x79,0x64,0xa2,0xb6]
2156 @ CHECK: sxtab  r5, r1, r4, ror #16     @ encoding: [0x74,0x58,0xa1,0xe6]
2157 @ CHECK: sxtab  r7, r8, r3, ror #24     @ encoding: [0x73,0x7c,0xa8,0xe6]
2158
2159
2160 @------------------------------------------------------------------------------
2161 @ SXTAB16
2162 @------------------------------------------------------------------------------
2163         sxtab16ge r0, r1, r4
2164         sxtab16 r6, r2, r7, ror #0
2165         sxtab16 r3, r5, r8, ror #8
2166         sxtab16 r3, r2, r1, ror #16
2167         sxtab16eq r1, r2, r3, ror #24
2168
2169 @ CHECK: sxtab16ge      r0, r1, r4      @ encoding: [0x74,0x00,0x81,0xa6]
2170 @ CHECK: sxtab16        r6, r2, r7      @ encoding: [0x77,0x60,0x82,0xe6]
2171 @ CHECK: sxtab16 r3, r5, r8, ror #8     @ encoding: [0x78,0x34,0x85,0xe6]
2172 @ CHECK: sxtab16 r3, r2, r1, ror #16    @ encoding: [0x71,0x38,0x82,0xe6]
2173 @ CHECK: sxtab16eq r1, r2, r3, ror #24  @ encoding: [0x73,0x1c,0x82,0x06]
2174
2175 @------------------------------------------------------------------------------
2176 @ SXTAH
2177 @------------------------------------------------------------------------------
2178         sxtah r1, r3, r9
2179         sxtahhi r6, r1, r6, ror #0
2180         sxtah r3, r8, r3, ror #8
2181         sxtahlo r2, r2, r4, ror #16
2182         sxtah r9, r3, r3, ror #24
2183
2184 @ CHECK: sxtah  r1, r3, r9              @ encoding: [0x79,0x10,0xb3,0xe6]
2185 @ CHECK: sxtahhi        r6, r1, r6      @ encoding: [0x76,0x60,0xb1,0x86]
2186 @ CHECK: sxtah  r3, r8, r3, ror #8      @ encoding: [0x73,0x34,0xb8,0xe6]
2187 @ CHECK: sxtahlo r2, r2, r4, ror #16    @ encoding: [0x74,0x28,0xb2,0x36]
2188 @ CHECK: sxtah  r9, r3, r3, ror #24     @ encoding: [0x73,0x9c,0xb3,0xe6]
2189
2190 @------------------------------------------------------------------------------
2191 @ SXTB
2192 @------------------------------------------------------------------------------
2193         sxtbge r2, r4
2194         sxtb r5, r6, ror #0
2195         sxtb r6, r9, ror #8
2196         sxtbcc r5, r1, ror #16
2197         sxtb r8, r3, ror #24
2198
2199 @ CHECK: sxtbge r2, r4                  @ encoding: [0x74,0x20,0xaf,0xa6]
2200 @ CHECK: sxtb   r5, r6                  @ encoding: [0x76,0x50,0xaf,0xe6]
2201 @ CHECK: sxtb   r6, r9, ror #8          @ encoding: [0x79,0x64,0xaf,0xe6]
2202 @ CHECK: sxtblo r5, r1, ror #16         @ encoding: [0x71,0x58,0xaf,0x36]
2203 @ CHECK: sxtb   r8, r3, ror #24         @ encoding: [0x73,0x8c,0xaf,0xe6]
2204
2205
2206 @------------------------------------------------------------------------------
2207 @ SXTB16
2208 @------------------------------------------------------------------------------
2209         sxtb16 r1, r4
2210         sxtb16 r6, r7, ror #0
2211         sxtb16cs r3, r5, ror #8
2212         sxtb16 r3, r1, ror #16
2213         sxtb16ge r2, r3, ror #24
2214
2215 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x74,0x10,0x8f,0xe6]
2216 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x77,0x60,0x8f,0xe6]
2217 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x75,0x34,0x8f,0x26]
2218 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x71,0x38,0x8f,0xe6]
2219 @ CHECK: sxtb16ge       r2, r3, ror #24 @ encoding: [0x73,0x2c,0x8f,0xa6]
2220
2221
2222 @------------------------------------------------------------------------------
2223 @ SXTH
2224 @------------------------------------------------------------------------------
2225         sxthne r3, r9
2226         sxth r1, r6, ror #0
2227         sxth r3, r8, ror #8
2228         sxthle r2, r2, ror #16
2229         sxth r9, r3, ror #24
2230
2231 @ CHECK: sxthne r3, r9                  @ encoding: [0x79,0x30,0xbf,0x16]
2232 @ CHECK: sxth   r1, r6                  @ encoding: [0x76,0x10,0xbf,0xe6]
2233 @ CHECK: sxth   r3, r8, ror #8          @ encoding: [0x78,0x34,0xbf,0xe6]
2234 @ CHECK: sxthle r2, r2, ror #16         @ encoding: [0x72,0x28,0xbf,0xd6]
2235 @ CHECK: sxth   r9, r3, ror #24         @ encoding: [0x73,0x9c,0xbf,0xe6]
2236
2237
2238 @------------------------------------------------------------------------------
2239 @ TEQ
2240 @------------------------------------------------------------------------------
2241         teq r5, #0xf000
2242         teq r4, r5
2243         teq r4, r5, lsl #5
2244         teq r4, r5, lsr #5
2245         teq r4, r5, lsr #5
2246         teq r4, r5, asr #5
2247         teq r4, r5, ror #5
2248         teq r6, r7, lsl r9
2249         teq r6, r7, lsr r9
2250         teq r6, r7, asr r9
2251         teq r6, r7, ror r9
2252
2253 @ CHECK: teq    r5, #61440              @ encoding: [0x0f,0x0a,0x35,0xe3]
2254 @ CHECK: teq    r4, r5                  @ encoding: [0x05,0x00,0x34,0xe1]
2255 @ CHECK: teq    r4, r5, lsl #5          @ encoding: [0x85,0x02,0x34,0xe1]
2256 @ CHECK: teq    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x34,0xe1]
2257 @ CHECK: teq    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x34,0xe1]
2258 @ CHECK: teq    r4, r5, asr #5          @ encoding: [0xc5,0x02,0x34,0xe1]
2259 @ CHECK: teq    r4, r5, ror #5          @ encoding: [0xe5,0x02,0x34,0xe1]
2260 @ CHECK: teq    r6, r7, lsl r9          @ encoding: [0x17,0x09,0x36,0xe1]
2261 @ CHECK: teq    r6, r7, lsr r9          @ encoding: [0x37,0x09,0x36,0xe1]
2262 @ CHECK: teq    r6, r7, asr r9          @ encoding: [0x57,0x09,0x36,0xe1]
2263 @ CHECK: teq    r6, r7, ror r9          @ encoding: [0x77,0x09,0x36,0xe1]
2264
2265
2266 @------------------------------------------------------------------------------
2267 @ TST
2268 @------------------------------------------------------------------------------
2269         tst r5, #0xf000
2270         tst r4, r5
2271         tst r4, r5, lsl #5
2272         tst r4, r5, lsr #5
2273         tst r4, r5, lsr #5
2274         tst r4, r5, asr #5
2275         tst r4, r5, ror #5
2276         tst r6, r7, lsl r9
2277         tst r6, r7, lsr r9
2278         tst r6, r7, asr r9
2279         tst r6, r7, ror r9
2280
2281 @ CHECK: tst    r5, #61440              @ encoding: [0x0f,0x0a,0x15,0xe3]
2282 @ CHECK: tst    r4, r5                  @ encoding: [0x05,0x00,0x14,0xe1]
2283 @ CHECK: tst    r4, r5, lsl #5          @ encoding: [0x85,0x02,0x14,0xe1]
2284 @ CHECK: tst    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x14,0xe1]
2285 @ CHECK: tst    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x14,0xe1]
2286 @ CHECK: tst    r4, r5, asr #5          @ encoding: [0xc5,0x02,0x14,0xe1]
2287 @ CHECK: tst    r4, r5, ror #5          @ encoding: [0xe5,0x02,0x14,0xe1]
2288 @ CHECK: tst    r6, r7, lsl r9          @ encoding: [0x17,0x09,0x16,0xe1]
2289 @ CHECK: tst    r6, r7, lsr r9          @ encoding: [0x37,0x09,0x16,0xe1]
2290 @ CHECK: tst    r6, r7, asr r9          @ encoding: [0x57,0x09,0x16,0xe1]
2291 @ CHECK: tst    r6, r7, ror r9          @ encoding: [0x77,0x09,0x16,0xe1]
2292
2293
2294 @------------------------------------------------------------------------------
2295 @ UADD16/UADD8
2296 @------------------------------------------------------------------------------
2297         uadd16 r1, r2, r3
2298         uadd16gt r1, r2, r3
2299         uadd8 r1, r2, r3
2300         uadd8le r1, r2, r3
2301
2302 @ CHECK: uadd16 r1, r2, r3              @ encoding: [0x13,0x1f,0x52,0xe6]
2303 @ CHECK: uadd16gt       r1, r2, r3      @ encoding: [0x13,0x1f,0x52,0xc6]
2304 @ CHECK: uadd8  r1, r2, r3              @ encoding: [0x93,0x1f,0x52,0xe6]
2305 @ CHECK: uadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x52,0xd6]
2306
2307
2308 @------------------------------------------------------------------------------
2309 @ UASX
2310 @------------------------------------------------------------------------------
2311         uasx r9, r12, r0
2312         uasxeq r9, r12, r0
2313
2314 @ CHECK: uasx   r9, r12, r0             @ encoding: [0x30,0x9f,0x5c,0xe6]
2315 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0x30,0x9f,0x5c,0x06]
2316
2317
2318 @------------------------------------------------------------------------------
2319 @ UBFX
2320 @------------------------------------------------------------------------------
2321         ubfx r4, r5, #16, #1
2322         ubfxgt r4, r5, #16, #16
2323
2324 @ CHECK: ubfx   r4, r5, #16, #1         @ encoding: [0x55,0x48,0xe0,0xe7]
2325 @ CHECK: ubfxgt r4, r5, #16, #16        @ encoding: [0x55,0x48,0xef,0xc7]
2326
2327
2328 @------------------------------------------------------------------------------
2329 @ UHADD16/UHADD8
2330 @------------------------------------------------------------------------------
2331         uhadd16 r4, r8, r2
2332         uhadd16gt r4, r8, r2
2333         uhadd8 r4, r8, r2
2334         uhadd8gt r4, r8, r2
2335
2336 @ CHECK: uhadd16        r4, r8, r2      @ encoding: [0x12,0x4f,0x78,0xe6]
2337 @ CHECK: uhadd16gt      r4, r8, r2      @ encoding: [0x12,0x4f,0x78,0xc6]
2338 @ CHECK: uhadd8 r4, r8, r2              @ encoding: [0x92,0x4f,0x78,0xe6]
2339 @ CHECK: uhadd8gt       r4, r8, r2      @ encoding: [0x92,0x4f,0x78,0xc6]
2340
2341
2342 @------------------------------------------------------------------------------
2343 @ UHASX
2344 @------------------------------------------------------------------------------
2345         uhasx r4, r8, r2
2346         uhasxgt r4, r8, r2
2347
2348 @ CHECK: uhasx  r4, r8, r2              @ encoding: [0x32,0x4f,0x78,0xe6]
2349 @ CHECK: uhasxgt r4, r8, r2             @ encoding: [0x32,0x4f,0x78,0xc6]
2350
2351
2352 @------------------------------------------------------------------------------
2353 @ UHSUB16/UHSUB8
2354 @------------------------------------------------------------------------------
2355         uhsub16 r4, r8, r2
2356         uhsub16gt r4, r8, r2
2357         uhsub8 r4, r8, r2
2358         uhsub8gt r4, r8, r2
2359
2360 @ CHECK: uhsub16        r4, r8, r2      @ encoding: [0x72,0x4f,0x78,0xe6]
2361 @ CHECK: uhsub16gt      r4, r8, r2      @ encoding: [0x72,0x4f,0x78,0xc6]
2362 @ CHECK: uhsub8 r4, r8, r2              @ encoding: [0xf2,0x4f,0x78,0xe6]
2363 @ CHECK: uhsub8gt       r4, r8, r2      @ encoding: [0xf2,0x4f,0x78,0xc6]
2364
2365
2366 @------------------------------------------------------------------------------
2367 @ UMAAL
2368 @------------------------------------------------------------------------------
2369         umaal r3, r4, r5, r6
2370         umaallt r3, r4, r5, r6
2371
2372 @ CHECK: umaal  r3, r4, r5, r6          @ encoding: [0x95,0x36,0x44,0xe0]
2373 @ CHECK: umaallt        r3, r4, r5, r6  @ encoding: [0x95,0x36,0x44,0xb0]
2374
2375
2376 @------------------------------------------------------------------------------
2377 @ UMLAL
2378 @------------------------------------------------------------------------------
2379         umlal r2, r4, r6, r8
2380         umlalgt r6, r1, r2, r6
2381         umlals r2, r9, r2, r3
2382         umlalseq r3, r5, r1, r2
2383
2384 @ CHECK: umlal  r2, r4, r6, r8          @ encoding: [0x96,0x28,0xa4,0xe0]
2385 @ CHECK: umlalgt        r6, r1, r2, r6  @ encoding: [0x92,0x66,0xa1,0xc0]
2386 @ CHECK: umlals r2, r9, r2, r3          @ encoding: [0x92,0x23,0xb9,0xe0]
2387 @ CHECK: umlalseq       r3, r5, r1, r2  @ encoding: [0x91,0x32,0xb5,0x00]
2388
2389
2390 @------------------------------------------------------------------------------
2391 @ UMULL
2392 @------------------------------------------------------------------------------
2393         umull r2, r4, r6, r8
2394         umullgt r6, r1, r2, r6
2395         umulls r2, r9, r2, r3
2396         umullseq r3, r5, r1, r2
2397
2398 @ CHECK: umull  r2, r4, r6, r8          @ encoding: [0x96,0x28,0x84,0xe0]
2399 @ CHECK: umullgt        r6, r1, r2, r6  @ encoding: [0x92,0x66,0x81,0xc0]
2400 @ CHECK: umulls r2, r9, r2, r3          @ encoding: [0x92,0x23,0x99,0xe0]
2401 @ CHECK: umullseq       r3, r5, r1, r2  @ encoding: [0x91,0x32,0x95,0x00]
2402
2403
2404 @------------------------------------------------------------------------------
2405 @ UQADD16/UQADD8
2406 @------------------------------------------------------------------------------
2407         uqadd16 r1, r2, r3
2408         uqadd16gt r4, r7, r9
2409         uqadd8 r3, r4, r8
2410         uqadd8le r8, r1, r2
2411
2412
2413 @ CHECK: uqadd16        r1, r2, r3      @ encoding: [0x13,0x1f,0x62,0xe6]
2414 @ CHECK: uqadd16gt      r4, r7, r9      @ encoding: [0x19,0x4f,0x67,0xc6]
2415 @ CHECK: uqadd8 r3, r4, r8              @ encoding: [0x98,0x3f,0x64,0xe6]
2416 @ CHECK: uqadd8le       r8, r1, r2      @ encoding: [0x92,0x8f,0x61,0xd6]
2417
2418
2419 @------------------------------------------------------------------------------
2420 @ UQASX
2421 @------------------------------------------------------------------------------
2422         uqasx r2, r4, r1
2423         uqasxhi r5, r2, r9
2424
2425 @ CHECK: uqasx  r2, r4, r1              @ encoding: [0x31,0x2f,0x64,0xe6]
2426 @ CHECK: uqasxhi        r5, r2, r9      @ encoding: [0x39,0x5f,0x62,0x86]
2427
2428
2429 @------------------------------------------------------------------------------
2430 @ UQSAX
2431 @------------------------------------------------------------------------------
2432         uqsax r1, r3, r7
2433         uqsaxal r3, r6, r2
2434
2435 @ CHECK: uqsax  r1, r3, r7              @ encoding: [0x57,0x1f,0x63,0xe6]
2436 @ CHECK: uqsax  r3, r6, r2              @ encoding: [0x52,0x3f,0x66,0xe6]
2437
2438
2439 @------------------------------------------------------------------------------
2440 @ UQSUB16/UQSUB8
2441 @------------------------------------------------------------------------------
2442         uqsub16 r1, r5, r3
2443         uqsub16gt r3, r2, r5
2444         uqsub8 r2, r1, r4
2445         uqsub8le r4, r6, r9
2446
2447 @ CHECK: uqsub16        r1, r5, r3      @ encoding: [0x73,0x1f,0x65,0xe6]
2448 @ CHECK: uqsub16gt      r3, r2, r5      @ encoding: [0x75,0x3f,0x62,0xc6]
2449 @ CHECK: uqsub8 r2, r1, r4              @ encoding: [0xf4,0x2f,0x61,0xe6]
2450 @ CHECK: uqsub8le       r4, r6, r9      @ encoding: [0xf9,0x4f,0x66,0xd6]
2451
2452
2453 @------------------------------------------------------------------------------
2454 @ USADA8/USAD8
2455 @------------------------------------------------------------------------------
2456         usad8 r2, r1, r4
2457         usad8le r4, r6, r9
2458         usada8 r1, r5, r3, r7
2459         usada8gt r3, r2, r5, r1
2460
2461 @ CHECK: usad8  r2, r1, r4              @ encoding: [0x11,0xf4,0x82,0xe7]
2462 @ CHECK: usad8le        r4, r6, r9      @ encoding: [0x16,0xf9,0x84,0xd7]
2463 @ CHECK: usada8 r1, r5, r3, r7          @ encoding: [0x15,0x73,0x81,0xe7]
2464 @ CHECK: usada8gt       r3, r2, r5, r1  @ encoding: [0x12,0x15,0x83,0xc7]
2465
2466
2467 @------------------------------------------------------------------------------
2468 @ USAT
2469 @------------------------------------------------------------------------------
2470         usat    r8, #1, r10
2471         usat    r8, #4, r10, lsl #0
2472         usat    r8, #5, r10, lsl #31
2473         usat    r8, #31, r10, asr #32
2474         usat    r8, #16, r10, asr #1
2475
2476 @ CHECK: usat   r8, #1, r10             @ encoding: [0x1a,0x80,0xe1,0xe6]
2477 @ CHECK: usat   r8, #4, r10             @ encoding: [0x1a,0x80,0xe4,0xe6]
2478 @ CHECK: usat   r8, #5, r10, lsl #31    @ encoding: [0x9a,0x8f,0xe5,0xe6]
2479 @ CHECK: usat   r8, #31, r10, asr #32   @ encoding: [0x5a,0x80,0xff,0xe6]
2480 @ CHECK: usat   r8, #16, r10, asr #1    @ encoding: [0xda,0x80,0xf0,0xe6]
2481
2482
2483 @------------------------------------------------------------------------------
2484 @ USAT16
2485 @------------------------------------------------------------------------------
2486         usat16  r2, #2, r7
2487         usat16  r3, #15, r5
2488
2489 @ CHECK: usat16 r2, #2, r7              @ encoding: [0x37,0x2f,0xe2,0xe6]
2490 @ CHECK: usat16 r3, #15, r5             @ encoding: [0x35,0x3f,0xef,0xe6]
2491
2492
2493 @------------------------------------------------------------------------------
2494 @ USAX
2495 @------------------------------------------------------------------------------
2496         usax r2, r3, r4
2497         usaxne r2, r3, r4
2498
2499 @ CHECK: usax   r2, r3, r4              @ encoding: [0x54,0x2f,0x53,0xe6]
2500 @ CHECK: usaxne r2, r3, r4              @ encoding: [0x54,0x2f,0x53,0x16]
2501
2502 @------------------------------------------------------------------------------
2503 @ USUB16/USUB8
2504 @------------------------------------------------------------------------------
2505         usub16 r4, r2, r7
2506         usub16hi r1, r1, r3
2507         usub8 r1, r8, r5
2508         usub8le r9, r2, r3
2509
2510 @ CHECK: usub16 r4, r2, r7              @ encoding: [0x77,0x4f,0x52,0xe6]
2511 @ CHECK: usub16hi       r1, r1, r3      @ encoding: [0x73,0x1f,0x51,0x86]
2512 @ CHECK: usub8  r1, r8, r5              @ encoding: [0xf5,0x1f,0x58,0xe6]
2513 @ CHECK: usub8le        r9, r2, r3      @ encoding: [0xf3,0x9f,0x52,0xd6]
2514
2515
2516 @------------------------------------------------------------------------------
2517 @ UXTAB
2518 @------------------------------------------------------------------------------
2519         uxtab r2, r3, r4
2520         uxtab r4, r5, r6, ror #0
2521         uxtablt r6, r2, r9, ror #8
2522         uxtab r5, r1, r4, ror #16
2523         uxtab r7, r8, r3, ror #24
2524
2525 @ CHECK: uxtab  r2, r3, r4              @ encoding: [0x74,0x20,0xe3,0xe6]
2526 @ CHECK: uxtab  r4, r5, r6              @ encoding: [0x76,0x40,0xe5,0xe6]
2527 @ CHECK: uxtablt r6, r2, r9, ror #8     @ encoding: [0x79,0x64,0xe2,0xb6]
2528 @ CHECK: uxtab  r5, r1, r4, ror #16     @ encoding: [0x74,0x58,0xe1,0xe6]
2529 @ CHECK: uxtab  r7, r8, r3, ror #24     @ encoding: [0x73,0x7c,0xe8,0xe6]
2530
2531
2532 @------------------------------------------------------------------------------
2533 @ UXTAB16
2534 @------------------------------------------------------------------------------
2535         uxtab16ge r0, r1, r4
2536         uxtab16 r6, r2, r7, ror #0
2537         uxtab16 r3, r5, r8, ror #8
2538         uxtab16 r3, r2, r1, ror #16
2539         uxtab16eq r1, r2, r3, ror #24
2540
2541 @ CHECK: uxtab16ge      r0, r1, r4      @ encoding: [0x74,0x00,0xc1,0xa6]
2542 @ CHECK: uxtab16        r6, r2, r7      @ encoding: [0x77,0x60,0xc2,0xe6]
2543 @ CHECK: uxtab16        r3, r5, r8, ror #8 @ encoding: [0x78,0x34,0xc5,0xe6]
2544 @ CHECK: uxtab16        r3, r2, r1, ror #16 @ encoding: [0x71,0x38,0xc2,0xe6]
2545 @ CHECK: uxtab16eq      r1, r2, r3, ror #24 @ encoding: [0x73,0x1c,0xc2,0x06]
2546
2547
2548 @------------------------------------------------------------------------------
2549 @ UXTAH
2550 @------------------------------------------------------------------------------
2551         uxtah r1, r3, r9
2552         uxtahhi r6, r1, r6, ror #0
2553         uxtah r3, r8, r3, ror #8
2554         uxtahlo r2, r2, r4, ror #16
2555         uxtah r9, r3, r3, ror #24
2556
2557 @ CHECK: uxtah  r1, r3, r9              @ encoding: [0x79,0x10,0xf3,0xe6]
2558 @ CHECK: uxtahhi        r6, r1, r6      @ encoding: [0x76,0x60,0xf1,0x86]
2559 @ CHECK: uxtah  r3, r8, r3, ror #8      @ encoding: [0x73,0x34,0xf8,0xe6]
2560 @ CHECK: uxtahlo        r2, r2, r4, ror #16 @ encoding: [0x74,0x28,0xf2,0x36]
2561 @ CHECK: uxtah  r9, r3, r3, ror #24     @ encoding: [0x73,0x9c,0xf3,0xe6]
2562
2563 @------------------------------------------------------------------------------
2564 @ UXTB
2565 @------------------------------------------------------------------------------
2566         uxtbge r2, r4
2567         uxtb r5, r6, ror #0
2568         uxtb r6, r9, ror #8
2569         uxtbcc r5, r1, ror #16
2570         uxtb r8, r3, ror #24
2571
2572 @ CHECK: uxtbge r2, r4                  @ encoding: [0x74,0x20,0xef,0xa6]
2573 @ CHECK: uxtb   r5, r6                  @ encoding: [0x76,0x50,0xef,0xe6]
2574 @ CHECK: uxtb   r6, r9, ror #8          @ encoding: [0x79,0x64,0xef,0xe6]
2575 @ CHECK: uxtblo r5, r1, ror #16         @ encoding: [0x71,0x58,0xef,0x36]
2576 @ CHECK: uxtb   r8, r3, ror #24         @ encoding: [0x73,0x8c,0xef,0xe6]
2577
2578
2579 @------------------------------------------------------------------------------
2580 @ UXTB16
2581 @------------------------------------------------------------------------------
2582         uxtb16 r1, r4
2583         uxtb16 r6, r7, ror #0
2584         uxtb16cs r3, r5, ror #8
2585         uxtb16 r3, r1, ror #16
2586         uxtb16ge r2, r3, ror #24
2587
2588 @ CHECK: uxtb16 r1, r4                  @ encoding: [0x74,0x10,0xcf,0xe6]
2589 @ CHECK: uxtb16 r6, r7                  @ encoding: [0x77,0x60,0xcf,0xe6]
2590 @ CHECK: uxtb16hs       r3, r5, ror #8  @ encoding: [0x75,0x34,0xcf,0x26]
2591 @ CHECK: uxtb16 r3, r1, ror #16         @ encoding: [0x71,0x38,0xcf,0xe6]
2592 @ CHECK: uxtb16ge       r2, r3, ror #24 @ encoding: [0x73,0x2c,0xcf,0xa6]
2593
2594
2595 @------------------------------------------------------------------------------
2596 @ UXTH
2597 @------------------------------------------------------------------------------
2598         uxthne r3, r9
2599         uxth r1, r6, ror #0
2600         uxth r3, r8, ror #8
2601         uxthle r2, r2, ror #16
2602         uxth r9, r3, ror #24
2603
2604 @ CHECK: uxthne r3, r9                  @ encoding: [0x79,0x30,0xff,0x16]
2605 @ CHECK: uxth   r1, r6                  @ encoding: [0x76,0x10,0xff,0xe6]
2606 @ CHECK: uxth   r3, r8, ror #8          @ encoding: [0x78,0x34,0xff,0xe6]
2607 @ CHECK: uxthle r2, r2, ror #16         @ encoding: [0x72,0x28,0xff,0xd6]
2608 @ CHECK: uxth   r9, r3, ror #24         @ encoding: [0x73,0x9c,0xff,0xe6]
2609
2610
2611 @------------------------------------------------------------------------------
2612 @ WFE/WFI/YIELD
2613 @------------------------------------------------------------------------------
2614         wfe
2615         wfehi
2616         wfi
2617         wfilt
2618         yield
2619         yieldne
2620
2621 @ CHECK: wfe @ encoding: [0x02,0xf0,0x20,0xe3]
2622 @ CHECK: wfehi @ encoding: [0x02,0xf0,0x20,0x83]
2623 @ CHECK: wfi @ encoding: [0x03,0xf0,0x20,0xe3]
2624 @ CHECK: wfilt @ encoding: [0x03,0xf0,0x20,0xb3]
2625 @ CHECK: yield @ encoding: [0x01,0xf0,0x20,0xe3]
2626 @ CHECK: yieldne @ encoding: [0x01,0xf0,0x20,0x13]