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