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