6dba430a22b9295476456c910baad7801b56249e
[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 @ NOP
1084 @------------------------------------------------------------------------------
1085         nop
1086         nopgt
1087
1088 @ CHECK: nop @ encoding: [0x00,0xf0,0x20,0xe3]
1089 @ CHECK: nopgt @ encoding: [0x00,0xf0,0x20,0xc3]
1090
1091
1092 @------------------------------------------------------------------------------
1093 @ ORR
1094 @------------------------------------------------------------------------------
1095         orr r4, r5, #0xf000
1096         orr r4, r5, r6
1097         orr r4, r5, r6, lsl #5
1098         orr r4, r5, r6, lsr #5
1099         orr r4, r5, r6, lsr #5
1100         orr r4, r5, r6, asr #5
1101         orr r4, r5, r6, ror #5
1102         orr r6, r7, r8, lsl r9
1103         orr r6, r7, r8, lsr r9
1104         orr r6, r7, r8, asr r9
1105         orr r6, r7, r8, ror r9
1106         orr r4, r5, r6, rrx
1107
1108         @ destination register is optional
1109         orr r5, #0xf000
1110         orr r4, r5
1111         orr r4, r5, lsl #5
1112         orr r4, r5, lsr #5
1113         orr r4, r5, lsr #5
1114         orr r4, r5, asr #5
1115         orr r4, r5, ror #5
1116         orr r6, r7, lsl r9
1117         orr r6, r7, lsr r9
1118         orr r6, r7, asr r9
1119         orr r6, r7, ror r9
1120         orr r4, r5, rrx
1121
1122 @ CHECK: orr    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x85,0xe3]
1123 @ CHECK: orr    r4, r5, r6              @ encoding: [0x06,0x40,0x85,0xe1]
1124 @ CHECK: orr    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x85,0xe1]
1125 @ CHECK: orr    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe1]
1126 @ CHECK: orr    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe1]
1127 @ CHECK: orr    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x85,0xe1]
1128 @ CHECK: orr    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x85,0xe1]
1129 @ CHECK: orr    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x87,0xe1]
1130 @ CHECK: orr    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x87,0xe1]
1131 @ CHECK: orr    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x87,0xe1]
1132 @ CHECK: orr    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0xe1]
1133 @ CHECK: orr    r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x85,0xe1]
1134
1135 @ CHECK: orr    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0xe3]
1136 @ CHECK: orr    r4, r4, r5              @ encoding: [0x05,0x40,0x84,0xe1]
1137 @ CHECK: orr    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x84,0xe1]
1138 @ CHECK: orr    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe1]
1139 @ CHECK: orr    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe1]
1140 @ CHECK: orr    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x84,0xe1]
1141 @ CHECK: orr    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x84,0xe1]
1142 @ CHECK: orr    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x86,0xe1]
1143 @ CHECK: orr    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x86,0xe1]
1144 @ CHECK: orr    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0xe1]
1145 @ CHECK: orr    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x86,0xe1]
1146 @ CHECK: orr    r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x84,0xe1]
1147
1148         orrseq r4, r5, #0xf000
1149         orrne r4, r5, r6
1150         orrseq r4, r5, r6, lsl #5
1151         orrlo r6, r7, r8, ror r9
1152         orrshi r4, r5, r6, rrx
1153         orrcs r5, #0xf000
1154         orrseq r4, r5
1155         orrne r6, r7, asr r9
1156         orrslt r6, r7, ror r9
1157         orrsgt r4, r5, rrx
1158
1159 @ CHECK: orrseq r4, r5, #61440          @ encoding: [0x0f,0x4a,0x95,0x03]
1160 @ CHECK: orrne  r4, r5, r6              @ encoding: [0x06,0x40,0x85,0x11]
1161 @ CHECK: orrseq r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x95,0x01]
1162 @ CHECK: orrlo  r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0x31]
1163 @ CHECK: orrshi r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x95,0x81]
1164 @ CHECK: orrhs  r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0x23]
1165 @ CHECK: orrseq r4, r4, r5              @ encoding: [0x05,0x40,0x94,0x01]
1166 @ CHECK: orrne  r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0x11]
1167 @ CHECK: orrslt r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x96,0xb1]
1168 @ CHECK: orrsgt r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x94,0xc1]
1169
1170 @------------------------------------------------------------------------------
1171 @ PKH
1172 @------------------------------------------------------------------------------
1173         pkhbt r2, r2, r3
1174         pkhbt r2, r2, r3, lsl #31
1175         pkhbt r2, r2, r3, lsl #0
1176         pkhbt r2, r2, r3, lsl #15
1177
1178         pkhtb r2, r2, r3
1179         pkhtb r2, r2, r3, asr #31
1180         pkhtb r2, r2, r3, asr #15
1181
1182 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
1183 @ CHECK: pkhbt  r2, r2, r3, lsl #31     @ encoding: [0x93,0x2f,0x82,0xe6]
1184 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
1185 @ CHECK: pkhbt  r2, r2, r3, lsl #15     @ encoding: [0x93,0x27,0x82,0xe6]
1186
1187 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
1188 @ CHECK: pkhtb  r2, r2, r3, asr #31     @ encoding: [0xd3,0x2f,0x82,0xe6]
1189 @ CHECK: pkhtb  r2, r2, r3, asr #15     @ encoding: [0xd3,0x27,0x82,0xe6]
1190
1191 @------------------------------------------------------------------------------
1192 @ FIXME: PLD
1193 @------------------------------------------------------------------------------
1194 @------------------------------------------------------------------------------
1195 @ FIXME: PLI
1196 @------------------------------------------------------------------------------
1197
1198
1199 @------------------------------------------------------------------------------
1200 @ POP
1201 @------------------------------------------------------------------------------
1202         pop {r7}
1203         pop {r7, r8, r9, r10}
1204
1205 @ CHECK: pop    {r7}                    @ encoding: [0x04,0x70,0x9d,0xe4]
1206 @ CHECK: pop    {r7, r8, r9, r10}       @ encoding: [0x80,0x07,0xbd,0xe8]
1207
1208
1209 @------------------------------------------------------------------------------
1210 @ PUSH
1211 @------------------------------------------------------------------------------
1212         push {r7}
1213         push {r7, r8, r9, r10}
1214
1215 @ CHECK: push   {r7}                    @ encoding: [0x04,0x70,0x2d,0xe5]
1216 @ CHECK: push   {r7, r8, r9, r10}       @ encoding: [0x80,0x07,0x2d,0xe9]
1217
1218
1219 @------------------------------------------------------------------------------
1220 @ QADD/QADD16/QADD8
1221 @------------------------------------------------------------------------------
1222         qadd r1, r2, r3
1223         qaddne r1, r2, r3
1224         qadd16 r1, r2, r3
1225         qadd16gt r1, r2, r3
1226         qadd8 r1, r2, r3
1227         qadd8le r1, r2, r3
1228
1229 @ CHECK: qadd   r1, r2, r3              @ encoding: [0x52,0x10,0x03,0xe1]
1230 @ CHECK: qaddne r1, r2, r3              @ encoding: [0x52,0x10,0x03,0x11]
1231 @ CHECK: qadd16 r1, r2, r3              @ encoding: [0x13,0x1f,0x22,0xe6]
1232 @ CHECK: qadd16gt       r1, r2, r3      @ encoding: [0x13,0x1f,0x22,0xc6]
1233 @ CHECK: qadd8  r1, r2, r3              @ encoding: [0x93,0x1f,0x22,0xe6]
1234 @ CHECK: qadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x22,0xd6]
1235
1236
1237 @------------------------------------------------------------------------------
1238 @ QDADD/QDSUB
1239 @------------------------------------------------------------------------------
1240         qdadd r6, r7, r8
1241         qdaddhi r6, r7, r8
1242         qdsub r6, r7, r8
1243         qdsubhi r6, r7, r8
1244
1245 @ CHECK: qdadd  r6, r7, r8              @ encoding: [0x57,0x60,0x48,0xe1]
1246 @ CHECK: qdaddhi r6, r7, r8             @ encoding: [0x57,0x60,0x48,0x81]
1247 @ CHECK: qdsub  r6, r7, r8              @ encoding: [0x57,0x60,0x68,0xe1]
1248 @ CHECK: qdsubhi r6, r7, r8             @ encoding: [0x57,0x60,0x68,0x81]
1249
1250
1251 @------------------------------------------------------------------------------
1252 @ QSAX
1253 @------------------------------------------------------------------------------
1254         qsax r9, r12, r0
1255         qsaxeq r9, r12, r0
1256
1257 @ CHECK: qsax   r9, r12, r0             @ encoding: [0x50,0x9f,0x2c,0xe6]
1258 @ CHECK: qsaxeq r9, r12, r0             @ encoding: [0x50,0x9f,0x2c,0x06]
1259
1260
1261 @------------------------------------------------------------------------------
1262 @ QSUB/QSUB16/QSUB8
1263 @------------------------------------------------------------------------------
1264         qsub r1, r2, r3
1265         qsubne r1, r2, r3
1266         qsub16 r1, r2, r3
1267         qsub16gt r1, r2, r3
1268         qsub8 r1, r2, r3
1269         qsub8le r1, r2, r3
1270
1271 @ CHECK: qsub   r1, r2, r3              @ encoding: [0x52,0x10,0x23,0xe1]
1272 @ CHECK: qsubne r1, r2, r3              @ encoding: [0x52,0x10,0x23,0x11]
1273 @ CHECK: qsub16 r1, r2, r3              @ encoding: [0x73,0x1f,0x22,0xe6]
1274 @ CHECK: qsub16gt       r1, r2, r3      @ encoding: [0x73,0x1f,0x22,0xc6]
1275 @ CHECK: qsub8  r1, r2, r3              @ encoding: [0xf3,0x1f,0x22,0xe6]
1276 @ CHECK: qsub8le r1, r2, r3             @ encoding: [0xf3,0x1f,0x22,0xd6]
1277
1278
1279 @------------------------------------------------------------------------------
1280 @ RBIT
1281 @------------------------------------------------------------------------------
1282         rbit r1, r2
1283         rbitne r1, r2
1284
1285 @ CHECK: rbit   r1, r2                  @ encoding: [0x32,0x1f,0xff,0xe6]
1286 @ CHECK: rbitne r1, r2                  @ encoding: [0x32,0x1f,0xff,0x16]
1287
1288
1289 @------------------------------------------------------------------------------
1290 @ REV/REV16/REVSH
1291 @------------------------------------------------------------------------------
1292         rev r1, r9
1293         revne r1, r5
1294         rev16 r8, r3
1295         rev16ne r12, r4
1296         revsh r4, r9
1297         revshne r9, r1
1298
1299 @ CHECK: rev    r1, r9                  @ encoding: [0x39,0x1f,0xbf,0xe6]
1300 @ CHECK: revne  r1, r5                  @ encoding: [0x35,0x1f,0xbf,0x16]
1301 @ CHECK: rev16  r8, r3                  @ encoding: [0xb3,0x8f,0xbf,0xe6]
1302 @ CHECK: rev16ne r12, r4                @ encoding: [0xb4,0xcf,0xbf,0x16]
1303 @ CHECK: revsh  r4, r9                  @ encoding: [0xb9,0x4f,0xff,0xe6]
1304 @ CHECK: revshne r9, r1                 @ encoding: [0xb1,0x9f,0xff,0x16]
1305
1306
1307 @------------------------------------------------------------------------------
1308 @ RFE
1309 @------------------------------------------------------------------------------
1310         rfeda r2
1311         rfedb r3
1312         rfeia r5
1313         rfeib r6
1314
1315         rfeda r4!
1316         rfedb r7!
1317         rfeia r9!
1318         rfeib r8!
1319
1320         rfefa r2
1321         rfeea r3
1322         rfefd r5
1323         rfeed r6
1324
1325         rfefa r4!
1326         rfeea r7!
1327         rfefd r9!
1328         rfeed r8!
1329
1330         rfe r1
1331         rfe r1!
1332
1333 @ CHECK: rfeda  r2                      @ encoding: [0x00,0x0a,0x12,0xf8]
1334 @ CHECK: rfedb  r3                      @ encoding: [0x00,0x0a,0x13,0xf9]
1335 @ CHECK: rfeia  r5                      @ encoding: [0x00,0x0a,0x95,0xf8]
1336 @ CHECK: rfeib  r6                      @ encoding: [0x00,0x0a,0x96,0xf9]
1337
1338 @ CHECK: rfeda  r4!                     @ encoding: [0x00,0x0a,0x34,0xf8]
1339 @ CHECK: rfedb  r7!                     @ encoding: [0x00,0x0a,0x37,0xf9]
1340 @ CHECK: rfeia  r9!                     @ encoding: [0x00,0x0a,0xb9,0xf8]
1341 @ CHECK: rfeib  r8!                     @ encoding: [0x00,0x0a,0xb8,0xf9]
1342
1343 @ CHECK: rfeda  r2                      @ encoding: [0x00,0x0a,0x12,0xf8]
1344 @ CHECK: rfedb  r3                      @ encoding: [0x00,0x0a,0x13,0xf9]
1345 @ CHECK: rfeia  r5                      @ encoding: [0x00,0x0a,0x95,0xf8]
1346 @ CHECK: rfeib  r6                      @ encoding: [0x00,0x0a,0x96,0xf9]
1347
1348 @ CHECK: rfeda  r4!                     @ encoding: [0x00,0x0a,0x34,0xf8]
1349 @ CHECK: rfedb  r7!                     @ encoding: [0x00,0x0a,0x37,0xf9]
1350 @ CHECK: rfeia  r9!                     @ encoding: [0x00,0x0a,0xb9,0xf8]
1351 @ CHECK: rfeib  r8!                     @ encoding: [0x00,0x0a,0xb8,0xf9]
1352
1353 @ CHECK: rfeia  r1                      @ encoding: [0x00,0x0a,0x91,0xf8]
1354 @ CHECK: rfeia  r1!                     @ encoding: [0x00,0x0a,0xb1,0xf8]
1355
1356
1357 @------------------------------------------------------------------------------
1358 @ ROR
1359 @------------------------------------------------------------------------------
1360         ror r2, r4, #31
1361         ror r2, r4, #1
1362         ror r2, r4, #0
1363         ror r4, #1
1364
1365 @ CHECK: ror    r2, r4, #31             @ encoding: [0xe4,0x2f,0xa0,0xe1]
1366 @ CHECK: ror    r2, r4, #1              @ encoding: [0xe4,0x20,0xa0,0xe1]
1367 @ CHECK: mov    r2, r4                  @ encoding: [0x04,0x20,0xa0,0xe1]
1368 @ CHECK: ror    r4, r4, #1              @ encoding: [0xe4,0x40,0xa0,0xe1]
1369
1370
1371 @------------------------------------------------------------------------------
1372 @ RSB
1373 @------------------------------------------------------------------------------
1374         rsb r4, r5, #0xf000
1375         rsb r4, r5, r6
1376         rsb r4, r5, r6, lsl #5
1377         rsblo r4, r5, r6, lsr #5
1378         rsb r4, r5, r6, lsr #5
1379         rsb r4, r5, r6, asr #5
1380         rsb r4, r5, r6, ror #5
1381         rsb r6, r7, r8, lsl r9
1382         rsb r6, r7, r8, lsr r9
1383         rsb r6, r7, r8, asr r9
1384         rsble r6, r7, r8, ror r9
1385         rsb r4, r5, r6, rrx
1386
1387         @ destination register is optional
1388         rsb r5, #0xf000
1389         rsb r4, r5
1390         rsb r4, r5, lsl #5
1391         rsb r4, r5, lsr #5
1392         rsbne r4, r5, lsr #5
1393         rsb r4, r5, asr #5
1394         rsb r4, r5, ror #5
1395         rsbgt r6, r7, lsl r9
1396         rsb r6, r7, lsr r9
1397         rsb r6, r7, asr r9
1398         rsb r6, r7, ror r9
1399         rsb r4, r5, rrx
1400
1401 @ CHECK: rsb    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x65,0xe2]
1402 @ CHECK: rsb    r4, r5, r6              @ encoding: [0x06,0x40,0x65,0xe0]
1403 @ CHECK: rsb    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x65,0xe0]
1404 @ CHECK: rsblo  r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x65,0x30]
1405 @ CHECK: rsb    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x65,0xe0]
1406 @ CHECK: rsb    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x65,0xe0]
1407 @ CHECK: rsb    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x65,0xe0]
1408 @ CHECK: rsb    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x67,0xe0]
1409 @ CHECK: rsb    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x67,0xe0]
1410 @ CHECK: rsb    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x67,0xe0]
1411 @ CHECK: rsble  r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x67,0xd0]
1412 @ CHECK: rsb    r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x65,0xe0]
1413
1414 @ CHECK: rsb    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x65,0xe2]
1415 @ CHECK: rsb    r4, r4, r5              @ encoding: [0x05,0x40,0x64,0xe0]
1416 @ CHECK: rsb    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x64,0xe0]
1417 @ CHECK: rsb    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x64,0xe0]
1418 @ CHECK: rsbne  r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x64,0x10]
1419 @ CHECK: rsb    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x64,0xe0]
1420 @ CHECK: rsb    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x64,0xe0]
1421 @ CHECK: rsbgt  r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x66,0xc0]
1422 @ CHECK: rsb    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x66,0xe0]
1423 @ CHECK: rsb    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x66,0xe0]
1424 @ CHECK: rsb    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x66,0xe0]
1425 @ CHECK: rsb    r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x64,0xe0]
1426
1427 @------------------------------------------------------------------------------
1428 @ RSC
1429 @------------------------------------------------------------------------------
1430         rsc r4, r5, #0xf000
1431         rsc r4, r5, r6
1432         rsc r4, r5, r6, lsl #5
1433         rsclo r4, r5, r6, lsr #5
1434         rsc r4, r5, r6, lsr #5
1435         rsc r4, r5, r6, asr #5
1436         rsc r4, r5, r6, ror #5
1437         rsc r6, r7, r8, lsl r9
1438         rsc r6, r7, r8, lsr r9
1439         rsc r6, r7, r8, asr r9
1440         rscle r6, r7, r8, ror r9
1441         rscs r1, r8, #4064
1442
1443         @ destination register is optional
1444         rsc r5, #0xf000
1445         rsc r4, r5
1446         rsc r4, r5, lsl #5
1447         rsc r4, r5, lsr #5
1448         rscne r4, r5, lsr #5
1449         rsc r4, r5, asr #5
1450         rsc r4, r5, ror #5
1451         rscgt r6, r7, lsl r9
1452         rsc r6, r7, lsr r9
1453         rsc r6, r7, asr r9
1454         rsc r6, r7, ror r9
1455
1456 @ CHECK: rsc    r4, r5, #61440          @ encoding: [0x0f,0x4a,0xe5,0xe2]
1457 @ CHECK: rsc    r4, r5, r6              @ encoding: [0x06,0x40,0xe5,0xe0]
1458 @ CHECK: rsc    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0xe5,0xe0]
1459 @ CHECK: rsclo  r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xe5,0x30]
1460 @ CHECK: rsc    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xe5,0xe0]
1461 @ CHECK: rsc    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0xe5,0xe0]
1462 @ CHECK: rsc    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0xe5,0xe0]
1463 @ CHECK: rsc    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0xe7,0xe0]
1464 @ CHECK: rsc    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0xe7,0xe0]
1465 @ CHECK: rsc    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0xe7,0xe0]
1466 @ CHECK: rscle  r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0xe7,0xd0]
1467 @ CHECK: rscs   r1, r8, #4064           @ encoding: [0xfe,0x1e,0xf8,0xe2]
1468
1469 @ CHECK: rsc    r5, r5, #61440          @ encoding: [0x0f,0x5a,0xe5,0xe2]
1470 @ CHECK: rsc    r4, r4, r5              @ encoding: [0x05,0x40,0xe4,0xe0]
1471 @ CHECK: rsc    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0xe4,0xe0]
1472 @ CHECK: rsc    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xe4,0xe0]
1473 @ CHECK: rscne  r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xe4,0x10]
1474 @ CHECK: rsc    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0xe4,0xe0]
1475 @ CHECK: rsc    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0xe4,0xe0]
1476 @ CHECK: rscgt  r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0xe6,0xc0]
1477 @ CHECK: rsc    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0xe6,0xe0]
1478 @ CHECK: rsc    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0xe6,0xe0]
1479 @ CHECK: rsc    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xe6,0xe0]
1480
1481 @------------------------------------------------------------------------------
1482 @ SADD16/SADD8
1483 @------------------------------------------------------------------------------
1484         sadd16 r1, r2, r3
1485         sadd16gt r1, r2, r3
1486         sadd8 r1, r2, r3
1487         sadd8le r1, r2, r3
1488
1489 @ CHECK: sadd16 r1, r2, r3              @ encoding: [0x13,0x1f,0x12,0xe6]
1490 @ CHECK: sadd16gt       r1, r2, r3      @ encoding: [0x13,0x1f,0x12,0xc6]
1491 @ CHECK: sadd8  r1, r2, r3              @ encoding: [0x93,0x1f,0x12,0xe6]
1492 @ CHECK: sadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x12,0xd6]
1493
1494
1495 @------------------------------------------------------------------------------
1496 @ SASX
1497 @------------------------------------------------------------------------------
1498         sasx r9, r12, r0
1499         sasxeq r9, r12, r0
1500
1501 @ CHECK: sasx   r9, r12, r0             @ encoding: [0x30,0x9f,0x1c,0xe6]
1502 @ CHECK: sasxeq r9, r12, r0             @ encoding: [0x30,0x9f,0x1c,0x06]
1503
1504
1505 @------------------------------------------------------------------------------
1506 @ SBC
1507 @------------------------------------------------------------------------------
1508         sbc r4, r5, #0xf000
1509         sbc r4, r5, r6
1510         sbc r4, r5, r6, lsl #5
1511         sbc r4, r5, r6, lsr #5
1512         sbc r4, r5, r6, lsr #5
1513         sbc r4, r5, r6, asr #5
1514         sbc r4, r5, r6, ror #5
1515         sbc r6, r7, r8, lsl r9
1516         sbc r6, r7, r8, lsr r9
1517         sbc r6, r7, r8, asr r9
1518         sbc r6, r7, r8, ror r9
1519
1520         @ destination register is optional
1521         sbc r5, #0xf000
1522         sbc r4, r5
1523         sbc r4, r5, lsl #5
1524         sbc r4, r5, lsr #5
1525         sbc r4, r5, lsr #5
1526         sbc r4, r5, asr #5
1527         sbc r4, r5, ror #5
1528         sbc r6, r7, lsl r9
1529         sbc r6, r7, lsr r9
1530         sbc r6, r7, asr r9
1531         sbc r6, r7, ror r9
1532
1533 @ CHECK: sbc    r4, r5, #61440          @ encoding: [0x0f,0x4a,0xc5,0xe2]
1534 @ CHECK: sbc    r4, r5, r6              @ encoding: [0x06,0x40,0xc5,0xe0]
1535 @ CHECK: sbc    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0xc5,0xe0]
1536 @ CHECK: sbc    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xc5,0xe0]
1537 @ CHECK: sbc    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xc5,0xe0]
1538 @ CHECK: sbc    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0xc5,0xe0]
1539 @ CHECK: sbc    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0xc5,0xe0]
1540 @ CHECK: sbc    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0xc7,0xe0]
1541 @ CHECK: sbc    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0xc7,0xe0]
1542 @ CHECK: sbc    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0xc7,0xe0]
1543 @ CHECK: sbc    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0xc7,0xe0]
1544
1545 @ CHECK: sbc    r5, r5, #61440          @ encoding: [0x0f,0x5a,0xc5,0xe2]
1546 @ CHECK: sbc    r4, r4, r5              @ encoding: [0x05,0x40,0xc4,0xe0]
1547 @ CHECK: sbc    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0xc4,0xe0]
1548 @ CHECK: sbc    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xc4,0xe0]
1549 @ CHECK: sbc    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xc4,0xe0]
1550 @ CHECK: sbc    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0xc4,0xe0]
1551 @ CHECK: sbc    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0xc4,0xe0]
1552 @ CHECK: sbc    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0xc6,0xe0]
1553 @ CHECK: sbc    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0xc6,0xe0]
1554 @ CHECK: sbc    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0xc6,0xe0]
1555 @ CHECK: sbc    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xc6,0xe0]
1556
1557
1558 @------------------------------------------------------------------------------
1559 @ SBFX
1560 @------------------------------------------------------------------------------
1561         sbfx r4, r5, #16, #1
1562         sbfxgt r4, r5, #16, #16
1563
1564 @ CHECK: sbfx   r4, r5, #16, #1         @ encoding: [0x55,0x48,0xa0,0xe7]
1565 @ CHECK: sbfxgt r4, r5, #16, #16        @ encoding: [0x55,0x48,0xaf,0xc7]
1566
1567
1568 @------------------------------------------------------------------------------
1569 @ SEL
1570 @------------------------------------------------------------------------------
1571         sel r9, r2, r1
1572         selne r9, r2, r1
1573
1574 @ CHECK: sel    r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0xe6]
1575 @ CHECK: selne  r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0x16]
1576
1577
1578 @------------------------------------------------------------------------------
1579 @ SETEND
1580 @------------------------------------------------------------------------------
1581         setend be
1582         setend le
1583
1584 @ CHECK: setend be                      @ encoding: [0x00,0x02,0x01,0xf1]
1585 @ CHECK: setend le                      @ encoding: [0x00,0x00,0x01,0xf1]
1586
1587
1588 @------------------------------------------------------------------------------
1589 @ SEV
1590 @------------------------------------------------------------------------------
1591         sev
1592         seveq
1593
1594 @ CHECK: sev                            @ encoding: [0x04,0xf0,0x20,0xe3]
1595 @ CHECK: seveq                          @ encoding: [0x04,0xf0,0x20,0x03]
1596
1597
1598 @------------------------------------------------------------------------------
1599 @ SHADD16/SHADD8
1600 @------------------------------------------------------------------------------
1601         shadd16 r4, r8, r2
1602         shadd16gt r4, r8, r2
1603         shadd8 r4, r8, r2
1604         shadd8gt r4, r8, r2
1605
1606 @ CHECK: shadd16        r4, r8, r2      @ encoding: [0x12,0x4f,0x38,0xe6]
1607 @ CHECK: shadd16gt      r4, r8, r2      @ encoding: [0x12,0x4f,0x38,0xc6]
1608 @ CHECK: shadd8 r4, r8, r2              @ encoding: [0x92,0x4f,0x38,0xe6]
1609 @ CHECK: shadd8gt       r4, r8, r2      @ encoding: [0x92,0x4f,0x38,0xc6]
1610
1611
1612 @------------------------------------------------------------------------------
1613 @ SHASX
1614 @------------------------------------------------------------------------------
1615         shasx r4, r8, r2
1616         shasxgt r4, r8, r2
1617
1618 @ CHECK: shasx  r4, r8, r2              @ encoding: [0x32,0x4f,0x38,0xe6]
1619 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0x32,0x4f,0x38,0xc6]
1620
1621
1622 @------------------------------------------------------------------------------
1623 @ SHSUB16/SHSUB8
1624 @------------------------------------------------------------------------------
1625         shsub16 r4, r8, r2
1626         shsub16gt r4, r8, r2
1627         shsub8 r4, r8, r2
1628         shsub8gt r4, r8, r2
1629
1630 @ CHECK: shsub16        r4, r8, r2      @ encoding: [0x72,0x4f,0x38,0xe6]
1631 @ CHECK: shsub16gt      r4, r8, r2      @ encoding: [0x72,0x4f,0x38,0xc6]
1632 @ CHECK: shsub8 r4, r8, r2              @ encoding: [0xf2,0x4f,0x38,0xe6]
1633 @ CHECK: shsub8gt       r4, r8, r2      @ encoding: [0xf2,0x4f,0x38,0xc6]
1634
1635 @------------------------------------------------------------------------------
1636 @ SMC
1637 @------------------------------------------------------------------------------
1638         smc #0xf
1639         smceq #0
1640
1641 @ CHECK: smc    #15                     @ encoding: [0x7f,0x00,0x60,0xe1]
1642 @ CHECK: smceq  #0                      @ encoding: [0x70,0x00,0x60,0x01]
1643
1644 @------------------------------------------------------------------------------
1645 @ SMLABB/SMLABT/SMLATB/SMLATT
1646 @------------------------------------------------------------------------------
1647         smlabb r3, r1, r9, r0
1648         smlabt r5, r6, r4, r1
1649         smlatb r4, r2, r3, r2
1650         smlatt r8, r3, r8, r4
1651         smlabbge r3, r1, r9, r0
1652         smlabtle r5, r6, r4, r1
1653         smlatbne r4, r2, r3, r2
1654         smlatteq r8, r3, r8, r4
1655
1656 @ CHECK: smlabb r3, r1, r9, r0          @ encoding: [0x81,0x09,0x03,0xe1]
1657 @ CHECK: smlabt r5, r6, r4, r1          @ encoding: [0xc6,0x14,0x05,0xe1]
1658 @ CHECK: smlatb r4, r2, r3, r2          @ encoding: [0xa2,0x23,0x04,0xe1]
1659 @ CHECK: smlatt r8, r3, r8, r4          @ encoding: [0xe3,0x48,0x08,0xe1]
1660 @ CHECK: smlabbge       r3, r1, r9, r0  @ encoding: [0x81,0x09,0x03,0xa1]
1661 @ CHECK: smlabtle       r5, r6, r4, r1  @ encoding: [0xc6,0x14,0x05,0xd1]
1662 @ CHECK: smlatbne       r4, r2, r3, r2  @ encoding: [0xa2,0x23,0x04,0x11]
1663 @ CHECK: smlatteq       r8, r3, r8, r4  @ encoding: [0xe3,0x48,0x08,0x01]
1664
1665 @------------------------------------------------------------------------------
1666 @ SMLAD/SMLADX
1667 @------------------------------------------------------------------------------
1668         smlad r2, r3, r5, r8
1669         smladx r2, r3, r5, r8
1670         smladeq r2, r3, r5, r8
1671         smladxhi r2, r3, r5, r8
1672
1673 @ CHECK: smlad  r2, r3, r5, r8          @ encoding: [0x13,0x85,0x02,0xe7]
1674 @ CHECK: smladx r2, r3, r5, r8          @ encoding: [0x33,0x85,0x02,0xe7]
1675 @ CHECK: smladeq        r2, r3, r5, r8  @ encoding: [0x13,0x85,0x02,0x07]
1676 @ CHECK: smladxhi       r2, r3, r5, r8  @ encoding: [0x33,0x85,0x02,0x87]
1677
1678
1679 @------------------------------------------------------------------------------
1680 @ SMLAL
1681 @------------------------------------------------------------------------------
1682         smlal r2, r3, r5, r8
1683         smlals r2, r3, r5, r8
1684         smlaleq r2, r3, r5, r8
1685         smlalshi r2, r3, r5, r8
1686
1687 @ CHECK: smlal  r2, r3, r5, r8          @ encoding: [0x95,0x28,0xe3,0xe0]
1688 @ CHECK: smlals r2, r3, r5, r8          @ encoding: [0x95,0x28,0xf3,0xe0]
1689 @ CHECK: smlaleq        r2, r3, r5, r8  @ encoding: [0x95,0x28,0xe3,0x00]
1690 @ CHECK: smlalshi       r2, r3, r5, r8  @ encoding: [0x95,0x28,0xf3,0x80]
1691
1692
1693 @------------------------------------------------------------------------------
1694 @ SMLALBB/SMLALBT/SMLALTB/SMLALTT
1695 @------------------------------------------------------------------------------
1696         smlalbb r3, r1, r9, r0
1697         smlalbt r5, r6, r4, r1
1698         smlaltb r4, r2, r3, r2
1699         smlaltt r8, r3, r8, r4
1700         smlalbbge r3, r1, r9, r0
1701         smlalbtle r5, r6, r4, r1
1702         smlaltbne r4, r2, r3, r2
1703         smlaltteq r8, r3, r8, r4
1704
1705 @ CHECK: smlalbb        r3, r1, r9, r0  @ encoding: [0x89,0x30,0x41,0xe1]
1706 @ CHECK: smlalbt        r5, r6, r4, r1  @ encoding: [0xc4,0x51,0x46,0xe1]
1707 @ CHECK: smlaltb        r4, r2, r3, r2  @ encoding: [0xa3,0x42,0x42,0xe1]
1708 @ CHECK: smlaltt        r8, r3, r8, r4  @ encoding: [0xe8,0x84,0x43,0xe1]
1709 @ CHECK: smlalbbge      r3, r1, r9, r0  @ encoding: [0x89,0x30,0x41,0xa1]
1710 @ CHECK: smlalbtle      r5, r6, r4, r1  @ encoding: [0xc4,0x51,0x46,0xd1]
1711 @ CHECK: smlaltbne      r4, r2, r3, r2  @ encoding: [0xa3,0x42,0x42,0x11]
1712 @ CHECK: smlaltteq      r8, r3, r8, r4  @ encoding: [0xe8,0x84,0x43,0x01]
1713
1714
1715 @------------------------------------------------------------------------------
1716 @ SMLALD/SMLALDX
1717 @------------------------------------------------------------------------------
1718         smlald r2, r3, r5, r8
1719         smlaldx r2, r3, r5, r8
1720         smlaldeq r2, r3, r5, r8
1721         smlaldxhi r2, r3, r5, r8
1722
1723 @ CHECK: smlald r2, r3, r5, r8          @ encoding: [0x15,0x28,0x43,0xe7]
1724 @ CHECK: smlaldx        r2, r3, r5, r8  @ encoding: [0x35,0x28,0x43,0xe7]
1725 @ CHECK: smlaldeq       r2, r3, r5, r8  @ encoding: [0x15,0x28,0x43,0x07]
1726 @ CHECK: smlaldxhi      r2, r3, r5, r8  @ encoding: [0x35,0x28,0x43,0x87]
1727
1728
1729 @------------------------------------------------------------------------------
1730 @ SMLAWB/SMLAWT
1731 @------------------------------------------------------------------------------
1732         smlawb r2, r3, r10, r8
1733         smlawt r8, r3, r5, r9
1734         smlawbeq r2, r7, r5, r8
1735         smlawthi r1, r3, r0, r8
1736
1737 @ CHECK: smlawb r2, r3, r10, r8         @ encoding: [0x83,0x8a,0x22,0xe1]
1738 @ CHECK: smlawt r8, r3, r5, r9          @ encoding: [0xc3,0x95,0x28,0xe1]
1739 @ CHECK: smlawbeq       r2, r7, r5, r8  @ encoding: [0x87,0x85,0x22,0x01]
1740 @ CHECK: smlawthi       r1, r3, r0, r8  @ encoding: [0xc3,0x80,0x21,0x81]
1741
1742
1743 @------------------------------------------------------------------------------
1744 @ SMLSD/SMLSDX
1745 @------------------------------------------------------------------------------
1746         smlsd r2, r3, r5, r8
1747         smlsdx r2, r3, r5, r8
1748         smlsdeq r2, r3, r5, r8
1749         smlsdxhi r2, r3, r5, r8
1750
1751 @ CHECK: smlsd  r2, r3, r5, r8          @ encoding: [0x53,0x85,0x02,0xe7]
1752 @ CHECK: smlsdx r2, r3, r5, r8          @ encoding: [0x73,0x85,0x02,0xe7]
1753 @ CHECK: smlsdeq        r2, r3, r5, r8  @ encoding: [0x53,0x85,0x02,0x07]
1754 @ CHECK: smlsdxhi       r2, r3, r5, r8  @ encoding: [0x73,0x85,0x02,0x87]
1755
1756
1757 @------------------------------------------------------------------------------
1758 @ SMLSLD/SMLSLDX
1759 @------------------------------------------------------------------------------
1760         smlsld r2, r9, r5, r1
1761         smlsldx r4, r11, r2, r8
1762         smlsldeq r8, r2, r5, r6
1763         smlsldxhi r1, r0, r3, r8
1764
1765 @ CHECK: smlsld r2, r9, r5, r1          @ encoding: [0x55,0x21,0x49,0xe7]
1766 @ CHECK: smlsldx        r4, r11, r2, r8 @ encoding: [0x72,0x48,0x4b,0xe7]
1767 @ CHECK: smlsldeq       r8, r2, r5, r6  @ encoding: [0x55,0x86,0x42,0x07]
1768 @ CHECK: smlsldxhi      r1, r0, r3, r8  @ encoding: [0x73,0x18,0x40,0x87]
1769
1770
1771 @------------------------------------------------------------------------------
1772 @ SMMLA/SMMLAR
1773 @------------------------------------------------------------------------------
1774         smmla r1, r2, r3, r4
1775         smmlar r4, r3, r2, r1
1776         smmlalo r1, r2, r3, r4
1777         smmlarcs r4, r3, r2, r1
1778
1779 @ CHECK: smmla  r1, r2, r3, r4          @ encoding: [0x12,0x43,0x51,0xe7]
1780 @ CHECK: smmlar r4, r3, r2, r1          @ encoding: [0x33,0x12,0x54,0xe7]
1781 @ CHECK: smmlalo        r1, r2, r3, r4  @ encoding: [0x12,0x43,0x51,0x37]
1782 @ CHECK: smmlarhs       r4, r3, r2, r1  @ encoding: [0x33,0x12,0x54,0x27]
1783
1784
1785 @------------------------------------------------------------------------------
1786 @ SMMLS/SMMLSR
1787 @------------------------------------------------------------------------------
1788         smmls r1, r2, r3, r4
1789         smmlsr r4, r3, r2, r1
1790         smmlslo r1, r2, r3, r4
1791         smmlsrcs r4, r3, r2, r1
1792
1793 @ CHECK: smmls  r1, r2, r3, r4          @ encoding: [0xd2,0x43,0x51,0xe7]
1794 @ CHECK: smmlsr r4, r3, r2, r1          @ encoding: [0xf3,0x12,0x54,0xe7]
1795 @ CHECK: smmlslo        r1, r2, r3, r4  @ encoding: [0xd2,0x43,0x51,0x37]
1796 @ CHECK: smmlsrhs       r4, r3, r2, r1  @ encoding: [0xf3,0x12,0x54,0x27]
1797
1798
1799 @------------------------------------------------------------------------------
1800 @ SMMUL/SMMULR
1801 @------------------------------------------------------------------------------
1802         smmul r2, r3, r4
1803         smmulr r3, r2, r1
1804         smmulcc r2, r3, r4
1805         smmulrhs r3, r2, r1
1806
1807 @ CHECK: smmul  r2, r3, r4              @ encoding: [0x13,0xf4,0x52,0xe7]
1808 @ CHECK: smmulr r3, r2, r1              @ encoding: [0x32,0xf1,0x53,0xe7]
1809 @ CHECK: smmullo        r2, r3, r4      @ encoding: [0x13,0xf4,0x52,0x37]
1810 @ CHECK: smmulrhs       r3, r2, r1      @ encoding: [0x32,0xf1,0x53,0x27]
1811
1812
1813 @------------------------------------------------------------------------------
1814 @ SMUAD/SMUADX
1815 @------------------------------------------------------------------------------
1816         smuad r2, r3, r4
1817         smuadx r3, r2, r1
1818         smuadlt r2, r3, r4
1819         smuadxge r3, r2, r1
1820
1821 @ CHECK: smuad  r2, r3, r4              @ encoding: [0x13,0xf4,0x02,0xe7]
1822 @ CHECK: smuadx r3, r2, r1              @ encoding: [0x32,0xf1,0x03,0xe7]
1823 @ CHECK: smuadlt        r2, r3, r4      @ encoding: [0x13,0xf4,0x02,0xb7]
1824 @ CHECK: smuadxge       r3, r2, r1      @ encoding: [0x32,0xf1,0x03,0xa7]
1825
1826
1827 @------------------------------------------------------------------------------
1828 @ SMULBB/SMULBT/SMULTB/SMULTT
1829 @------------------------------------------------------------------------------
1830         smulbb r3, r9, r0
1831         smulbt r5, r4, r1
1832         smultb r4, r2, r2
1833         smultt r8, r3, r4
1834         smulbbge r1, r9, r0
1835         smulbtle r5, r6, r4
1836         smultbne r2, r3, r2
1837         smultteq r8, r3, r4
1838
1839 @ CHECK: smulbb r3, r9, r0              @ encoding: [0x89,0x00,0x63,0xe1]
1840 @ CHECK: smulbt r5, r4, r1              @ encoding: [0xc4,0x01,0x65,0xe1]
1841 @ CHECK: smultb r4, r2, r2              @ encoding: [0xa2,0x02,0x64,0xe1]
1842 @ CHECK: smultt r8, r3, r4              @ encoding: [0xe3,0x04,0x68,0xe1]
1843 @ CHECK: smulbbge       r1, r9, r0      @ encoding: [0x89,0x00,0x61,0xa1]
1844 @ CHECK: smulbtle       r5, r6, r4      @ encoding: [0xc6,0x04,0x65,0xd1]
1845 @ CHECK: smultbne       r2, r3, r2      @ encoding: [0xa3,0x02,0x62,0x11]
1846 @ CHECK: smultteq       r8, r3, r4      @ encoding: [0xe3,0x04,0x68,0x01]
1847
1848
1849 @------------------------------------------------------------------------------
1850 @ SMULL
1851 @------------------------------------------------------------------------------
1852         smull r3, r9, r0, r1
1853         smulls r3, r9, r0, r2
1854         smulleq r8, r3, r4, r5
1855         smullseq r8, r3, r4, r3
1856
1857 @ CHECK: smull  r3, r9, r0, r1          @ encoding: [0x90,0x31,0xc9,0xe0]
1858 @ CHECK: smulls r3, r9, r0, r2          @ encoding: [0x90,0x32,0xd9,0xe0]
1859 @ CHECK: smulleq        r8, r3, r4, r5  @ encoding: [0x94,0x85,0xc3,0x00]
1860 @ CHECK: smullseq       r8, r3, r4, r3  @ encoding: [0x94,0x83,0xd3,0x00]
1861
1862
1863 @------------------------------------------------------------------------------
1864 @ SMULWB/SMULWT
1865 @------------------------------------------------------------------------------
1866         smulwb r3, r9, r0
1867         smulwt r3, r9, r2
1868
1869 @ CHECK: smulwb r3, r9, r0              @ encoding: [0xa9,0x00,0x23,0xe1]
1870 @ CHECK: smulwt r3, r9, r2              @ encoding: [0xe9,0x02,0x23,0xe1]
1871
1872
1873 @------------------------------------------------------------------------------
1874 @ SMUSD/SMUSDX
1875 @------------------------------------------------------------------------------
1876         smusd r3, r0, r1
1877         smusdx r3, r9, r2
1878         smusdeq r8, r3, r2
1879         smusdxne r7, r4, r3
1880
1881 @ CHECK: smusd  r3, r0, r1              @ encoding: [0x50,0xf1,0x03,0xe7]
1882 @ CHECK: smusdx r3, r9, r2              @ encoding: [0x79,0xf2,0x03,0xe7]
1883 @ CHECK: smusdeq        r8, r3, r2      @ encoding: [0x53,0xf2,0x08,0x07]
1884 @ CHECK: smusdxne       r7, r4, r3      @ encoding: [0x74,0xf3,0x07,0x17]
1885
1886
1887 @------------------------------------------------------------------------------
1888 @ SRS
1889 @------------------------------------------------------------------------------
1890         srsda sp, #5
1891         srsdb sp, #1
1892         srsia sp, #0
1893         srsib sp, #15
1894
1895         srsda sp!, #31
1896         srsdb sp!, #19
1897         srsia sp!, #2
1898         srsib sp!, #14
1899
1900         srsfa sp, #11
1901         srsea sp, #10
1902         srsfd sp, #9
1903         srsed sp, #5
1904
1905         srsfa sp!, #5
1906         srsea sp!, #5
1907         srsfd sp!, #5
1908         srsed sp!, #5
1909
1910         srs sp, #5
1911         srs sp!, #5
1912
1913 @ CHECK: srsda  sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
1914 @ CHECK: srsdb  sp, #1                  @ encoding: [0x01,0x05,0x4d,0xf9]
1915 @ CHECK: srsia  sp, #0                  @ encoding: [0x00,0x05,0xcd,0xf8]
1916 @ CHECK: srsib  sp, #15                 @ encoding: [0x0f,0x05,0xcd,0xf9]
1917
1918 @ CHECK: srsda  sp!, #31                @ encoding: [0x1f,0x05,0x6d,0xf8]
1919 @ CHECK: srsdb  sp!, #19                @ encoding: [0x13,0x05,0x6d,0xf9]
1920 @ CHECK: srsia  sp!, #2                 @ encoding: [0x02,0x05,0xed,0xf8]
1921 @ CHECK: srsib  sp!, #14                @ encoding: [0x0e,0x05,0xed,0xf9]
1922
1923 @ CHECK: srsda  sp, #11                 @ encoding: [0x0b,0x05,0x4d,0xf8]
1924 @ CHECK: srsdb  sp, #10                 @ encoding: [0x0a,0x05,0x4d,0xf9]
1925 @ CHECK: srsia  sp, #9                  @ encoding: [0x09,0x05,0xcd,0xf8]
1926 @ CHECK: srsib  sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf9]
1927
1928 @ CHECK: srsda  sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf8]
1929 @ CHECK: srsdb  sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf9]
1930 @ CHECK: srsia  sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
1931 @ CHECK: srsib  sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf9]
1932
1933 @ CHECK: srsia  sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf8]
1934 @ CHECK: srsia  sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
1935
1936
1937 @------------------------------------------------------------------------------
1938 @ SSAT
1939 @------------------------------------------------------------------------------
1940         ssat    r8, #1, r10
1941         ssat    r8, #1, r10, lsl #0
1942         ssat    r8, #1, r10, lsl #31
1943         ssat    r8, #1, r10, asr #32
1944         ssat    r8, #1, r10, asr #1
1945
1946 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x1a,0x80,0xa0,0xe6]
1947 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x1a,0x80,0xa0,0xe6]
1948 @ CHECK: ssat   r8, #1, r10, lsl #31    @ encoding: [0x9a,0x8f,0xa0,0xe6]
1949 @ CHECK: ssat   r8, #1, r10, asr #32    @ encoding: [0x5a,0x80,0xa0,0xe6]
1950 @ CHECK: ssat   r8, #1, r10, asr #1     @ encoding: [0xda,0x80,0xa0,0xe6]
1951
1952
1953 @------------------------------------------------------------------------------
1954 @ SSAT16
1955 @------------------------------------------------------------------------------
1956         ssat16  r2, #1, r7
1957         ssat16  r3, #16, r5
1958
1959 @ CHECK: ssat16 r2, #1, r7              @ encoding: [0x37,0x2f,0xa0,0xe6]
1960 @ CHECK: ssat16 r3, #16, r5             @ encoding: [0x35,0x3f,0xaf,0xe6]
1961
1962
1963 @------------------------------------------------------------------------------
1964 @ SSAX
1965 @------------------------------------------------------------------------------
1966         ssax r2, r3, r4
1967         ssaxlt r2, r3, r4
1968
1969 @ CHECK: ssax   r2, r3, r4              @ encoding: [0x54,0x2f,0x13,0xe6]
1970 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0x54,0x2f,0x13,0xb6]
1971
1972 @------------------------------------------------------------------------------
1973 @ SSUB16/SSUB8
1974 @------------------------------------------------------------------------------
1975         ssub16 r1, r0, r6
1976         ssub16ne r5, r3, r2
1977         ssub8 r9, r2, r4
1978         ssub8eq r5, r1, r2
1979
1980 @ CHECK: ssub16 r1, r0, r6              @ encoding: [0x76,0x1f,0x10,0xe6]
1981 @ CHECK: ssub16ne       r5, r3, r2      @ encoding: [0x72,0x5f,0x13,0x16]
1982 @ CHECK: ssub8  r9, r2, r4              @ encoding: [0xf4,0x9f,0x12,0xe6]
1983 @ CHECK: ssub8eq        r5, r1, r2      @ encoding: [0xf2,0x5f,0x11,0x06]
1984
1985 @------------------------------------------------------------------------------
1986 @ STC{L}/STC2{L}
1987 @------------------------------------------------------------------------------
1988         stc2 p0, c8, [r1, #4]
1989         stc2 p1, c7, [r2]
1990         stc2 p2, c6, [r3, #-224]
1991         stc2 p3, c5, [r4, #-120]!
1992         stc2 p4, c4, [r5], #16
1993         stc2 p5, c3, [r6], #-72
1994         stc2l p6, c2, [r7, #4]
1995         stc2l p7, c1, [r8]
1996         stc2l p8, c0, [r9, #-224]
1997         stc2l p9, c1, [r10, #-120]!
1998         stc2l p10, c2, [r11], #16
1999         stc2l p11, c3, [r12], #-72
2000
2001         stc p12, c4, [r0, #4]
2002         stc p13, c5, [r1]
2003         stc p14, c6, [r2, #-224]
2004         stc p15, c7, [r3, #-120]!
2005         stc p5, c8, [r4], #16
2006         stc p4, c9, [r5], #-72
2007         stcl p3, c10, [r6, #4]
2008         stcl p2, c11, [r7]
2009         stcl p1, c12, [r8, #-224]
2010         stcl p0, c13, [r9, #-120]!
2011         stcl p6, c14, [r10], #16
2012         stcl p7, c15, [r11], #-72
2013
2014         stclo p12, c4, [r0, #4]
2015         stchi p13, c5, [r1]
2016         stccs p14, c6, [r2, #-224]
2017         stccc p15, c7, [r3, #-120]!
2018         stceq p5, c8, [r4], #16
2019         stcgt p4, c9, [r5], #-72
2020         stcllt p3, c10, [r6, #4]
2021         stclge p2, c11, [r7]
2022         stclle p1, c12, [r8, #-224]
2023         stclne p0, c13, [r9, #-120]!
2024         stcleq p6, c14, [r10], #16
2025         stclhi p7, c15, [r11], #-72
2026
2027         stc2 p2, c8, [r1], { 25 }
2028
2029 @ CHECK: stc2   p0, c8, [r1, #4]        @ encoding: [0x01,0x80,0x81,0xfd]
2030 @ CHECK: stc2   p1, c7, [r2]            @ encoding: [0x00,0x71,0x82,0xfd]
2031 @ CHECK: stc2   p2, c6, [r3, #-224]     @ encoding: [0x38,0x62,0x03,0xfd]
2032 @ CHECK: stc2   p3, c5, [r4, #-120]!    @ encoding: [0x1e,0x53,0x24,0xfd]
2033 @ CHECK: stc2   p4, c4, [r5], #16       @ encoding: [0x04,0x44,0xa5,0xfc]
2034 @ CHECK: stc2   p5, c3, [r6], #-72      @ encoding: [0x12,0x35,0x26,0xfc]
2035 @ CHECK: stc2l  p6, c2, [r7, #4]        @ encoding: [0x01,0x26,0xc7,0xfd]
2036 @ CHECK: stc2l  p7, c1, [r8]            @ encoding: [0x00,0x17,0xc8,0xfd]
2037 @ CHECK: stc2l  p8, c0, [r9, #-224]     @ encoding: [0x38,0x08,0x49,0xfd]
2038 @ CHECK: stc2l  p9, c1, [r10, #-120]!   @ encoding: [0x1e,0x19,0x6a,0xfd]
2039 @ CHECK: stc2l  p10, c2, [r11], #16     @ encoding: [0x04,0x2a,0xeb,0xfc]
2040 @ CHECK: stc2l  p11, c3, [r12], #-72    @ encoding: [0x12,0x3b,0x6c,0xfc]
2041
2042 @ CHECK: stc    p12, c4, [r0, #4]       @ encoding: [0x01,0x4c,0x80,0xed]
2043 @ CHECK: stc    p13, c5, [r1]           @ encoding: [0x00,0x5d,0x81,0xed]
2044 @ CHECK: stc    p14, c6, [r2, #-224]    @ encoding: [0x38,0x6e,0x02,0xed]
2045 @ CHECK: stc    p15, c7, [r3, #-120]!   @ encoding: [0x1e,0x7f,0x23,0xed]
2046 @ CHECK: stc    p5, c8, [r4], #16       @ encoding: [0x04,0x85,0xa4,0xec]
2047 @ CHECK: stc    p4, c9, [r5], #-72      @ encoding: [0x12,0x94,0x25,0xec]
2048 @ CHECK: stcl   p3, c10, [r6, #4]       @ encoding: [0x01,0xa3,0xc6,0xed]
2049 @ CHECK: stcl   p2, c11, [r7]           @ encoding: [0x00,0xb2,0xc7,0xed]
2050 @ CHECK: stcl   p1, c12, [r8, #-224]    @ encoding: [0x38,0xc1,0x48,0xed]
2051 @ CHECK: stcl   p0, c13, [r9, #-120]!   @ encoding: [0x1e,0xd0,0x69,0xed]
2052 @ CHECK: stcl   p6, c14, [r10], #16     @ encoding: [0x04,0xe6,0xea,0xec]
2053 @ CHECK: stcl   p7, c15, [r11], #-72    @ encoding: [0x12,0xf7,0x6b,0xec]
2054
2055 @ CHECK: stclo  p12, c4, [r0, #4]       @ encoding: [0x01,0x4c,0x80,0x3d]
2056 @ CHECK: stchi  p13, c5, [r1]           @ encoding: [0x00,0x5d,0x81,0x8d]
2057 @ CHECK: stchs  p14, c6, [r2, #-224]    @ encoding: [0x38,0x6e,0x02,0x2d]
2058 @ CHECK: stclo  p15, c7, [r3, #-120]!   @ encoding: [0x1e,0x7f,0x23,0x3d]
2059 @ CHECK: stceq  p5, c8, [r4], #16       @ encoding: [0x04,0x85,0xa4,0x0c]
2060 @ CHECK: stcgt  p4, c9, [r5], #-72      @ encoding: [0x12,0x94,0x25,0xcc]
2061 @ CHECK: stcllt p3, c10, [r6, #4]       @ encoding: [0x01,0xa3,0xc6,0xbd]
2062 @ CHECK: stclge p2, c11, [r7]           @ encoding: [0x00,0xb2,0xc7,0xad]
2063 @ CHECK: stclle p1, c12, [r8, #-224]    @ encoding: [0x38,0xc1,0x48,0xdd]
2064 @ CHECK: stclne p0, c13, [r9, #-120]!   @ encoding: [0x1e,0xd0,0x69,0x1d]
2065 @ CHECK: stcleq p6, c14, [r10], #16     @ encoding: [0x04,0xe6,0xea,0x0c]
2066 @ CHECK: stclhi p7, c15, [r11], #-72    @ encoding: [0x12,0xf7,0x6b,0x8c]
2067
2068 @ CHECK: stc2   p2, c8, [r1], {25}      @ encoding: [0x19,0x82,0x81,0xfc]
2069
2070
2071 @------------------------------------------------------------------------------
2072 @ STM*
2073 @------------------------------------------------------------------------------
2074         stm       r2, {r1,r3-r6,sp}
2075         stmia     r3, {r1,r3-r6,lr}
2076         stmib     r4, {r1,r3-r6,sp}
2077         stmda     r5, {r1,r3-r6,sp}
2078         stmdb     r6, {r1,r3-r6,r8}
2079         stmfd     sp, {r1,r3-r6,sp}
2080
2081         @ with update
2082         stm       r8!, {r1,r3-r6,sp}
2083         stmib     r9!, {r1,r3-r6,sp}
2084         stmda     sp!, {r1,r3-r6}
2085         stmdb     r0!, {r1,r5,r7,sp}
2086
2087 @ CHECK: stm    r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x82,0xe8]
2088 @ CHECK: stm    r3, {lr, r1, r3, r4, r5, r6} @ encoding: [0x7a,0x40,0x83,0xe8]
2089 @ CHECK: stmib  r4, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x84,0xe9]
2090 @ CHECK: stmda  r5, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x05,0xe8]
2091 @ CHECK: stmdb  r6, {r1, r3, r4, r5, r6, r8} @ encoding: [0x7a,0x01,0x06,0xe9]
2092 @ CHECK: stmdb  sp, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x0d,0xe9]
2093
2094 @ CHECK: stm    r8!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa8,0xe8]
2095 @ CHECK: stmib  r9!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa9,0xe9]
2096 @ CHECK: stmda  sp!, {r1, r3, r4, r5, r6}     @ encoding: [0x7a,0x00,0x2d,0xe8]
2097 @ CHECK: stmdb  r0!, {r1, r5, r7, sp}         @ encoding: [0xa2,0x20,0x20,0xe9]
2098
2099
2100 @------------------------------------------------------------------------------
2101 @ STREX/STREXB/STREXH/STREXD
2102 @------------------------------------------------------------------------------
2103         strexb  r1, r3, [r4]
2104         strexh  r4, r2, [r5]
2105         strex  r2, r1, [r7]
2106         strexd  r6, r2, r3, [r8]
2107
2108 @ CHECK: strexb r1, r3, [r4]            @ encoding: [0x93,0x1f,0xc4,0xe1]
2109 @ CHECK: strexh r4, r2, [r5]            @ encoding: [0x92,0x4f,0xe5,0xe1]
2110 @ CHECK: strex  r2, r1, [r7]            @ encoding: [0x91,0x2f,0x87,0xe1]
2111 @ CHECK: strexd r6, r2, r3, [r8]        @ encoding: [0x92,0x6f,0xa8,0xe1]
2112
2113 @------------------------------------------------------------------------------
2114 @ STR
2115 @------------------------------------------------------------------------------
2116         strpl   r3, [r10, #-0]!
2117         strpl   r3, [r10, #0]!
2118
2119 @ CHECK: strpl  r3, [r10, #-0]!         @ encoding: [0x00,0x30,0x2a,0x55]
2120 @ CHECK: strpl  r3, [r10]!              @ encoding: [0x00,0x30,0xaa,0x55]
2121
2122 @------------------------------------------------------------------------------
2123 @ SUB
2124 @------------------------------------------------------------------------------
2125         sub r4, r5, #0xf000
2126         sub r4, r5, r6
2127         sub r4, r5, r6, lsl #5
2128         sub r4, r5, r6, lsr #5
2129         sub r4, r5, r6, lsr #5
2130         sub r4, r5, r6, asr #5
2131         sub r4, r5, r6, ror #5
2132         sub r6, r7, r8, lsl r9
2133         sub r6, r7, r8, lsr r9
2134         sub r6, r7, r8, asr r9
2135         sub r6, r7, r8, ror r9
2136
2137         @ destination register is optional
2138         sub r5, #0xf000
2139         sub r4, r5
2140         sub r4, r5, lsl #5
2141         sub r4, r5, lsr #5
2142         sub r4, r5, lsr #5
2143         sub r4, r5, asr #5
2144         sub r4, r5, ror #5
2145         sub r6, r7, lsl r9
2146         sub r6, r7, lsr r9
2147         sub r6, r7, asr r9
2148         sub r6, r7, ror r9
2149
2150 @ CHECK: sub    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x45,0xe2]
2151 @ CHECK: sub    r4, r5, r6              @ encoding: [0x06,0x40,0x45,0xe0]
2152 @ CHECK: sub    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x45,0xe0]
2153 @ CHECK: sub    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x45,0xe0]
2154 @ CHECK: sub    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x45,0xe0]
2155 @ CHECK: sub    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x45,0xe0]
2156 @ CHECK: sub    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x45,0xe0]
2157 @ CHECK: sub    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x47,0xe0]
2158 @ CHECK: sub    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x47,0xe0]
2159 @ CHECK: sub    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x47,0xe0]
2160 @ CHECK: sub    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x47,0xe0]
2161
2162
2163 @ CHECK: sub    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x45,0xe2]
2164 @ CHECK: sub    r4, r4, r5              @ encoding: [0x05,0x40,0x44,0xe0]
2165 @ CHECK: sub    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x44,0xe0]
2166 @ CHECK: sub    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x44,0xe0]
2167 @ CHECK: sub    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x44,0xe0]
2168 @ CHECK: sub    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x44,0xe0]
2169 @ CHECK: sub    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x44,0xe0]
2170 @ CHECK: sub    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x46,0xe0]
2171 @ CHECK: sub    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x46,0xe0]
2172 @ CHECK: sub    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x46,0xe0]
2173 @ CHECK: sub    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x46,0xe0]
2174
2175
2176 @------------------------------------------------------------------------------
2177 @ SVC
2178 @------------------------------------------------------------------------------
2179         svc #16
2180         svc #0
2181         svc #0xffffff
2182
2183 @ CHECK: svc    #16                     @ encoding: [0x10,0x00,0x00,0xef]
2184 @ CHECK: svc    #0                      @ encoding: [0x00,0x00,0x00,0xef]
2185 @ CHECK: svc    #16777215               @ encoding: [0xff,0xff,0xff,0xef]
2186
2187
2188 @------------------------------------------------------------------------------
2189 @ SWP/SWPB
2190 @------------------------------------------------------------------------------
2191         swp r1, r2, [r3]
2192         swp r4, r4, [r6]
2193         swpb r5, r1, [r9]
2194
2195 @ CHECK: swp    r1, r2, [r3]            @ encoding: [0x92,0x10,0x03,0xe1]
2196 @ CHECK: swp    r4, r4, [r6]            @ encoding: [0x94,0x40,0x06,0xe1]
2197 @ CHECK: swpb   r5, r1, [r9]            @ encoding: [0x91,0x50,0x49,0xe1]
2198
2199
2200 @------------------------------------------------------------------------------
2201 @ SXTAB
2202 @------------------------------------------------------------------------------
2203         sxtab r2, r3, r4
2204         sxtab r4, r5, r6, ror #0
2205         sxtablt r6, r2, r9, ror #8
2206         sxtab r5, r1, r4, ror #16
2207         sxtab r7, r8, r3, ror #24
2208
2209 @ CHECK: sxtab  r2, r3, r4              @ encoding: [0x74,0x20,0xa3,0xe6]
2210 @ CHECK: sxtab  r4, r5, r6              @ encoding: [0x76,0x40,0xa5,0xe6]
2211 @ CHECK: sxtablt r6, r2, r9, ror #8     @ encoding: [0x79,0x64,0xa2,0xb6]
2212 @ CHECK: sxtab  r5, r1, r4, ror #16     @ encoding: [0x74,0x58,0xa1,0xe6]
2213 @ CHECK: sxtab  r7, r8, r3, ror #24     @ encoding: [0x73,0x7c,0xa8,0xe6]
2214
2215
2216 @------------------------------------------------------------------------------
2217 @ SXTAB16
2218 @------------------------------------------------------------------------------
2219         sxtab16ge r0, r1, r4
2220         sxtab16 r6, r2, r7, ror #0
2221         sxtab16 r3, r5, r8, ror #8
2222         sxtab16 r3, r2, r1, ror #16
2223         sxtab16eq r1, r2, r3, ror #24
2224
2225 @ CHECK: sxtab16ge      r0, r1, r4      @ encoding: [0x74,0x00,0x81,0xa6]
2226 @ CHECK: sxtab16        r6, r2, r7      @ encoding: [0x77,0x60,0x82,0xe6]
2227 @ CHECK: sxtab16 r3, r5, r8, ror #8     @ encoding: [0x78,0x34,0x85,0xe6]
2228 @ CHECK: sxtab16 r3, r2, r1, ror #16    @ encoding: [0x71,0x38,0x82,0xe6]
2229 @ CHECK: sxtab16eq r1, r2, r3, ror #24  @ encoding: [0x73,0x1c,0x82,0x06]
2230
2231 @------------------------------------------------------------------------------
2232 @ SXTAH
2233 @------------------------------------------------------------------------------
2234         sxtah r1, r3, r9
2235         sxtahhi r6, r1, r6, ror #0
2236         sxtah r3, r8, r3, ror #8
2237         sxtahlo r2, r2, r4, ror #16
2238         sxtah r9, r3, r3, ror #24
2239
2240 @ CHECK: sxtah  r1, r3, r9              @ encoding: [0x79,0x10,0xb3,0xe6]
2241 @ CHECK: sxtahhi        r6, r1, r6      @ encoding: [0x76,0x60,0xb1,0x86]
2242 @ CHECK: sxtah  r3, r8, r3, ror #8      @ encoding: [0x73,0x34,0xb8,0xe6]
2243 @ CHECK: sxtahlo r2, r2, r4, ror #16    @ encoding: [0x74,0x28,0xb2,0x36]
2244 @ CHECK: sxtah  r9, r3, r3, ror #24     @ encoding: [0x73,0x9c,0xb3,0xe6]
2245
2246 @------------------------------------------------------------------------------
2247 @ SXTB
2248 @------------------------------------------------------------------------------
2249         sxtbge r2, r4
2250         sxtb r5, r6, ror #0
2251         sxtb r6, r9, ror #8
2252         sxtbcc r5, r1, ror #16
2253         sxtb r8, r3, ror #24
2254
2255 @ CHECK: sxtbge r2, r4                  @ encoding: [0x74,0x20,0xaf,0xa6]
2256 @ CHECK: sxtb   r5, r6                  @ encoding: [0x76,0x50,0xaf,0xe6]
2257 @ CHECK: sxtb   r6, r9, ror #8          @ encoding: [0x79,0x64,0xaf,0xe6]
2258 @ CHECK: sxtblo r5, r1, ror #16         @ encoding: [0x71,0x58,0xaf,0x36]
2259 @ CHECK: sxtb   r8, r3, ror #24         @ encoding: [0x73,0x8c,0xaf,0xe6]
2260
2261
2262 @------------------------------------------------------------------------------
2263 @ SXTB16
2264 @------------------------------------------------------------------------------
2265         sxtb16 r1, r4
2266         sxtb16 r6, r7, ror #0
2267         sxtb16cs r3, r5, ror #8
2268         sxtb16 r3, r1, ror #16
2269         sxtb16ge r2, r3, ror #24
2270
2271 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x74,0x10,0x8f,0xe6]
2272 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x77,0x60,0x8f,0xe6]
2273 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x75,0x34,0x8f,0x26]
2274 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x71,0x38,0x8f,0xe6]
2275 @ CHECK: sxtb16ge       r2, r3, ror #24 @ encoding: [0x73,0x2c,0x8f,0xa6]
2276
2277
2278 @------------------------------------------------------------------------------
2279 @ SXTH
2280 @------------------------------------------------------------------------------
2281         sxthne r3, r9
2282         sxth r1, r6, ror #0
2283         sxth r3, r8, ror #8
2284         sxthle r2, r2, ror #16
2285         sxth r9, r3, ror #24
2286
2287 @ CHECK: sxthne r3, r9                  @ encoding: [0x79,0x30,0xbf,0x16]
2288 @ CHECK: sxth   r1, r6                  @ encoding: [0x76,0x10,0xbf,0xe6]
2289 @ CHECK: sxth   r3, r8, ror #8          @ encoding: [0x78,0x34,0xbf,0xe6]
2290 @ CHECK: sxthle r2, r2, ror #16         @ encoding: [0x72,0x28,0xbf,0xd6]
2291 @ CHECK: sxth   r9, r3, ror #24         @ encoding: [0x73,0x9c,0xbf,0xe6]
2292
2293
2294 @------------------------------------------------------------------------------
2295 @ TEQ
2296 @------------------------------------------------------------------------------
2297         teq r5, #0xf000
2298         teq r4, r5
2299         teq r4, r5, lsl #5
2300         teq r4, r5, lsr #5
2301         teq r4, r5, lsr #5
2302         teq r4, r5, asr #5
2303         teq r4, r5, ror #5
2304         teq r6, r7, lsl r9
2305         teq r6, r7, lsr r9
2306         teq r6, r7, asr r9
2307         teq r6, r7, ror r9
2308
2309 @ CHECK: teq    r5, #61440              @ encoding: [0x0f,0x0a,0x35,0xe3]
2310 @ CHECK: teq    r4, r5                  @ encoding: [0x05,0x00,0x34,0xe1]
2311 @ CHECK: teq    r4, r5, lsl #5          @ encoding: [0x85,0x02,0x34,0xe1]
2312 @ CHECK: teq    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x34,0xe1]
2313 @ CHECK: teq    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x34,0xe1]
2314 @ CHECK: teq    r4, r5, asr #5          @ encoding: [0xc5,0x02,0x34,0xe1]
2315 @ CHECK: teq    r4, r5, ror #5          @ encoding: [0xe5,0x02,0x34,0xe1]
2316 @ CHECK: teq    r6, r7, lsl r9          @ encoding: [0x17,0x09,0x36,0xe1]
2317 @ CHECK: teq    r6, r7, lsr r9          @ encoding: [0x37,0x09,0x36,0xe1]
2318 @ CHECK: teq    r6, r7, asr r9          @ encoding: [0x57,0x09,0x36,0xe1]
2319 @ CHECK: teq    r6, r7, ror r9          @ encoding: [0x77,0x09,0x36,0xe1]
2320
2321
2322 @------------------------------------------------------------------------------
2323 @ TST
2324 @------------------------------------------------------------------------------
2325         tst r5, #0xf000
2326         tst r4, r5
2327         tst r4, r5, lsl #5
2328         tst r4, r5, lsr #5
2329         tst r4, r5, lsr #5
2330         tst r4, r5, asr #5
2331         tst r4, r5, ror #5
2332         tst r6, r7, lsl r9
2333         tst r6, r7, lsr r9
2334         tst r6, r7, asr r9
2335         tst r6, r7, ror r9
2336
2337 @ CHECK: tst    r5, #61440              @ encoding: [0x0f,0x0a,0x15,0xe3]
2338 @ CHECK: tst    r4, r5                  @ encoding: [0x05,0x00,0x14,0xe1]
2339 @ CHECK: tst    r4, r5, lsl #5          @ encoding: [0x85,0x02,0x14,0xe1]
2340 @ CHECK: tst    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x14,0xe1]
2341 @ CHECK: tst    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x14,0xe1]
2342 @ CHECK: tst    r4, r5, asr #5          @ encoding: [0xc5,0x02,0x14,0xe1]
2343 @ CHECK: tst    r4, r5, ror #5          @ encoding: [0xe5,0x02,0x14,0xe1]
2344 @ CHECK: tst    r6, r7, lsl r9          @ encoding: [0x17,0x09,0x16,0xe1]
2345 @ CHECK: tst    r6, r7, lsr r9          @ encoding: [0x37,0x09,0x16,0xe1]
2346 @ CHECK: tst    r6, r7, asr r9          @ encoding: [0x57,0x09,0x16,0xe1]
2347 @ CHECK: tst    r6, r7, ror r9          @ encoding: [0x77,0x09,0x16,0xe1]
2348
2349
2350 @------------------------------------------------------------------------------
2351 @ UADD16/UADD8
2352 @------------------------------------------------------------------------------
2353         uadd16 r1, r2, r3
2354         uadd16gt r1, r2, r3
2355         uadd8 r1, r2, r3
2356         uadd8le r1, r2, r3
2357
2358 @ CHECK: uadd16 r1, r2, r3              @ encoding: [0x13,0x1f,0x52,0xe6]
2359 @ CHECK: uadd16gt       r1, r2, r3      @ encoding: [0x13,0x1f,0x52,0xc6]
2360 @ CHECK: uadd8  r1, r2, r3              @ encoding: [0x93,0x1f,0x52,0xe6]
2361 @ CHECK: uadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x52,0xd6]
2362
2363
2364 @------------------------------------------------------------------------------
2365 @ UASX
2366 @------------------------------------------------------------------------------
2367         uasx r9, r12, r0
2368         uasxeq r9, r12, r0
2369
2370 @ CHECK: uasx   r9, r12, r0             @ encoding: [0x30,0x9f,0x5c,0xe6]
2371 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0x30,0x9f,0x5c,0x06]
2372
2373
2374 @------------------------------------------------------------------------------
2375 @ UBFX
2376 @------------------------------------------------------------------------------
2377         ubfx r4, r5, #16, #1
2378         ubfxgt r4, r5, #16, #16
2379
2380 @ CHECK: ubfx   r4, r5, #16, #1         @ encoding: [0x55,0x48,0xe0,0xe7]
2381 @ CHECK: ubfxgt r4, r5, #16, #16        @ encoding: [0x55,0x48,0xef,0xc7]
2382
2383
2384 @------------------------------------------------------------------------------
2385 @ UHADD16/UHADD8
2386 @------------------------------------------------------------------------------
2387         uhadd16 r4, r8, r2
2388         uhadd16gt r4, r8, r2
2389         uhadd8 r4, r8, r2
2390         uhadd8gt r4, r8, r2
2391
2392 @ CHECK: uhadd16        r4, r8, r2      @ encoding: [0x12,0x4f,0x78,0xe6]
2393 @ CHECK: uhadd16gt      r4, r8, r2      @ encoding: [0x12,0x4f,0x78,0xc6]
2394 @ CHECK: uhadd8 r4, r8, r2              @ encoding: [0x92,0x4f,0x78,0xe6]
2395 @ CHECK: uhadd8gt       r4, r8, r2      @ encoding: [0x92,0x4f,0x78,0xc6]
2396
2397
2398 @------------------------------------------------------------------------------
2399 @ UHASX
2400 @------------------------------------------------------------------------------
2401         uhasx r4, r8, r2
2402         uhasxgt r4, r8, r2
2403
2404 @ CHECK: uhasx  r4, r8, r2              @ encoding: [0x32,0x4f,0x78,0xe6]
2405 @ CHECK: uhasxgt r4, r8, r2             @ encoding: [0x32,0x4f,0x78,0xc6]
2406
2407
2408 @------------------------------------------------------------------------------
2409 @ UHSUB16/UHSUB8
2410 @------------------------------------------------------------------------------
2411         uhsub16 r4, r8, r2
2412         uhsub16gt r4, r8, r2
2413         uhsub8 r4, r8, r2
2414         uhsub8gt r4, r8, r2
2415
2416 @ CHECK: uhsub16        r4, r8, r2      @ encoding: [0x72,0x4f,0x78,0xe6]
2417 @ CHECK: uhsub16gt      r4, r8, r2      @ encoding: [0x72,0x4f,0x78,0xc6]
2418 @ CHECK: uhsub8 r4, r8, r2              @ encoding: [0xf2,0x4f,0x78,0xe6]
2419 @ CHECK: uhsub8gt       r4, r8, r2      @ encoding: [0xf2,0x4f,0x78,0xc6]
2420
2421
2422 @------------------------------------------------------------------------------
2423 @ UMAAL
2424 @------------------------------------------------------------------------------
2425         umaal r3, r4, r5, r6
2426         umaallt r3, r4, r5, r6
2427
2428 @ CHECK: umaal  r3, r4, r5, r6          @ encoding: [0x95,0x36,0x44,0xe0]
2429 @ CHECK: umaallt        r3, r4, r5, r6  @ encoding: [0x95,0x36,0x44,0xb0]
2430
2431
2432 @------------------------------------------------------------------------------
2433 @ UMLAL
2434 @------------------------------------------------------------------------------
2435         umlal r2, r4, r6, r8
2436         umlalgt r6, r1, r2, r6
2437         umlals r2, r9, r2, r3
2438         umlalseq r3, r5, r1, r2
2439
2440 @ CHECK: umlal  r2, r4, r6, r8          @ encoding: [0x96,0x28,0xa4,0xe0]
2441 @ CHECK: umlalgt        r6, r1, r2, r6  @ encoding: [0x92,0x66,0xa1,0xc0]
2442 @ CHECK: umlals r2, r9, r2, r3          @ encoding: [0x92,0x23,0xb9,0xe0]
2443 @ CHECK: umlalseq       r3, r5, r1, r2  @ encoding: [0x91,0x32,0xb5,0x00]
2444
2445
2446 @------------------------------------------------------------------------------
2447 @ UMULL
2448 @------------------------------------------------------------------------------
2449         umull r2, r4, r6, r8
2450         umullgt r6, r1, r2, r6
2451         umulls r2, r9, r2, r3
2452         umullseq r3, r5, r1, r2
2453
2454 @ CHECK: umull  r2, r4, r6, r8          @ encoding: [0x96,0x28,0x84,0xe0]
2455 @ CHECK: umullgt        r6, r1, r2, r6  @ encoding: [0x92,0x66,0x81,0xc0]
2456 @ CHECK: umulls r2, r9, r2, r3          @ encoding: [0x92,0x23,0x99,0xe0]
2457 @ CHECK: umullseq       r3, r5, r1, r2  @ encoding: [0x91,0x32,0x95,0x00]
2458
2459
2460 @------------------------------------------------------------------------------
2461 @ UQADD16/UQADD8
2462 @------------------------------------------------------------------------------
2463         uqadd16 r1, r2, r3
2464         uqadd16gt r4, r7, r9
2465         uqadd8 r3, r4, r8
2466         uqadd8le r8, r1, r2
2467
2468
2469 @ CHECK: uqadd16        r1, r2, r3      @ encoding: [0x13,0x1f,0x62,0xe6]
2470 @ CHECK: uqadd16gt      r4, r7, r9      @ encoding: [0x19,0x4f,0x67,0xc6]
2471 @ CHECK: uqadd8 r3, r4, r8              @ encoding: [0x98,0x3f,0x64,0xe6]
2472 @ CHECK: uqadd8le       r8, r1, r2      @ encoding: [0x92,0x8f,0x61,0xd6]
2473
2474
2475 @------------------------------------------------------------------------------
2476 @ UQASX
2477 @------------------------------------------------------------------------------
2478         uqasx r2, r4, r1
2479         uqasxhi r5, r2, r9
2480
2481 @ CHECK: uqasx  r2, r4, r1              @ encoding: [0x31,0x2f,0x64,0xe6]
2482 @ CHECK: uqasxhi        r5, r2, r9      @ encoding: [0x39,0x5f,0x62,0x86]
2483
2484
2485 @------------------------------------------------------------------------------
2486 @ UQSAX
2487 @------------------------------------------------------------------------------
2488         uqsax r1, r3, r7
2489         uqsaxal r3, r6, r2
2490
2491 @ CHECK: uqsax  r1, r3, r7              @ encoding: [0x57,0x1f,0x63,0xe6]
2492 @ CHECK: uqsax  r3, r6, r2              @ encoding: [0x52,0x3f,0x66,0xe6]
2493
2494
2495 @------------------------------------------------------------------------------
2496 @ UQSUB16/UQSUB8
2497 @------------------------------------------------------------------------------
2498         uqsub16 r1, r5, r3
2499         uqsub16gt r3, r2, r5
2500         uqsub8 r2, r1, r4
2501         uqsub8le r4, r6, r9
2502
2503 @ CHECK: uqsub16        r1, r5, r3      @ encoding: [0x73,0x1f,0x65,0xe6]
2504 @ CHECK: uqsub16gt      r3, r2, r5      @ encoding: [0x75,0x3f,0x62,0xc6]
2505 @ CHECK: uqsub8 r2, r1, r4              @ encoding: [0xf4,0x2f,0x61,0xe6]
2506 @ CHECK: uqsub8le       r4, r6, r9      @ encoding: [0xf9,0x4f,0x66,0xd6]
2507
2508
2509 @------------------------------------------------------------------------------
2510 @ USADA8/USAD8
2511 @------------------------------------------------------------------------------
2512         usad8 r2, r1, r4
2513         usad8le r4, r6, r9
2514         usada8 r1, r5, r3, r7
2515         usada8gt r3, r2, r5, r1
2516
2517 @ CHECK: usad8  r2, r1, r4              @ encoding: [0x11,0xf4,0x82,0xe7]
2518 @ CHECK: usad8le        r4, r6, r9      @ encoding: [0x16,0xf9,0x84,0xd7]
2519 @ CHECK: usada8 r1, r5, r3, r7          @ encoding: [0x15,0x73,0x81,0xe7]
2520 @ CHECK: usada8gt       r3, r2, r5, r1  @ encoding: [0x12,0x15,0x83,0xc7]
2521
2522
2523 @------------------------------------------------------------------------------
2524 @ USAT
2525 @------------------------------------------------------------------------------
2526         usat    r8, #1, r10
2527         usat    r8, #4, r10, lsl #0
2528         usat    r8, #5, r10, lsl #31
2529         usat    r8, #31, r10, asr #32
2530         usat    r8, #16, r10, asr #1
2531
2532 @ CHECK: usat   r8, #1, r10             @ encoding: [0x1a,0x80,0xe1,0xe6]
2533 @ CHECK: usat   r8, #4, r10             @ encoding: [0x1a,0x80,0xe4,0xe6]
2534 @ CHECK: usat   r8, #5, r10, lsl #31    @ encoding: [0x9a,0x8f,0xe5,0xe6]
2535 @ CHECK: usat   r8, #31, r10, asr #32   @ encoding: [0x5a,0x80,0xff,0xe6]
2536 @ CHECK: usat   r8, #16, r10, asr #1    @ encoding: [0xda,0x80,0xf0,0xe6]
2537
2538
2539 @------------------------------------------------------------------------------
2540 @ USAT16
2541 @------------------------------------------------------------------------------
2542         usat16  r2, #2, r7
2543         usat16  r3, #15, r5
2544
2545 @ CHECK: usat16 r2, #2, r7              @ encoding: [0x37,0x2f,0xe2,0xe6]
2546 @ CHECK: usat16 r3, #15, r5             @ encoding: [0x35,0x3f,0xef,0xe6]
2547
2548
2549 @------------------------------------------------------------------------------
2550 @ USAX
2551 @------------------------------------------------------------------------------
2552         usax r2, r3, r4
2553         usaxne r2, r3, r4
2554
2555 @ CHECK: usax   r2, r3, r4              @ encoding: [0x54,0x2f,0x53,0xe6]
2556 @ CHECK: usaxne r2, r3, r4              @ encoding: [0x54,0x2f,0x53,0x16]
2557
2558 @------------------------------------------------------------------------------
2559 @ USUB16/USUB8
2560 @------------------------------------------------------------------------------
2561         usub16 r4, r2, r7
2562         usub16hi r1, r1, r3
2563         usub8 r1, r8, r5
2564         usub8le r9, r2, r3
2565
2566 @ CHECK: usub16 r4, r2, r7              @ encoding: [0x77,0x4f,0x52,0xe6]
2567 @ CHECK: usub16hi       r1, r1, r3      @ encoding: [0x73,0x1f,0x51,0x86]
2568 @ CHECK: usub8  r1, r8, r5              @ encoding: [0xf5,0x1f,0x58,0xe6]
2569 @ CHECK: usub8le        r9, r2, r3      @ encoding: [0xf3,0x9f,0x52,0xd6]
2570
2571
2572 @------------------------------------------------------------------------------
2573 @ UXTAB
2574 @------------------------------------------------------------------------------
2575         uxtab r2, r3, r4
2576         uxtab r4, r5, r6, ror #0
2577         uxtablt r6, r2, r9, ror #8
2578         uxtab r5, r1, r4, ror #16
2579         uxtab r7, r8, r3, ror #24
2580
2581 @ CHECK: uxtab  r2, r3, r4              @ encoding: [0x74,0x20,0xe3,0xe6]
2582 @ CHECK: uxtab  r4, r5, r6              @ encoding: [0x76,0x40,0xe5,0xe6]
2583 @ CHECK: uxtablt r6, r2, r9, ror #8     @ encoding: [0x79,0x64,0xe2,0xb6]
2584 @ CHECK: uxtab  r5, r1, r4, ror #16     @ encoding: [0x74,0x58,0xe1,0xe6]
2585 @ CHECK: uxtab  r7, r8, r3, ror #24     @ encoding: [0x73,0x7c,0xe8,0xe6]
2586
2587
2588 @------------------------------------------------------------------------------
2589 @ UXTAB16
2590 @------------------------------------------------------------------------------
2591         uxtab16ge r0, r1, r4
2592         uxtab16 r6, r2, r7, ror #0
2593         uxtab16 r3, r5, r8, ror #8
2594         uxtab16 r3, r2, r1, ror #16
2595         uxtab16eq r1, r2, r3, ror #24
2596
2597 @ CHECK: uxtab16ge      r0, r1, r4      @ encoding: [0x74,0x00,0xc1,0xa6]
2598 @ CHECK: uxtab16        r6, r2, r7      @ encoding: [0x77,0x60,0xc2,0xe6]
2599 @ CHECK: uxtab16        r3, r5, r8, ror #8 @ encoding: [0x78,0x34,0xc5,0xe6]
2600 @ CHECK: uxtab16        r3, r2, r1, ror #16 @ encoding: [0x71,0x38,0xc2,0xe6]
2601 @ CHECK: uxtab16eq      r1, r2, r3, ror #24 @ encoding: [0x73,0x1c,0xc2,0x06]
2602
2603
2604 @------------------------------------------------------------------------------
2605 @ UXTAH
2606 @------------------------------------------------------------------------------
2607         uxtah r1, r3, r9
2608         uxtahhi r6, r1, r6, ror #0
2609         uxtah r3, r8, r3, ror #8
2610         uxtahlo r2, r2, r4, ror #16
2611         uxtah r9, r3, r3, ror #24
2612
2613 @ CHECK: uxtah  r1, r3, r9              @ encoding: [0x79,0x10,0xf3,0xe6]
2614 @ CHECK: uxtahhi        r6, r1, r6      @ encoding: [0x76,0x60,0xf1,0x86]
2615 @ CHECK: uxtah  r3, r8, r3, ror #8      @ encoding: [0x73,0x34,0xf8,0xe6]
2616 @ CHECK: uxtahlo        r2, r2, r4, ror #16 @ encoding: [0x74,0x28,0xf2,0x36]
2617 @ CHECK: uxtah  r9, r3, r3, ror #24     @ encoding: [0x73,0x9c,0xf3,0xe6]
2618
2619 @------------------------------------------------------------------------------
2620 @ UXTB
2621 @------------------------------------------------------------------------------
2622         uxtbge r2, r4
2623         uxtb r5, r6, ror #0
2624         uxtb r6, r9, ror #8
2625         uxtbcc r5, r1, ror #16
2626         uxtb r8, r3, ror #24
2627
2628 @ CHECK: uxtbge r2, r4                  @ encoding: [0x74,0x20,0xef,0xa6]
2629 @ CHECK: uxtb   r5, r6                  @ encoding: [0x76,0x50,0xef,0xe6]
2630 @ CHECK: uxtb   r6, r9, ror #8          @ encoding: [0x79,0x64,0xef,0xe6]
2631 @ CHECK: uxtblo r5, r1, ror #16         @ encoding: [0x71,0x58,0xef,0x36]
2632 @ CHECK: uxtb   r8, r3, ror #24         @ encoding: [0x73,0x8c,0xef,0xe6]
2633
2634
2635 @------------------------------------------------------------------------------
2636 @ UXTB16
2637 @------------------------------------------------------------------------------
2638         uxtb16 r1, r4
2639         uxtb16 r6, r7, ror #0
2640         uxtb16cs r3, r5, ror #8
2641         uxtb16 r3, r1, ror #16
2642         uxtb16ge r2, r3, ror #24
2643
2644 @ CHECK: uxtb16 r1, r4                  @ encoding: [0x74,0x10,0xcf,0xe6]
2645 @ CHECK: uxtb16 r6, r7                  @ encoding: [0x77,0x60,0xcf,0xe6]
2646 @ CHECK: uxtb16hs       r3, r5, ror #8  @ encoding: [0x75,0x34,0xcf,0x26]
2647 @ CHECK: uxtb16 r3, r1, ror #16         @ encoding: [0x71,0x38,0xcf,0xe6]
2648 @ CHECK: uxtb16ge       r2, r3, ror #24 @ encoding: [0x73,0x2c,0xcf,0xa6]
2649
2650
2651 @------------------------------------------------------------------------------
2652 @ UXTH
2653 @------------------------------------------------------------------------------
2654         uxthne r3, r9
2655         uxth r1, r6, ror #0
2656         uxth r3, r8, ror #8
2657         uxthle r2, r2, ror #16
2658         uxth r9, r3, ror #24
2659
2660 @ CHECK: uxthne r3, r9                  @ encoding: [0x79,0x30,0xff,0x16]
2661 @ CHECK: uxth   r1, r6                  @ encoding: [0x76,0x10,0xff,0xe6]
2662 @ CHECK: uxth   r3, r8, ror #8          @ encoding: [0x78,0x34,0xff,0xe6]
2663 @ CHECK: uxthle r2, r2, ror #16         @ encoding: [0x72,0x28,0xff,0xd6]
2664 @ CHECK: uxth   r9, r3, ror #24         @ encoding: [0x73,0x9c,0xff,0xe6]
2665
2666
2667 @------------------------------------------------------------------------------
2668 @ WFE/WFI/YIELD
2669 @------------------------------------------------------------------------------
2670         wfe
2671         wfehi
2672         wfi
2673         wfilt
2674         yield
2675         yieldne
2676
2677 @ CHECK: wfe @ encoding: [0x02,0xf0,0x20,0xe3]
2678 @ CHECK: wfehi @ encoding: [0x02,0xf0,0x20,0x83]
2679 @ CHECK: wfi @ encoding: [0x03,0xf0,0x20,0xe3]
2680 @ CHECK: wfilt @ encoding: [0x03,0xf0,0x20,0xb3]
2681 @ CHECK: yield @ encoding: [0x01,0xf0,0x20,0xe3]
2682 @ CHECK: yieldne @ encoding: [0x01,0xf0,0x20,0x13]