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