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