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