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