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