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