]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/MC/ARM/basic-thumb2-instructions.s
Vendor import of llvm tags/RELEASE_33/final r183502 (effectively, 3.3
[FreeBSD/FreeBSD.git] / test / MC / ARM / basic-thumb2-instructions.s
1 @ RUN: llvm-mc -triple=thumbv7-apple-darwin -mcpu=cortex-a8 -show-encoding < %s | FileCheck %s
2   .syntax unified
3   .globl _func
4
5 @ Check that the assembler can handle the documented syntax from the ARM ARM.
6 @ For complex constructs like shifter operands, check more thoroughly for them
7 @ once then spot check that following instructions accept the form generally.
8 @ This gives us good coverage while keeping the overall size of the test
9 @ more reasonable.
10
11
12 @ FIXME: Some 3-operand instructions have a 2-operand assembly syntax.
13
14 _func:
15 @ CHECK: _func
16
17 @------------------------------------------------------------------------------
18 @ ADC (immediate)
19 @------------------------------------------------------------------------------
20         adc r0, r1, #4
21         adcs r0, r1, #0
22         adc r1, r2, #255
23         adc r3, r7, #0x00550055
24         adc r8, r12, #0xaa00aa00
25         adc r9, r7, #0xa5a5a5a5
26         adc r5, r3, #0x87000000
27         adc r4, r2, #0x7f800000
28         adc r4, r2, #0x00000680
29
30 @ CHECK: adc    r0, r1, #4              @ encoding: [0x41,0xf1,0x04,0x00]
31 @ CHECK: adcs   r0, r1, #0              @ encoding: [0x51,0xf1,0x00,0x00]
32 @ CHECK: adc    r1, r2, #255            @ encoding: [0x42,0xf1,0xff,0x01]
33 @ CHECK: adc    r3, r7, #5570645        @ encoding: [0x47,0xf1,0x55,0x13]
34 @ CHECK: adc    r8, r12, #2852170240    @ encoding: [0x4c,0xf1,0xaa,0x28]
35 @ CHECK: adc    r9, r7, #2779096485     @ encoding: [0x47,0xf1,0xa5,0x39]
36 @ CHECK: adc    r5, r3, #2264924160     @ encoding: [0x43,0xf1,0x07,0x45]
37 @ CHECK: adc    r4, r2, #2139095040     @ encoding: [0x42,0xf1,0xff,0x44]
38 @ CHECK: adc    r4, r2, #1664           @ encoding: [0x42,0xf5,0xd0,0x64]
39
40 @------------------------------------------------------------------------------
41 @ ADC (register)
42 @------------------------------------------------------------------------------
43         adc r4, r5, r6
44         adcs r4, r5, r6
45         adc.w r9, r1, r3
46         adcs.w r9, r1, r3
47         adc     r0, r1, r3, ror #4
48         adcs    r0, r1, r3, lsl #7
49         adc.w   r0, r1, r3, lsr #31
50         adcs.w  r0, r1, r3, asr #32
51         add r2, sp, ip
52
53 @ CHECK: adc.w  r4, r5, r6              @ encoding: [0x45,0xeb,0x06,0x04]
54 @ CHECK: adcs.w r4, r5, r6              @ encoding: [0x55,0xeb,0x06,0x04]
55 @ CHECK: adc.w  r9, r1, r3              @ encoding: [0x41,0xeb,0x03,0x09]
56 @ CHECK: adcs.w r9, r1, r3              @ encoding: [0x51,0xeb,0x03,0x09]
57 @ CHECK: adc.w  r0, r1, r3, ror #4      @ encoding: [0x41,0xeb,0x33,0x10]
58 @ CHECK: adcs.w r0, r1, r3, lsl #7      @ encoding: [0x51,0xeb,0xc3,0x10]
59 @ CHECK: adc.w  r0, r1, r3, lsr #31     @ encoding: [0x41,0xeb,0xd3,0x70]
60 @ CHECK: adcs.w r0, r1, r3, asr #32     @ encoding: [0x51,0xeb,0x23,0x00]
61 @ CHECK: add.w  r2, sp, r12             @ encoding: [0x0d,0xeb,0x0c,0x02]
62
63
64 @------------------------------------------------------------------------------
65 @ ADD (immediate)
66 @------------------------------------------------------------------------------
67         itet eq
68         addeq r1, r2, #4
69         addwne r5, r3, #1023
70         addeq r4, r5, #293
71         add r2, sp, #1024
72         add r2, r8, #0xff00
73         add r2, r3, #257
74         addw r2, r3, #257
75         add r12, r6, #0x100
76         addw r12, r6, #0x100
77         adds r1, r2, #0x1f0
78         add r2, #1
79         add r0, r0, #32
80         adds r2, r2, #56
81         adds r2, #56
82
83         adds.w r2, #-16
84         adds.w r2, r2, #-16
85         addw r2, #-16
86         addw r2, #-16
87         addw r2, r2, #-16
88
89 @ CHECK: itet   eq                      @ encoding: [0x0a,0xbf]
90 @ CHECK: addeq  r1, r2, #4              @ encoding: [0x11,0x1d]
91 @ CHECK: addwne r5, r3, #1023           @ encoding: [0x03,0xf2,0xff,0x35]
92 @ CHECK: addweq r4, r5, #293            @ encoding: [0x05,0xf2,0x25,0x14]
93 @ CHECK: add.w  r2, sp, #1024           @ encoding: [0x0d,0xf5,0x80,0x62]
94 @ CHECK: add.w  r2, r8, #65280          @ encoding: [0x08,0xf5,0x7f,0x42]
95 @ CHECK: addw   r2, r3, #257            @ encoding: [0x03,0xf2,0x01,0x12]
96 @ CHECK: addw   r2, r3, #257            @ encoding: [0x03,0xf2,0x01,0x12]
97 @ CHECK: add.w  r12, r6, #256           @ encoding: [0x06,0xf5,0x80,0x7c]
98 @ CHECK: addw   r12, r6, #256           @ encoding: [0x06,0xf2,0x00,0x1c]
99 @ CHECK: adds.w r1, r2, #496            @ encoding: [0x12,0xf5,0xf8,0x71]
100 @ CHECK: add.w  r2, r2, #1              @ encoding: [0x02,0xf1,0x01,0x02]
101 @ CHECK: add.w  r0, r0, #32             @ encoding: [0x00,0xf1,0x20,0x00]
102 @ CHECK: adds   r2, #56                 @ encoding: [0x38,0x32]
103 @ CHECK: adds   r2, #56                 @ encoding: [0x38,0x32]
104
105 @ CHECK: subs.w r2, r2, #16             @ encoding: [0xb2,0xf1,0x10,0x02]
106 @ CHECK: subs.w r2, r2, #16             @ encoding: [0xb2,0xf1,0x10,0x02]
107 @ CHECK: subw   r2, r2, #16             @ encoding: [0xa2,0xf2,0x10,0x02]
108 @ CHECK: subw   r2, r2, #16             @ encoding: [0xa2,0xf2,0x10,0x02]
109 @ CHECK: subw   r2, r2, #16             @ encoding: [0xa2,0xf2,0x10,0x02]
110
111
112 @------------------------------------------------------------------------------
113 @ ADD (register)
114 @------------------------------------------------------------------------------
115         add r1, r2, r8
116         add r5, r9, r2, asr #32
117         adds r7, r3, r1, lsl #31
118         adds.w r0, r3, r6, lsr #25
119         add.w r4, r8, r1, ror #12
120         add r10, r8
121         add r10, r10, r8
122
123 @ CHECK: add.w  r1, r2, r8              @ encoding: [0x02,0xeb,0x08,0x01]
124 @ CHECK: add.w  r5, r9, r2, asr #32     @ encoding: [0x09,0xeb,0x22,0x05]
125 @ CHECK: adds.w r7, r3, r1, lsl #31     @ encoding: [0x13,0xeb,0xc1,0x77]
126 @ CHECK: adds.w r0, r3, r6, lsr #25     @ encoding: [0x13,0xeb,0x56,0x60]
127 @ CHECK: add.w  r4, r8, r1, ror #12     @ encoding: [0x08,0xeb,0x31,0x34]
128 @ CHECK: add    r10, r8                 @ encoding: [0xc2,0x44]
129 @ CHECK: add    r10, r8                 @ encoding: [0xc2,0x44]
130
131
132 @------------------------------------------------------------------------------
133 @ FIXME: ADR
134 @------------------------------------------------------------------------------
135
136         subw r11, pc, #3270
137         adr.w r11, #-826
138         adr.w r1, #-0x0
139
140 @ CHECK: subw   r11, pc, #3270          @ encoding: [0xaf,0xf6,0xc6,0x4b]
141 @ CHECK: adr.w  r11, #-826              @ encoding: [0xaf,0xf2,0x3a,0x3b]
142 @ CHECK: adr.w  r1, #-0                 @ encoding: [0xaf,0xf2,0x00,0x01]
143
144 @------------------------------------------------------------------------------
145 @ AND (immediate)
146 @------------------------------------------------------------------------------
147         and r2, r5, #0xff000
148         ands r3, r12, #0xf
149         and r1, #0xff
150         and r1, r1, #0xff
151
152 @ CHECK: and    r2, r5, #1044480        @ encoding: [0x05,0xf4,0x7f,0x22]
153 @ CHECK: ands   r3, r12, #15            @ encoding: [0x1c,0xf0,0x0f,0x03]
154 @ CHECK: and    r1, r1, #255            @ encoding: [0x01,0xf0,0xff,0x01]
155 @ CHECK: and    r1, r1, #255            @ encoding: [0x01,0xf0,0xff,0x01]
156
157
158 @------------------------------------------------------------------------------
159 @ AND (register)
160 @------------------------------------------------------------------------------
161         and r4, r9, r8
162         and r1, r4, r8, asr #3
163         ands r2, r1, r7, lsl #1
164         ands.w r4, r5, r2, lsr #20
165         and.w r9, r12, r1, ror #17
166
167 @ CHECK: and.w  r4, r9, r8              @ encoding: [0x09,0xea,0x08,0x04]
168 @ CHECK: and.w  r1, r4, r8, asr #3      @ encoding: [0x04,0xea,0xe8,0x01]
169 @ CHECK: ands.w r2, r1, r7, lsl #1      @ encoding: [0x11,0xea,0x47,0x02]
170 @ CHECK: ands.w r4, r5, r2, lsr #20     @ encoding: [0x15,0xea,0x12,0x54]
171 @ CHECK: and.w  r9, r12, r1, ror #17    @ encoding: [0x0c,0xea,0x71,0x49]
172
173 @------------------------------------------------------------------------------
174 @ ASR (immediate)
175 @------------------------------------------------------------------------------
176         asr r2, r3, #12
177         asrs r8, r3, #32
178         asrs.w r2, r3, #1
179         asr r2, r3, #4
180         asrs r2, r12, #15
181
182         asr r3, #19
183         asrs r8, #2
184         asrs.w r7, #5
185         asr.w r12, #21
186
187 @ CHECK: asr.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x23,0x32]
188 @ CHECK: asrs.w r8, r3, #32             @ encoding: [0x5f,0xea,0x23,0x08]
189 @ CHECK: asrs.w r2, r3, #1              @ encoding: [0x5f,0xea,0x63,0x02]
190 @ CHECK: asr.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x23,0x12]
191 @ CHECK: asrs.w r2, r12, #15            @ encoding: [0x5f,0xea,0xec,0x32]
192
193 @ CHECK: asr.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xe3,0x43]
194 @ CHECK: asrs.w r8, r8, #2              @ encoding: [0x5f,0xea,0xa8,0x08]
195 @ CHECK: asrs.w r7, r7, #5              @ encoding: [0x5f,0xea,0x67,0x17]
196 @ CHECK: asr.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x6c,0x5c]
197
198
199 @------------------------------------------------------------------------------
200 @ ASR (register)
201 @------------------------------------------------------------------------------
202         asr r3, r4, r2
203         asr.w r1, r2
204         asrs r3, r4, r8
205
206 @ CHECK: asr.w  r3, r4, r2              @ encoding: [0x44,0xfa,0x02,0xf3]
207 @ CHECK: asr.w  r1, r1, r2              @ encoding: [0x41,0xfa,0x02,0xf1]
208 @ CHECK: asrs.w r3, r4, r8              @ encoding: [0x54,0xfa,0x08,0xf3]
209
210
211 @------------------------------------------------------------------------------
212 @ B
213 @------------------------------------------------------------------------------
214         b.w   _bar
215         beq.w   _bar
216         it eq
217         beq.w _bar
218         bmi.w   #-183396
219
220 @ CHECK: b.w    _bar                    @ encoding: [A,0xf0'A',A,0x90'A']
221           @   fixup A - offset: 0, value: _bar, kind: fixup_t2_uncondbranch
222 @ CHECK: beq.w  _bar                    @ encoding: [A,0xf0'A',A,0x80'A']
223           @   fixup A - offset: 0, value: _bar, kind: fixup_t2_condbranch
224 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
225 @ CHECK: beq.w  _bar                    @ encoding: [A,0xf0'A',A,0x90'A']
226           @   fixup A - offset: 0, value: _bar, kind: fixup_t2_uncondbranch
227 @ CHECK: bmi.w   #-183396                @ encoding: [0x13,0xf5,0xce,0xa9]
228
229
230 @------------------------------------------------------------------------------
231 @ BFC
232 @------------------------------------------------------------------------------
233         bfc r5, #3, #17
234         it lo
235         bfccc r5, #3, #17
236
237 @ CHECK: bfc    r5, #3, #17             @ encoding: [0x6f,0xf3,0xd3,0x05]
238 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
239 @ CHECK: bfclo  r5, #3, #17             @ encoding: [0x6f,0xf3,0xd3,0x05]
240
241
242 @------------------------------------------------------------------------------
243 @ BFI
244 @------------------------------------------------------------------------------
245         bfi r5, r2, #3, #17
246         it ne
247         bfine r5, r2, #3, #17
248
249 @ CHECK: bfi    r5, r2, #3, #17         @ encoding: [0x62,0xf3,0xd3,0x05]
250 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
251 @ CHECK: bfine  r5, r2, #3, #17         @ encoding: [0x62,0xf3,0xd3,0x05]
252
253
254 @------------------------------------------------------------------------------
255 @ BIC
256 @------------------------------------------------------------------------------
257         bic r10, r1, #0xf
258         bic r12, r3, r6
259         bic r11, r2, r6, lsl #12
260         bic r8, r4, r1, lsr #11
261         bic r7, r5, r7, lsr #15
262         bic r6, r7, r9, asr #32
263         bic r5, r6, r8, ror #1
264
265         @ destination register is optional
266         bic r1, #0xf
267         bic r1, r1
268         bic r4, r2, lsl #31
269         bic r6, r3, lsr #12
270         bic r7, r4, lsr #7
271         bic r8, r5, asr #15
272         bic r12, r6, ror #29
273
274 @ CHECK: bic    r10, r1, #15            @ encoding: [0x21,0xf0,0x0f,0x0a]
275 @ CHECK: bic.w  r12, r3, r6             @ encoding: [0x23,0xea,0x06,0x0c]
276 @ CHECK: bic.w  r11, r2, r6, lsl #12    @ encoding: [0x22,0xea,0x06,0x3b]
277 @ CHECK: bic.w  r8, r4, r1, lsr #11     @ encoding: [0x24,0xea,0xd1,0x28]
278 @ CHECK: bic.w  r7, r5, r7, lsr #15     @ encoding: [0x25,0xea,0xd7,0x37]
279 @ CHECK: bic.w  r6, r7, r9, asr #32     @ encoding: [0x27,0xea,0x29,0x06]
280 @ CHECK: bic.w  r5, r6, r8, ror #1      @ encoding: [0x26,0xea,0x78,0x05]
281
282 @ CHECK: bic    r1, r1, #15             @ encoding: [0x21,0xf0,0x0f,0x01]
283 @ CHECK: bic.w  r1, r1, r1              @ encoding: [0x21,0xea,0x01,0x01]
284 @ CHECK: bic.w  r4, r4, r2, lsl #31     @ encoding: [0x24,0xea,0xc2,0x74]
285 @ CHECK: bic.w  r6, r6, r3, lsr #12     @ encoding: [0x26,0xea,0x13,0x36]
286 @ CHECK: bic.w  r7, r7, r4, lsr #7      @ encoding: [0x27,0xea,0xd4,0x17]
287 @ CHECK: bic.w  r8, r8, r5, asr #15     @ encoding: [0x28,0xea,0xe5,0x38]
288 @ CHECK: bic.w  r12, r12, r6, ror #29   @ encoding: [0x2c,0xea,0x76,0x7c]
289
290 @------------------------------------------------------------------------------
291 @ BKPT
292 @------------------------------------------------------------------------------
293         it pl
294         bkpt #234
295
296 @ CHECK: it pl                      @ encoding: [0x58,0xbf]
297 @ CHECK: bkpt #234                    @ encoding: [0xea,0xbe]
298
299 @------------------------------------------------------------------------------
300 @ BXJ
301 @------------------------------------------------------------------------------
302         bxj r5
303         it ne
304         bxjne r7
305
306 @ CHECK: bxj    r5                      @ encoding: [0xc5,0xf3,0x00,0x8f]
307 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
308 @ CHECK: bxjne  r7                      @ encoding: [0xc7,0xf3,0x00,0x8f]
309
310
311 @------------------------------------------------------------------------------
312 @ CBZ/CBNZ
313 @------------------------------------------------------------------------------
314         cbnz    r7, #6
315         cbnz    r7, #12
316         cbz   r6, _bar
317         cbnz   r6, _bar
318
319 @ CHECK: cbnz    r7, #6                  @ encoding: [0x1f,0xb9]
320 @ CHECK: cbnz    r7, #12                 @ encoding: [0x37,0xb9]
321 @ CHECK: cbz    r6, _bar                @ encoding: [0x06'A',0xb1'A']
322            @   fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_cb
323 @ CHECK: cbnz   r6, _bar                @ encoding: [0x06'A',0xb9'A']
324            @   fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_cb
325
326
327 @------------------------------------------------------------------------------
328 @ CDP/CDP2
329 @------------------------------------------------------------------------------
330   cdp  p7, #1, c1, c1, c1, #4
331   cdp2  p7, #1, c1, c1, c1, #4
332
333 @ CHECK: cdp    p7, #1, c1, c1, c1, #4  @ encoding: [0x11,0xee,0x81,0x17]
334 @ CHECK: cdp2   p7, #1, c1, c1, c1, #4  @ encoding: [0x11,0xfe,0x81,0x17]
335
336
337 @------------------------------------------------------------------------------
338 @ CLREX
339 @------------------------------------------------------------------------------
340         clrex
341         it ne
342         clrexne
343
344 @ CHECK: clrex                           @ encoding: [0xbf,0xf3,0x2f,0x8f]
345 @ CHECK: it     ne                       @ encoding: [0x18,0xbf]
346 @ CHECK: clrexne                         @ encoding: [0xbf,0xf3,0x2f,0x8f]
347
348
349 @------------------------------------------------------------------------------
350 @ CLZ
351 @------------------------------------------------------------------------------
352         clz r1, r2
353         it eq
354         clzeq r1, r2
355
356 @ CHECK: clz    r1, r2                  @ encoding: [0xb2,0xfa,0x82,0xf1]
357 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
358 @ CHECK: clzeq  r1, r2                  @ encoding: [0xb2,0xfa,0x82,0xf1]
359
360
361 @------------------------------------------------------------------------------
362 @ CMN
363 @------------------------------------------------------------------------------
364         cmn r1, #0xf
365         cmn r8, r6
366         cmn r1, r6, lsl #10
367         cmn r1, r6, lsr #10
368         cmn sp, r6, lsr #10
369         cmn r1, r6, asr #10
370         cmn r1, r6, ror #10
371
372 @ CHECK: cmn.w  r1, #15                 @ encoding: [0x11,0xf1,0x0f,0x0f]
373 @ CHECK: cmn.w  r8, r6                  @ encoding: [0x18,0xeb,0x06,0x0f]
374 @ CHECK: cmn.w  r1, r6, lsl #10         @ encoding: [0x11,0xeb,0x86,0x2f]
375 @ CHECK: cmn.w  r1, r6, lsr #10         @ encoding: [0x11,0xeb,0x96,0x2f]
376 @ CHECK: cmn.w  sp, r6, lsr #10         @ encoding: [0x1d,0xeb,0x96,0x2f]
377 @ CHECK: cmn.w  r1, r6, asr #10         @ encoding: [0x11,0xeb,0xa6,0x2f]
378 @ CHECK: cmn.w  r1, r6, ror #10         @ encoding: [0x11,0xeb,0xb6,0x2f]
379
380
381 @------------------------------------------------------------------------------
382 @ CMP
383 @------------------------------------------------------------------------------
384         cmp r5, #0xff00
385         cmp.w r4, r12
386         cmp r9, r6, lsl #12
387         cmp r3, r7, lsr #31
388         cmp sp, r6, lsr #1
389         cmp r2, r5, asr #24
390         cmp r1, r4, ror #15
391         cmp r2, #-2
392         cmp r9, #1
393
394 @ CHECK: cmp.w  r5, #65280              @ encoding: [0xb5,0xf5,0x7f,0x4f]
395 @ CHECK: cmp.w  r4, r12                 @ encoding: [0xb4,0xeb,0x0c,0x0f]
396 @ CHECK: cmp.w  r9, r6, lsl #12         @ encoding: [0xb9,0xeb,0x06,0x3f]
397 @ CHECK: cmp.w  r3, r7, lsr #31         @ encoding: [0xb3,0xeb,0xd7,0x7f]
398 @ CHECK: cmp.w  sp, r6, lsr #1          @ encoding: [0xbd,0xeb,0x56,0x0f]
399 @ CHECK: cmp.w  r2, r5, asr #24         @ encoding: [0xb2,0xeb,0x25,0x6f]
400 @ CHECK: cmp.w  r1, r4, ror #15         @ encoding: [0xb1,0xeb,0xf4,0x3f]
401 @ CHECK: cmn.w  r2, #2                  @ encoding: [0x12,0xf1,0x02,0x0f]
402 @ CHECK: cmp.w  r9, #1                  @ encoding: [0xb9,0xf1,0x01,0x0f]
403
404
405 @------------------------------------------------------------------------------
406 @ DBG
407 @------------------------------------------------------------------------------
408         dbg #5
409         dbg #0
410         dbg #15
411
412 @ CHECK: dbg    #5                      @ encoding: [0xaf,0xf3,0xf5,0x80]
413 @ CHECK: dbg    #0                      @ encoding: [0xaf,0xf3,0xf0,0x80]
414 @ CHECK: dbg    #15                     @ encoding: [0xaf,0xf3,0xff,0x80]
415
416
417 @------------------------------------------------------------------------------
418 @ DMB
419 @------------------------------------------------------------------------------
420         dmb #0xf
421         dmb #0xe
422         dmb #0xd
423         dmb #0xc
424         dmb #0xb
425         dmb #0xa
426         dmb #0x9
427         dmb #0x8
428         dmb #0x7
429         dmb #0x6
430         dmb #0x5
431         dmb #0x4
432         dmb #0x3
433         dmb #0x2
434         dmb #0x1
435         dmb #0x0
436
437         dmb sy
438         dmb st
439         dmb sh
440         dmb ish
441         dmb shst
442         dmb ishst
443         dmb un
444         dmb nsh
445         dmb unst
446         dmb nshst
447         dmb osh
448         dmb oshst
449         dmb
450
451 @ CHECK: dmb    sy                      @ encoding: [0xbf,0xf3,0x5f,0x8f]
452 @ CHECK: dmb    st                      @ encoding: [0xbf,0xf3,0x5e,0x8f]
453 @ CHECK: dmb    #0xd                    @ encoding: [0xbf,0xf3,0x5d,0x8f]
454 @ CHECK: dmb    #0xc                    @ encoding: [0xbf,0xf3,0x5c,0x8f]
455 @ CHECK: dmb    ish                     @ encoding: [0xbf,0xf3,0x5b,0x8f]
456 @ CHECK: dmb    ishst                   @ encoding: [0xbf,0xf3,0x5a,0x8f]
457 @ CHECK: dmb    #0x9                    @ encoding: [0xbf,0xf3,0x59,0x8f]
458 @ CHECK: dmb    #0x8                    @ encoding: [0xbf,0xf3,0x58,0x8f]
459 @ CHECK: dmb    nsh                     @ encoding: [0xbf,0xf3,0x57,0x8f]
460 @ CHECK: dmb    nshst                   @ encoding: [0xbf,0xf3,0x56,0x8f]
461 @ CHECK: dmb    #0x5                    @ encoding: [0xbf,0xf3,0x55,0x8f]
462 @ CHECK: dmb    #0x4                    @ encoding: [0xbf,0xf3,0x54,0x8f]
463 @ CHECK: dmb    osh                     @ encoding: [0xbf,0xf3,0x53,0x8f]
464 @ CHECK: dmb    oshst                   @ encoding: [0xbf,0xf3,0x52,0x8f]
465 @ CHECK: dmb    #0x1                    @ encoding: [0xbf,0xf3,0x51,0x8f]
466 @ CHECK: dmb    #0x0                    @ encoding: [0xbf,0xf3,0x50,0x8f]
467
468 @ CHECK: dmb    sy                      @ encoding: [0xbf,0xf3,0x5f,0x8f]
469 @ CHECK: dmb    st                      @ encoding: [0xbf,0xf3,0x5e,0x8f]
470 @ CHECK: dmb    ish                     @ encoding: [0xbf,0xf3,0x5b,0x8f]
471 @ CHECK: dmb    ish                     @ encoding: [0xbf,0xf3,0x5b,0x8f]
472 @ CHECK: dmb    ishst                   @ encoding: [0xbf,0xf3,0x5a,0x8f]
473 @ CHECK: dmb    ishst                   @ encoding: [0xbf,0xf3,0x5a,0x8f]
474 @ CHECK: dmb    nsh                     @ encoding: [0xbf,0xf3,0x57,0x8f]
475 @ CHECK: dmb    nsh                     @ encoding: [0xbf,0xf3,0x57,0x8f]
476 @ CHECK: dmb    nshst                   @ encoding: [0xbf,0xf3,0x56,0x8f]
477 @ CHECK: dmb    nshst                   @ encoding: [0xbf,0xf3,0x56,0x8f]
478 @ CHECK: dmb    osh                     @ encoding: [0xbf,0xf3,0x53,0x8f]
479 @ CHECK: dmb    oshst                   @ encoding: [0xbf,0xf3,0x52,0x8f]
480 @ CHECK: dmb    sy                      @ encoding: [0xbf,0xf3,0x5f,0x8f]
481
482
483 @------------------------------------------------------------------------------
484 @ DSB
485 @------------------------------------------------------------------------------
486         dsb #0xf
487         dsb #0xe
488         dsb #0xd
489         dsb #0xc
490         dsb #0xb
491         dsb #0xa
492         dsb #0x9
493         dsb #0x8
494         dsb #0x7
495         dsb #0x6
496         dsb #0x5
497         dsb #0x4
498         dsb #0x3
499         dsb #0x2
500         dsb #0x1
501         dsb #0x0
502
503         dsb sy
504         dsb st
505         dsb sh
506         dsb ish
507         dsb shst
508         dsb ishst
509         dsb un
510         dsb nsh
511         dsb unst
512         dsb nshst
513         dsb osh
514         dsb oshst
515         dsb
516
517 @ CHECK: dsb    sy                      @ encoding: [0xbf,0xf3,0x4f,0x8f]
518 @ CHECK: dsb    st                      @ encoding: [0xbf,0xf3,0x4e,0x8f]
519 @ CHECK: dsb    #0xd                    @ encoding: [0xbf,0xf3,0x4d,0x8f]
520 @ CHECK: dsb    #0xc                    @ encoding: [0xbf,0xf3,0x4c,0x8f]
521 @ CHECK: dsb    ish                     @ encoding: [0xbf,0xf3,0x4b,0x8f]
522 @ CHECK: dsb    ishst                   @ encoding: [0xbf,0xf3,0x4a,0x8f]
523 @ CHECK: dsb    #0x9                    @ encoding: [0xbf,0xf3,0x49,0x8f]
524 @ CHECK: dsb    #0x8                    @ encoding: [0xbf,0xf3,0x48,0x8f]
525 @ CHECK: dsb    nsh                     @ encoding: [0xbf,0xf3,0x47,0x8f]
526 @ CHECK: dsb    nshst                   @ encoding: [0xbf,0xf3,0x46,0x8f]
527 @ CHECK: dsb    #0x5                    @ encoding: [0xbf,0xf3,0x45,0x8f]
528 @ CHECK: dsb    #0x4                    @ encoding: [0xbf,0xf3,0x44,0x8f]
529 @ CHECK: dsb    osh                     @ encoding: [0xbf,0xf3,0x43,0x8f]
530 @ CHECK: dsb    oshst                   @ encoding: [0xbf,0xf3,0x42,0x8f]
531 @ CHECK: dsb    #0x1                    @ encoding: [0xbf,0xf3,0x41,0x8f]
532 @ CHECK: dsb    #0x0                    @ encoding: [0xbf,0xf3,0x40,0x8f]
533
534 @ CHECK: dsb    sy                      @ encoding: [0xbf,0xf3,0x4f,0x8f]
535 @ CHECK: dsb    st                      @ encoding: [0xbf,0xf3,0x4e,0x8f]
536 @ CHECK: dsb    ish                     @ encoding: [0xbf,0xf3,0x4b,0x8f]
537 @ CHECK: dsb    ish                     @ encoding: [0xbf,0xf3,0x4b,0x8f]
538 @ CHECK: dsb    ishst                   @ encoding: [0xbf,0xf3,0x4a,0x8f]
539 @ CHECK: dsb    ishst                   @ encoding: [0xbf,0xf3,0x4a,0x8f]
540 @ CHECK: dsb    nsh                     @ encoding: [0xbf,0xf3,0x47,0x8f]
541 @ CHECK: dsb    nsh                     @ encoding: [0xbf,0xf3,0x47,0x8f]
542 @ CHECK: dsb    nshst                   @ encoding: [0xbf,0xf3,0x46,0x8f]
543 @ CHECK: dsb    nshst                   @ encoding: [0xbf,0xf3,0x46,0x8f]
544 @ CHECK: dsb    osh                     @ encoding: [0xbf,0xf3,0x43,0x8f]
545 @ CHECK: dsb    oshst                   @ encoding: [0xbf,0xf3,0x42,0x8f]
546 @ CHECK: dsb    sy                      @ encoding: [0xbf,0xf3,0x4f,0x8f]
547
548
549 @------------------------------------------------------------------------------
550 @ EOR
551 @------------------------------------------------------------------------------
552         eor r4, r5, #0xf000
553         eor r4, r5, r6
554         eor r4, r5, r6, lsl #5
555         eor r4, r5, r6, lsr #5
556         eor r4, r5, r6, lsr #5
557         eor r4, r5, r6, asr #5
558         eor r4, r5, r6, ror #5
559
560 @ CHECK: eor    r4, r5, #61440          @ encoding: [0x85,0xf4,0x70,0x44]
561 @ CHECK: eor.w  r4, r5, r6              @ encoding: [0x85,0xea,0x06,0x04]
562 @ CHECK: eor.w  r4, r5, r6, lsl #5      @ encoding: [0x85,0xea,0x46,0x14]
563 @ CHECK: eor.w  r4, r5, r6, lsr #5      @ encoding: [0x85,0xea,0x56,0x14]
564 @ CHECK: eor.w  r4, r5, r6, lsr #5      @ encoding: [0x85,0xea,0x56,0x14]
565 @ CHECK: eor.w  r4, r5, r6, asr #5      @ encoding: [0x85,0xea,0x66,0x14]
566 @ CHECK: eor.w  r4, r5, r6, ror #5      @ encoding: [0x85,0xea,0x76,0x14]
567
568
569 @------------------------------------------------------------------------------
570 @ ISB
571 @------------------------------------------------------------------------------
572         isb sy
573         isb
574
575 @ CHECK: isb    sy                      @ encoding: [0xbf,0xf3,0x6f,0x8f]
576 @ CHECK: isb    sy                      @ encoding: [0xbf,0xf3,0x6f,0x8f]
577
578
579 @------------------------------------------------------------------------------
580 @ IT
581 @------------------------------------------------------------------------------
582 @ Test encodings of a few full IT blocks, not just the IT instruction
583
584         iteet eq
585         addeq r0, r1, r2
586         nopne
587         subne r5, r6, r7
588         addeq r1, r2, #4
589
590 @ CHECK: iteet  eq                      @ encoding: [0x0d,0xbf]
591 @ CHECK: addeq  r0, r1, r2              @ encoding: [0x88,0x18]
592 @ CHECK: nopne                          @ encoding: [0x00,0xbf]
593 @ CHECK: subne  r5, r6, r7              @ encoding: [0xf5,0x1b]
594 @ CHECK: addeq  r1, r2, #4              @ encoding: [0x11,0x1d]
595
596 @ Should also work for UPPER CASE condition codes.
597
598         ITEET EQ
599         ADDEQ R0, R1, R2
600         NOPNE
601         SUBNE R5, R6, R7
602         ADDEQ R1, R2, #4
603
604 @ CHECK: iteet  eq                      @ encoding: [0x0d,0xbf]
605 @ CHECK: addeq  r0, r1, r2              @ encoding: [0x88,0x18]
606 @ CHECK: nopne                          @ encoding: [0x00,0xbf]
607 @ CHECK: subne  r5, r6, r7              @ encoding: [0xf5,0x1b]
608 @ CHECK: addeq  r1, r2, #4              @ encoding: [0x11,0x1d]
609
610 @------------------------------------------------------------------------------
611 @ LDC{L}/LDC2{L}
612 @------------------------------------------------------------------------------
613         ldc2 p0, c8, [r1, #4]
614         ldc2 p1, c7, [r2]
615         ldc2 p2, c6, [r3, #-224]
616         ldc2 p3, c5, [r4, #-120]!
617         ldc2 p4, c4, [r5], #16
618         ldc2 p5, c3, [r6], #-72
619         ldc2l p6, c2, [r7, #4]
620         ldc2l p7, c1, [r8]
621         ldc2l p8, c0, [r9, #-224]
622         ldc2l p9, c1, [r10, #-120]!
623         ldc2l p10, c2, [r11], #16
624         ldc2l p11, c3, [r12], #-72
625
626         ldc p12, c4, [r0, #4]
627         ldc p13, c5, [r1]
628         ldc p14, c6, [r2, #-224]
629         ldc p15, c7, [r3, #-120]!
630         ldc p5, c8, [r4], #16
631         ldc p4, c9, [r5], #-72
632         ldcl p3, c10, [r6, #4]
633         ldcl p2, c11, [r7]
634         ldcl p1, c12, [r8, #-224]
635         ldcl p0, c13, [r9, #-120]!
636         ldcl p6, c14, [r10], #16
637         ldcl p7, c15, [r11], #-72
638
639         ldc2 p2, c8, [r1], { 25 }
640
641 @ CHECK: ldc2   p0, c8, [r1, #4]        @ encoding: [0x91,0xfd,0x01,0x80]
642 @ CHECK: ldc2   p1, c7, [r2]            @ encoding: [0x92,0xfd,0x00,0x71]
643 @ CHECK: ldc2   p2, c6, [r3, #-224]     @ encoding: [0x13,0xfd,0x38,0x62]
644 @ CHECK: ldc2   p3, c5, [r4, #-120]!    @ encoding: [0x34,0xfd,0x1e,0x53]
645 @ CHECK: ldc2   p4, c4, [r5], #16       @ encoding: [0xb5,0xfc,0x04,0x44]
646 @ CHECK: ldc2   p5, c3, [r6], #-72      @ encoding: [0x36,0xfc,0x12,0x35]
647 @ CHECK: ldc2l  p6, c2, [r7, #4]        @ encoding: [0xd7,0xfd,0x01,0x26]
648 @ CHECK: ldc2l  p7, c1, [r8]            @ encoding: [0xd8,0xfd,0x00,0x17]
649 @ CHECK: ldc2l  p8, c0, [r9, #-224]     @ encoding: [0x59,0xfd,0x38,0x08]
650 @ CHECK: ldc2l  p9, c1, [r10, #-120]!   @ encoding: [0x7a,0xfd,0x1e,0x19]
651 @ CHECK: ldc2l  p10, c2, [r11], #16     @ encoding: [0xfb,0xfc,0x04,0x2a]
652 @ CHECK: ldc2l  p11, c3, [r12], #-72    @ encoding: [0x7c,0xfc,0x12,0x3b]
653
654 @ CHECK: ldc    p12, c4, [r0, #4]       @ encoding: [0x90,0xed,0x01,0x4c]
655 @ CHECK: ldc    p13, c5, [r1]           @ encoding: [0x91,0xed,0x00,0x5d]
656 @ CHECK: ldc    p14, c6, [r2, #-224]    @ encoding: [0x12,0xed,0x38,0x6e]
657 @ CHECK: ldc    p15, c7, [r3, #-120]!   @ encoding: [0x33,0xed,0x1e,0x7f]
658 @ CHECK: ldc    p5, c8, [r4], #16       @ encoding: [0xb4,0xec,0x04,0x85]
659 @ CHECK: ldc    p4, c9, [r5], #-72      @ encoding: [0x35,0xec,0x12,0x94]
660 @ CHECK: ldcl   p3, c10, [r6, #4]       @ encoding: [0xd6,0xed,0x01,0xa3]
661 @ CHECK: ldcl   p2, c11, [r7]           @ encoding: [0xd7,0xed,0x00,0xb2]
662 @ CHECK: ldcl   p1, c12, [r8, #-224]    @ encoding: [0x58,0xed,0x38,0xc1]
663 @ CHECK: ldcl   p0, c13, [r9, #-120]!   @ encoding: [0x79,0xed,0x1e,0xd0]
664 @ CHECK: ldcl   p6, c14, [r10], #16     @ encoding: [0xfa,0xec,0x04,0xe6]
665 @ CHECK: ldcl   p7, c15, [r11], #-72    @ encoding: [0x7b,0xec,0x12,0xf7]
666
667 @ CHECK: ldc2   p2, c8, [r1], {25}      @ encoding: [0x91,0xfc,0x19,0x82]
668
669
670 @------------------------------------------------------------------------------
671 @ LDMIA
672 @------------------------------------------------------------------------------
673         ldmia.w r4, {r4, r5, r8, r9}
674         ldmia.w r4, {r5, r6}
675         ldmia.w r5!, {r3, r8}
676         ldm.w r4, {r4, r5, r8, r9}
677         ldm.w r4, {r5, r6}
678         ldm.w r5!, {r3, r8}
679         ldm.w r5!, {r1, r2}
680         ldm.w r2, {r1, r2}
681
682         ldmia r4, {r4, r5, r8, r9}
683         ldmia r4, {r5, r6}
684         ldmia r5!, {r3, r8}
685         ldm r4, {r4, r5, r8, r9}
686         ldm r4, {r5, r6}
687         ldm r5!, {r3, r8}
688         ldmfd r5!, {r3, r8}
689         ldmia sp!, {r4-r11, pc}
690
691 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
692 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
693 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
694 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
695 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
696 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
697 @ CHECK: ldm.w  r5!, {r1, r2}           @ encoding: [0xb5,0xe8,0x06,0x00]
698 @ CHECK: ldm.w  r2, {r1, r2}            @ encoding: [0x92,0xe8,0x06,0x00]
699
700 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
701 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
702 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
703 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
704 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
705 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
706 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
707 @ CHECK: pop.w  {pc, r4, r5, r6, r7, r8, r9, r10, r11} @ encoding: [0xbd,0xe8,0xf0,0x8f]
708
709
710 @------------------------------------------------------------------------------
711 @ LDMDB
712 @------------------------------------------------------------------------------
713         ldmdb r4, {r4, r5, r8, r9}
714         ldmdb r4, {r5, r6}
715         ldmdb r5!, {r3, r8}
716         ldmea r5!, {r3, r8}
717         ldmdb.w r4, {r5, r6}
718         ldmdb.w r5!, {r3, r8}
719
720 @ CHECK: ldmdb  r4, {r4, r5, r8, r9}    @ encoding: [0x14,0xe9,0x30,0x03]
721 @ CHECK: ldmdb  r4, {r5, r6}            @ encoding: [0x14,0xe9,0x60,0x00]
722 @ CHECK: ldmdb  r5!, {r3, r8}           @ encoding: [0x35,0xe9,0x08,0x01]
723 @ CHECK: ldmdb  r5!, {r3, r8}           @ encoding: [0x35,0xe9,0x08,0x01]
724 @ CHECK: ldmdb  r4, {r5, r6}            @ encoding: [0x14,0xe9,0x60,0x00]
725 @ CHECK: ldmdb  r5!, {r3, r8}           @ encoding: [0x35,0xe9,0x08,0x01]
726
727
728 @------------------------------------------------------------------------------
729 @ LDR(immediate)
730 @------------------------------------------------------------------------------
731         ldr r5, [r5, #-4]
732         ldr r5, [r6, #32]
733         ldr r5, [r6, #33]
734         ldr r5, [r6, #257]
735         ldr.w pc, [r7, #257]
736         ldr r2, [r4, #255]!
737         ldr r8, [sp, #4]!
738         ldr lr, [sp, #-4]!
739         ldr r2, [r4], #255
740         ldr r8, [sp], #4
741         ldr lr, [sp], #-4
742
743 @ CHECK: ldr    r5, [r5, #-4]           @ encoding: [0x55,0xf8,0x04,0x5c]
744 @ CHECK: ldr    r5, [r6, #32]           @ encoding: [0x35,0x6a]
745 @ CHECK: ldr.w  r5, [r6, #33]           @ encoding: [0xd6,0xf8,0x21,0x50]
746 @ CHECK: ldr.w  r5, [r6, #257]          @ encoding: [0xd6,0xf8,0x01,0x51]
747 @ CHECK: ldr.w  pc, [r7, #257]          @ encoding: [0xd7,0xf8,0x01,0xf1]
748 @ CHECK: ldr    r2, [r4, #255]!         @ encoding: [0x54,0xf8,0xff,0x2f]
749 @ CHECK: ldr    r8, [sp, #4]!           @ encoding: [0x5d,0xf8,0x04,0x8f]
750 @ CHECK: ldr    lr, [sp, #-4]!          @ encoding: [0x5d,0xf8,0x04,0xed]
751 @ CHECK: ldr    r2, [r4], #255          @ encoding: [0x54,0xf8,0xff,0x2b]
752 @ CHECK: ldr    r8, [sp], #4            @ encoding: [0x5d,0xf8,0x04,0x8b]
753 @ CHECK: ldr    lr, [sp], #-4           @ encoding: [0x5d,0xf8,0x04,0xe9]
754
755
756 @------------------------------------------------------------------------------
757 @ LDR(literal)
758 @------------------------------------------------------------------------------
759         ldr.w r5, _foo
760         ldr   lr, (_strcmp-4)
761
762 @ CHECK: ldr.w  r5, _foo                @ encoding: [0x5f'A',0xf8'A',A,0x50'A']
763 @ CHECK: @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
764 @ CHECK: ldr.w  lr, _strcmp-4           @ encoding: [0x5f'A',0xf8'A',A,0xe0'A']
765 @ CHECK: @   fixup A - offset: 0, value: _strcmp-4, kind: fixup_t2_ldst_pcrel_12
766
767
768 @------------------------------------------------------------------------------
769 @ LDR(register)
770 @------------------------------------------------------------------------------
771         ldr r1, [r8, r1]
772         ldr.w r4, [r5, r2]
773         ldr r6, [r0, r2, lsl #3]
774         ldr r8, [r8, r2, lsl #2]
775         ldr r7, [sp, r2, lsl #1]
776         ldr r7, [sp, r2, lsl #0]
777
778 @ CHECK: ldr.w  r1, [r8, r1]            @ encoding: [0x58,0xf8,0x01,0x10]
779 @ CHECK: ldr.w  r4, [r5, r2]            @ encoding: [0x55,0xf8,0x02,0x40]
780 @ CHECK: ldr.w  r6, [r0, r2, lsl #3]    @ encoding: [0x50,0xf8,0x32,0x60]
781 @ CHECK: ldr.w  r8, [r8, r2, lsl #2]    @ encoding: [0x58,0xf8,0x22,0x80]
782 @ CHECK: ldr.w  r7, [sp, r2, lsl #1]    @ encoding: [0x5d,0xf8,0x12,0x70]
783 @ CHECK: ldr.w  r7, [sp, r2]            @ encoding: [0x5d,0xf8,0x02,0x70]
784
785
786 @------------------------------------------------------------------------------
787 @ LDRB(immediate)
788 @------------------------------------------------------------------------------
789         ldrb r5, [r5, #-4]
790         ldrb r5, [r6, #32]
791         ldrb r5, [r6, #33]
792         ldrb r5, [r6, #257]
793         ldrb.w lr, [r7, #257]
794         ldrb r5, [r8, #255]!
795         ldrb r2, [r5, #4]!
796         ldrb r1, [r4, #-4]!
797         ldrb lr, [r3], #255
798         ldrb r9, [r2], #4
799         ldrb r3, [sp], #-4
800
801 @ CHECK: ldrb   r5, [r5, #-4]           @ encoding: [0x15,0xf8,0x04,0x5c]
802 @ CHECK: ldrb.w r5, [r6, #32]           @ encoding: [0x96,0xf8,0x20,0x50]
803 @ CHECK: ldrb.w r5, [r6, #33]           @ encoding: [0x96,0xf8,0x21,0x50]
804 @ CHECK: ldrb.w r5, [r6, #257]          @ encoding: [0x96,0xf8,0x01,0x51]
805 @ CHECK: ldrb.w lr, [r7, #257]          @ encoding: [0x97,0xf8,0x01,0xe1]
806 @ CHECK: ldrb   r5, [r8, #255]!         @ encoding: [0x18,0xf8,0xff,0x5f]
807 @ CHECK: ldrb   r2, [r5, #4]!           @ encoding: [0x15,0xf8,0x04,0x2f]
808 @ CHECK: ldrb   r1, [r4, #-4]!          @ encoding: [0x14,0xf8,0x04,0x1d]
809 @ CHECK: ldrb   lr, [r3], #255          @ encoding: [0x13,0xf8,0xff,0xeb]
810 @ CHECK: ldrb   r9, [r2], #4            @ encoding: [0x12,0xf8,0x04,0x9b]
811 @ CHECK: ldrb   r3, [sp], #-4           @ encoding: [0x1d,0xf8,0x04,0x39]
812
813
814 @------------------------------------------------------------------------------
815 @ LDRB(register)
816 @------------------------------------------------------------------------------
817         ldrb r1, [r8, r1]
818         ldrb.w r4, [r5, r2]
819         ldrb r6, [r0, r2, lsl #3]
820         ldrb r8, [r8, r2, lsl #2]
821         ldrb r7, [sp, r2, lsl #1]
822         ldrb r7, [sp, r2, lsl #0]
823
824 @ CHECK: ldrb.w r1, [r8, r1]            @ encoding: [0x18,0xf8,0x01,0x10]
825 @ CHECK: ldrb.w r4, [r5, r2]            @ encoding: [0x15,0xf8,0x02,0x40]
826 @ CHECK: ldrb.w r6, [r0, r2, lsl #3]    @ encoding: [0x10,0xf8,0x32,0x60]
827 @ CHECK: ldrb.w r8, [r8, r2, lsl #2]    @ encoding: [0x18,0xf8,0x22,0x80]
828 @ CHECK: ldrb.w r7, [sp, r2, lsl #1]    @ encoding: [0x1d,0xf8,0x12,0x70]
829 @ CHECK: ldrb.w r7, [sp, r2]            @ encoding: [0x1d,0xf8,0x02,0x70]
830
831
832 @------------------------------------------------------------------------------
833 @ LDRBT
834 @------------------------------------------------------------------------------
835         ldrbt r1, [r2]
836         ldrbt r1, [r8, #0]
837         ldrbt r1, [r8, #3]
838         ldrbt r1, [r8, #255]
839
840 @ CHECK: ldrbt  r1, [r2]                @ encoding: [0x12,0xf8,0x00,0x1e]
841 @ CHECK: ldrbt  r1, [r8]                @ encoding: [0x18,0xf8,0x00,0x1e]
842 @ CHECK: ldrbt  r1, [r8, #3]            @ encoding: [0x18,0xf8,0x03,0x1e]
843 @ CHECK: ldrbt  r1, [r8, #255]          @ encoding: [0x18,0xf8,0xff,0x1e]
844
845
846 @------------------------------------------------------------------------------
847 @ LDRD
848 @------------------------------------------------------------------------------
849         ldrd r3, r5, [r6, #24]
850         ldrd r3, r5, [r6, #24]!
851         ldrd r3, r5, [r6], #4
852         ldrd r3, r5, [r6], #-8
853         ldrd r3, r5, [r6]
854         ldrd r8, r1, [r3, #0]
855         ldrd r0, r1, [r2, #-0]
856         ldrd r0, r1, [r2, #-0]!
857         ldrd r0, r1, [r2], #-0
858
859 @ CHECK: ldrd   r3, r5, [r6, #24]       @ encoding: [0xd6,0xe9,0x06,0x35]
860 @ CHECK: ldrd   r3, r5, [r6, #24]!      @ encoding: [0xf6,0xe9,0x06,0x35]
861 @ CHECK: ldrd   r3, r5, [r6], #4        @ encoding: [0xf6,0xe8,0x01,0x35]
862 @ CHECK: ldrd   r3, r5, [r6], #-8       @ encoding: [0x76,0xe8,0x02,0x35]
863 @ CHECK: ldrd   r3, r5, [r6]            @ encoding: [0xd6,0xe9,0x00,0x35]
864 @ CHECK: ldrd   r8, r1, [r3]            @ encoding: [0xd3,0xe9,0x00,0x81]
865 @ CHECK: ldrd   r0, r1, [r2, #-0]       @ encoding: [0x52,0xe9,0x00,0x01]
866 @ CHECK: ldrd   r0, r1, [r2, #-0]!      @ encoding: [0x72,0xe9,0x00,0x01]
867 @ CHECK: ldrd   r0, r1, [r2], #-0       @ encoding: [0x72,0xe8,0x00,0x01]
868
869
870 @------------------------------------------------------------------------------
871 @ FIXME: LDRD(literal)
872 @------------------------------------------------------------------------------
873
874
875 @------------------------------------------------------------------------------
876 @ LDREX/LDREXB/LDREXH/LDREXD
877 @------------------------------------------------------------------------------
878         ldrex r1, [r4]
879         ldrex r8, [r4, #0]
880         ldrex r2, [sp, #128]
881         ldrexb r5, [r7]
882         ldrexh r9, [r12]
883         ldrexd r9, r3, [r4]
884
885 @ CHECK: ldrex  r1, [r4]                @ encoding: [0x54,0xe8,0x00,0x1f]
886 @ CHECK: ldrex  r8, [r4]                @ encoding: [0x54,0xe8,0x00,0x8f]
887 @ CHECK: ldrex  r2, [sp, #128]          @ encoding: [0x5d,0xe8,0x20,0x2f]
888 @ CHECK: ldrexb r5, [r7]                @ encoding: [0xd7,0xe8,0x4f,0x5f]
889 @ CHECK: ldrexh r9, [r12]               @ encoding: [0xdc,0xe8,0x5f,0x9f]
890 @ CHECK: ldrexd r9, r3, [r4]            @ encoding: [0xd4,0xe8,0x7f,0x93]
891
892
893 @------------------------------------------------------------------------------
894 @ LDRH(immediate)
895 @------------------------------------------------------------------------------
896         ldrh r5, [r5, #-4]
897         ldrh r5, [r6, #32]
898         ldrh r5, [r6, #33]
899         ldrh r5, [r6, #257]
900         ldrh.w lr, [r7, #257]
901         ldrh r5, [r8, #255]!
902         ldrh r2, [r5, #4]!
903         ldrh r1, [r4, #-4]!
904         ldrh lr, [r3], #255
905         ldrh r9, [r2], #4
906         ldrh r3, [sp], #-4
907
908 @ CHECK: ldrh   r5, [r5, #-4]           @ encoding: [0x35,0xf8,0x04,0x5c]
909 @ CHECK: ldrh   r5, [r6, #32]           @ encoding: [0x35,0x8c]
910 @ CHECK: ldrh.w r5, [r6, #33]           @ encoding: [0xb6,0xf8,0x21,0x50]
911 @ CHECK: ldrh.w r5, [r6, #257]          @ encoding: [0xb6,0xf8,0x01,0x51]
912 @ CHECK: ldrh.w lr, [r7, #257]          @ encoding: [0xb7,0xf8,0x01,0xe1]
913 @ CHECK: ldrh   r5, [r8, #255]!         @ encoding: [0x38,0xf8,0xff,0x5f]
914 @ CHECK: ldrh   r2, [r5, #4]!           @ encoding: [0x35,0xf8,0x04,0x2f]
915 @ CHECK: ldrh   r1, [r4, #-4]!          @ encoding: [0x34,0xf8,0x04,0x1d]
916 @ CHECK: ldrh   lr, [r3], #255          @ encoding: [0x33,0xf8,0xff,0xeb]
917 @ CHECK: ldrh   r9, [r2], #4            @ encoding: [0x32,0xf8,0x04,0x9b]
918 @ CHECK: ldrh   r3, [sp], #-4           @ encoding: [0x3d,0xf8,0x04,0x39]
919
920
921 @------------------------------------------------------------------------------
922 @ LDRH(register)
923 @------------------------------------------------------------------------------
924         ldrh r1, [r8, r1]
925         ldrh.w r4, [r5, r2]
926         ldrh r6, [r0, r2, lsl #3]
927         ldrh r8, [r8, r2, lsl #2]
928         ldrh r7, [sp, r2, lsl #1]
929         ldrh r7, [sp, r2, lsl #0]
930
931 @ CHECK: ldrh.w r1, [r8, r1]            @ encoding: [0x38,0xf8,0x01,0x10]
932 @ CHECK: ldrh.w r4, [r5, r2]            @ encoding: [0x35,0xf8,0x02,0x40]
933 @ CHECK: ldrh.w r6, [r0, r2, lsl #3]    @ encoding: [0x30,0xf8,0x32,0x60]
934 @ CHECK: ldrh.w r8, [r8, r2, lsl #2]    @ encoding: [0x38,0xf8,0x22,0x80]
935 @ CHECK: ldrh.w r7, [sp, r2, lsl #1]    @ encoding: [0x3d,0xf8,0x12,0x70]
936 @ CHECK: ldrh.w r7, [sp, r2]            @ encoding: [0x3d,0xf8,0x02,0x70]
937
938
939 @------------------------------------------------------------------------------
940 @ LDRH(literal)
941 @------------------------------------------------------------------------------
942         ldrh r5, _bar
943
944 @ CHECK: ldrh.w r5, _bar                @ encoding: [0x3f'A',0xf8'A',A,0x50'A']
945 @ CHECK:     @   fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12
946
947
948 @------------------------------------------------------------------------------
949 @ LDRHT
950 @------------------------------------------------------------------------------
951         ldrht r1, [r2]
952         ldrht r1, [r8, #0]
953         ldrht r1, [r8, #3]
954         ldrht r1, [r8, #255]
955
956 @ CHECK: ldrht  r1, [r2]                @ encoding: [0x32,0xf8,0x00,0x1e]
957 @ CHECK: ldrht  r1, [r8]                @ encoding: [0x38,0xf8,0x00,0x1e]
958 @ CHECK: ldrht  r1, [r8, #3]            @ encoding: [0x38,0xf8,0x03,0x1e]
959 @ CHECK: ldrht  r1, [r8, #255]          @ encoding: [0x38,0xf8,0xff,0x1e]
960
961
962 @------------------------------------------------------------------------------
963 @ LDRSB(immediate)
964 @------------------------------------------------------------------------------
965         ldrsb r5, [r5, #-4]
966         ldrsb r5, [r6, #32]
967         ldrsb r5, [r6, #33]
968         ldrsb r5, [r6, #257]
969         ldrsb.w lr, [r7, #257]
970
971 @ CHECK: ldrsb  r5, [r5, #-4]            @ encoding: [0x15,0xf9,0x04,0x5c]
972 @ CHECK: ldrsb.w r5, [r6, #32]           @ encoding: [0x96,0xf9,0x20,0x50]
973 @ CHECK: ldrsb.w r5, [r6, #33]           @ encoding: [0x96,0xf9,0x21,0x50]
974 @ CHECK: ldrsb.w r5, [r6, #257]          @ encoding: [0x96,0xf9,0x01,0x51]
975 @ CHECK: ldrsb.w lr, [r7, #257]          @ encoding: [0x97,0xf9,0x01,0xe1]
976
977
978 @------------------------------------------------------------------------------
979 @ LDRSB(register)
980 @------------------------------------------------------------------------------
981         ldrsb r1, [r8, r1]
982         ldrsb.w r4, [r5, r2]
983         ldrsb r6, [r0, r2, lsl #3]
984         ldrsb r8, [r8, r2, lsl #2]
985         ldrsb r7, [sp, r2, lsl #1]
986         ldrsb r7, [sp, r2, lsl #0]
987         ldrsb r5, [r8, #255]!
988         ldrsb r2, [r5, #4]!
989         ldrsb r1, [r4, #-4]!
990         ldrsb lr, [r3], #255
991         ldrsb r9, [r2], #4
992         ldrsb r3, [sp], #-4
993
994 @ CHECK: ldrsb.w r1, [r8, r1]           @ encoding: [0x18,0xf9,0x01,0x10]
995 @ CHECK: ldrsb.w r4, [r5, r2]           @ encoding: [0x15,0xf9,0x02,0x40]
996 @ CHECK: ldrsb.w r6, [r0, r2, lsl #3]   @ encoding: [0x10,0xf9,0x32,0x60]
997 @ CHECK: ldrsb.w r8, [r8, r2, lsl #2]   @ encoding: [0x18,0xf9,0x22,0x80]
998 @ CHECK: ldrsb.w r7, [sp, r2, lsl #1]   @ encoding: [0x1d,0xf9,0x12,0x70]
999 @ CHECK: ldrsb.w r7, [sp, r2]           @ encoding: [0x1d,0xf9,0x02,0x70]
1000 @ CHECK: ldrsb  r5, [r8, #255]!         @ encoding: [0x18,0xf9,0xff,0x5f]
1001 @ CHECK: ldrsb  r2, [r5, #4]!           @ encoding: [0x15,0xf9,0x04,0x2f]
1002 @ CHECK: ldrsb  r1, [r4, #-4]!          @ encoding: [0x14,0xf9,0x04,0x1d]
1003 @ CHECK: ldrsb  lr, [r3], #255          @ encoding: [0x13,0xf9,0xff,0xeb]
1004 @ CHECK: ldrsb  r9, [r2], #4            @ encoding: [0x12,0xf9,0x04,0x9b]
1005 @ CHECK: ldrsb  r3, [sp], #-4           @ encoding: [0x1d,0xf9,0x04,0x39]
1006
1007
1008 @------------------------------------------------------------------------------
1009 @ LDRSB(literal)
1010 @------------------------------------------------------------------------------
1011         ldrsb r5, _bar
1012
1013 @ CHECK: ldrsb.w r5, _bar               @ encoding: [0x1f'A',0xf9'A',A,0x50'A']
1014 @ CHECK:      @   fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12
1015
1016
1017 @------------------------------------------------------------------------------
1018 @ LDRSBT
1019 @------------------------------------------------------------------------------
1020         ldrsbt r1, [r2]
1021         ldrsbt r1, [r8, #0]
1022         ldrsbt r1, [r8, #3]
1023         ldrsbt r1, [r8, #255]
1024
1025 @ CHECK: ldrsbt r1, [r2]                @ encoding: [0x12,0xf9,0x00,0x1e]
1026 @ CHECK: ldrsbt r1, [r8]                @ encoding: [0x18,0xf9,0x00,0x1e]
1027 @ CHECK: ldrsbt r1, [r8, #3]            @ encoding: [0x18,0xf9,0x03,0x1e]
1028 @ CHECK: ldrsbt r1, [r8, #255]          @ encoding: [0x18,0xf9,0xff,0x1e]
1029
1030
1031 @------------------------------------------------------------------------------
1032 @ LDRSH(immediate)
1033 @------------------------------------------------------------------------------
1034         ldrsh r5, [r5, #-4]
1035         ldrsh r5, [r6, #32]
1036         ldrsh r5, [r6, #33]
1037         ldrsh r5, [r6, #257]
1038         ldrsh.w lr, [r7, #257]
1039
1040 @ CHECK: ldrsh  r5, [r5, #-4]           @ encoding: [0x35,0xf9,0x04,0x5c]
1041 @ CHECK: ldrsh.w r5, [r6, #32]          @ encoding: [0xb6,0xf9,0x20,0x50]
1042 @ CHECK: ldrsh.w r5, [r6, #33]          @ encoding: [0xb6,0xf9,0x21,0x50]
1043 @ CHECK: ldrsh.w r5, [r6, #257]         @ encoding: [0xb6,0xf9,0x01,0x51]
1044 @ CHECK: ldrsh.w lr, [r7, #257]         @ encoding: [0xb7,0xf9,0x01,0xe1]
1045
1046
1047 @------------------------------------------------------------------------------
1048 @ LDRSH(register)
1049 @------------------------------------------------------------------------------
1050         ldrsh r1, [r8, r1]
1051         ldrsh.w r4, [r5, r2]
1052         ldrsh r6, [r0, r2, lsl #3]
1053         ldrsh r8, [r8, r2, lsl #2]
1054         ldrsh r7, [sp, r2, lsl #1]
1055         ldrsh r7, [sp, r2, lsl #0]
1056         ldrsh r5, [r8, #255]!
1057         ldrsh r2, [r5, #4]!
1058         ldrsh r1, [r4, #-4]!
1059         ldrsh lr, [r3], #255
1060         ldrsh r9, [r2], #4
1061         ldrsh r3, [sp], #-4
1062
1063 @ CHECK: ldrsh.w r1, [r8, r1]           @ encoding: [0x38,0xf9,0x01,0x10]
1064 @ CHECK: ldrsh.w r4, [r5, r2]           @ encoding: [0x35,0xf9,0x02,0x40]
1065 @ CHECK: ldrsh.w r6, [r0, r2, lsl #3]   @ encoding: [0x30,0xf9,0x32,0x60]
1066 @ CHECK: ldrsh.w r8, [r8, r2, lsl #2]   @ encoding: [0x38,0xf9,0x22,0x80]
1067 @ CHECK: ldrsh.w r7, [sp, r2, lsl #1]   @ encoding: [0x3d,0xf9,0x12,0x70]
1068 @ CHECK: ldrsh.w r7, [sp, r2]           @ encoding: [0x3d,0xf9,0x02,0x70]
1069 @ CHECK: ldrsh  r5, [r8, #255]!         @ encoding: [0x38,0xf9,0xff,0x5f]
1070 @ CHECK: ldrsh  r2, [r5, #4]!           @ encoding: [0x35,0xf9,0x04,0x2f]
1071 @ CHECK: ldrsh  r1, [r4, #-4]!          @ encoding: [0x34,0xf9,0x04,0x1d]
1072 @ CHECK: ldrsh  lr, [r3], #255          @ encoding: [0x33,0xf9,0xff,0xeb]
1073 @ CHECK: ldrsh  r9, [r2], #4            @ encoding: [0x32,0xf9,0x04,0x9b]
1074 @ CHECK: ldrsh  r3, [sp], #-4           @ encoding: [0x3d,0xf9,0x04,0x39]
1075
1076
1077 @------------------------------------------------------------------------------
1078 @ LDRSH(literal)
1079 @------------------------------------------------------------------------------
1080         ldrsh r5, _bar
1081
1082 @ CHECK: ldrsh.w r5, _bar               @ encoding: [0x3f'A',0xf9'A',A,0x50'A']
1083 @ CHECK:      @   fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12
1084
1085 @ TEMPORARILY DISABLED:
1086 @        ldrsh.w r4, [pc, #1435]
1087 @      : ldrsh.w r4, [pc, #1435]               @ encoding: [0x3f,0xf9,0x9b,0x45]
1088
1089 @------------------------------------------------------------------------------
1090 @ LDRSHT
1091 @------------------------------------------------------------------------------
1092         ldrsht r1, [r2]
1093         ldrsht r1, [r8, #0]
1094         ldrsht r1, [r8, #3]
1095         ldrsht r1, [r8, #255]
1096
1097 @ CHECK: ldrsht r1, [r2]                @ encoding: [0x32,0xf9,0x00,0x1e]
1098 @ CHECK: ldrsht r1, [r8]                @ encoding: [0x38,0xf9,0x00,0x1e]
1099 @ CHECK: ldrsht r1, [r8, #3]            @ encoding: [0x38,0xf9,0x03,0x1e]
1100 @ CHECK: ldrsht r1, [r8, #255]          @ encoding: [0x38,0xf9,0xff,0x1e]
1101
1102
1103 @------------------------------------------------------------------------------
1104 @ LDRT
1105 @------------------------------------------------------------------------------
1106         ldrt r1, [r2]
1107         ldrt r2, [r6, #0]
1108         ldrt r3, [r7, #3]
1109         ldrt r4, [r9, #255]
1110
1111 @ CHECK: ldrt   r1, [r2]                @ encoding: [0x52,0xf8,0x00,0x1e]
1112 @ CHECK: ldrt   r2, [r6]                @ encoding: [0x56,0xf8,0x00,0x2e]
1113 @ CHECK: ldrt   r3, [r7, #3]            @ encoding: [0x57,0xf8,0x03,0x3e]
1114 @ CHECK: ldrt   r4, [r9, #255]          @ encoding: [0x59,0xf8,0xff,0x4e]
1115
1116
1117 @------------------------------------------------------------------------------
1118 @ LSL (immediate)
1119 @------------------------------------------------------------------------------
1120         lsl r2, r3, #12
1121         lsls r8, r3, #31
1122         lsls.w r2, r3, #1
1123         lsl r2, r3, #4
1124         lsls r2, r12, #15
1125
1126         lsl r3, #19
1127         lsls r8, #2
1128         lsls.w r7, #5
1129         lsl.w r12, #21
1130
1131 @ CHECK: lsl.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x03,0x32]
1132 @ CHECK: lsls.w r8, r3, #31             @ encoding: [0x5f,0xea,0xc3,0x78]
1133 @ CHECK: lsls.w r2, r3, #1              @ encoding: [0x5f,0xea,0x43,0x02]
1134 @ CHECK: lsl.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x03,0x12]
1135 @ CHECK: lsls.w r2, r12, #15            @ encoding: [0x5f,0xea,0xcc,0x32]
1136
1137 @ CHECK: lsl.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xc3,0x43]
1138 @ CHECK: lsls.w r8, r8, #2              @ encoding: [0x5f,0xea,0x88,0x08]
1139 @ CHECK: lsls.w r7, r7, #5              @ encoding: [0x5f,0xea,0x47,0x17]
1140 @ CHECK: lsl.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x4c,0x5c]
1141
1142
1143 @------------------------------------------------------------------------------
1144 @ LSL (register)
1145 @------------------------------------------------------------------------------
1146         lsl r3, r4, r2
1147         lsl.w r1, r2
1148         lsls r3, r4, r8
1149
1150 @ CHECK: lsl.w  r3, r4, r2              @ encoding: [0x04,0xfa,0x02,0xf3]
1151 @ CHECK: lsl.w  r1, r1, r2              @ encoding: [0x01,0xfa,0x02,0xf1]
1152 @ CHECK: lsls.w r3, r4, r8              @ encoding: [0x14,0xfa,0x08,0xf3]
1153
1154
1155 @------------------------------------------------------------------------------
1156 @ LSR (immediate)
1157 @------------------------------------------------------------------------------
1158         lsr r2, r3, #12
1159         lsrs r8, r3, #32
1160         lsrs.w r2, r3, #1
1161         lsr r2, r3, #4
1162         lsrs r2, r12, #15
1163
1164         lsr r3, #19
1165         lsrs r8, #2
1166         lsrs.w r7, #5
1167         lsr.w r12, #21
1168
1169 @ CHECK: lsr.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x13,0x32]
1170 @ CHECK: lsrs.w r8, r3, #32             @ encoding: [0x5f,0xea,0x13,0x08]
1171 @ CHECK: lsrs.w r2, r3, #1              @ encoding: [0x5f,0xea,0x53,0x02]
1172 @ CHECK: lsr.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x13,0x12]
1173 @ CHECK: lsrs.w r2, r12, #15            @ encoding: [0x5f,0xea,0xdc,0x32]
1174
1175 @ CHECK: lsr.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xd3,0x43]
1176 @ CHECK: lsrs.w r8, r8, #2              @ encoding: [0x5f,0xea,0x98,0x08]
1177 @ CHECK: lsrs.w r7, r7, #5              @ encoding: [0x5f,0xea,0x57,0x17]
1178 @ CHECK: lsr.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x5c,0x5c]
1179
1180
1181 @------------------------------------------------------------------------------
1182 @ LSR (register)
1183 @------------------------------------------------------------------------------
1184         lsr r3, r4, r2
1185         lsr.w r1, r2
1186         lsrs r3, r4, r8
1187
1188 @ CHECK: lsr.w  r3, r4, r2              @ encoding: [0x24,0xfa,0x02,0xf3]
1189 @ CHECK: lsr.w  r1, r1, r2              @ encoding: [0x21,0xfa,0x02,0xf1]
1190 @ CHECK: lsrs.w r3, r4, r8              @ encoding: [0x34,0xfa,0x08,0xf3]
1191
1192 @------------------------------------------------------------------------------
1193 @ MCR/MCR2
1194 @------------------------------------------------------------------------------
1195         mcr  p7, #1, r5, c1, c1, #4
1196         mcr2  p7, #1, r5, c1, c1, #4
1197         mcr p14, #0, r4, c0, c5
1198         mcr2 p4, #2, r2, c1, c3
1199
1200 @ CHECK: mcr    p7, #1, r5, c1, c1, #4  @ encoding: [0x21,0xee,0x91,0x57]
1201 @ CHECK: mcr2   p7, #1, r5, c1, c1, #4  @ encoding: [0x21,0xfe,0x91,0x57]
1202 @ CHECK: mcr    p14, #0, r4, c0, c5, #0 @ encoding: [0x00,0xee,0x15,0x4e]
1203 @ CHECK: mcr2   p4, #2, r2, c1, c3, #0  @ encoding: [0x41,0xfe,0x13,0x24]
1204
1205
1206 @------------------------------------------------------------------------------
1207 @ MCRR/MCRR2
1208 @------------------------------------------------------------------------------
1209         mcrr  p7, #15, r5, r4, c1
1210         mcrr2  p7, #15, r5, r4, c1
1211
1212 @ CHECK: mcrr   p7, #15, r5, r4, c1     @ encoding: [0x44,0xec,0xf1,0x57]
1213 @ CHECK: mcrr2  p7, #15, r5, r4, c1     @ encoding: [0x44,0xfc,0xf1,0x57]
1214
1215
1216 @------------------------------------------------------------------------------
1217 @ MLA/MLS
1218 @------------------------------------------------------------------------------
1219         mla  r1,r2,r3,r4
1220         mls  r1,r2,r3,r4
1221
1222 @ CHECK: mla    r1, r2, r3, r4          @ encoding: [0x02,0xfb,0x03,0x41]
1223 @ CHECK: mls    r1, r2, r3, r4          @ encoding: [0x02,0xfb,0x13,0x41]
1224
1225
1226 @------------------------------------------------------------------------------
1227 @ MOV(immediate)
1228 @------------------------------------------------------------------------------
1229         movs r1, #21
1230         movs.w r1, #21
1231         movs r8, #21
1232         movw r0, #65535
1233         movw r1, #43777
1234         movw r1, #43792
1235         mov.w r0, #0x3fc0000
1236         mov r0, #0x3fc0000
1237         movs.w r0, #0x3fc0000
1238         itte eq
1239         movseq r1, #12
1240         moveq r1, #12
1241         movne.w r1, #12
1242         mov.w r6, #450
1243         it lo
1244         movlo r1, #-1
1245
1246         @ alias for mvn
1247         mov r3, #-3
1248
1249
1250 @ CHECK: movs   r1, #21                 @ encoding: [0x15,0x21]
1251 @ CHECK: movs.w r1, #21                 @ encoding: [0x5f,0xf0,0x15,0x01]
1252 @ CHECK: movs.w r8, #21                 @ encoding: [0x5f,0xf0,0x15,0x08]
1253 @ CHECK: movw   r0, #65535              @ encoding: [0x4f,0xf6,0xff,0x70]
1254 @ CHECK: movw   r1, #43777              @ encoding: [0x4a,0xf6,0x01,0x31]
1255 @ CHECK: movw   r1, #43792              @ encoding: [0x4a,0xf6,0x10,0x31]
1256 @ CHECK: mov.w  r0, #66846720           @ encoding: [0x4f,0xf0,0x7f,0x70]
1257 @ CHECK: mov.w  r0, #66846720           @ encoding: [0x4f,0xf0,0x7f,0x70]
1258 @ CHECK: movs.w r0, #66846720           @ encoding: [0x5f,0xf0,0x7f,0x70]
1259 @ CHECK: itte   eq                      @ encoding: [0x06,0xbf]
1260 @ CHECK: movseq.w       r1, #12         @ encoding: [0x5f,0xf0,0x0c,0x01]
1261 @ CHECK: moveq  r1, #12                 @ encoding: [0x0c,0x21]
1262 @ CHECK: movne.w r1, #12                @ encoding: [0x4f,0xf0,0x0c,0x01]
1263 @ CHECK: mov.w  r6, #450                @ encoding: [0x4f,0xf4,0xe1,0x76]
1264 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
1265 @ CHECK: movlo.w        r1, #-1         @ encoding: [0x4f,0xf0,0xff,0x31]
1266 @ CHECK: mvn    r3, #2                  @ encoding: [0x6f,0xf0,0x02,0x03]
1267
1268 @------------------------------------------------------------------------------
1269 @ MOV(shifted register)
1270 @------------------------------------------------------------------------------
1271         mov r6, r2, lsl #16
1272         mov r6, r2, lsr #16
1273         movs r6, r2, asr #32
1274         movs r6, r2, ror #5
1275         movs r4, r4, lsl r5
1276         movs r4, r4, lsr r5
1277         movs r4, r4, asr r5
1278         movs r4, r4, ror r5
1279         mov r4, r4, lsl r5
1280         movs r4, r4, ror r8
1281         movs r4, r5, lsr r6
1282         itttt eq
1283         moveq r4, r4, lsl r5
1284         moveq r4, r4, lsr r5
1285         moveq r4, r4, asr r5
1286         moveq r4, r4, ror r5
1287         mov r4, r4, rrx
1288
1289 @ CHECK: lsl.w  r6, r2, #16             @ encoding: [0x4f,0xea,0x02,0x46]
1290 @ CHECK: lsr.w  r6, r2, #16             @ encoding: [0x4f,0xea,0x12,0x46]
1291 @ CHECK: asrs   r6, r2, #32             @ encoding: [0x16,0x10]
1292 @ CHECK: rors.w r6, r2, #5              @ encoding: [0x5f,0xea,0x72,0x16]
1293 @ CHECK: lsls   r4, r5                  @ encoding: [0xac,0x40]
1294 @ CHECK: lsrs   r4, r5                  @ encoding: [0xec,0x40]
1295 @ CHECK: asrs   r4, r5                  @ encoding: [0x2c,0x41]
1296 @ CHECK: rors   r4, r5                  @ encoding: [0xec,0x41]
1297 @ CHECK: lsl.w  r4, r4, r5              @ encoding: [0x04,0xfa,0x05,0xf4]
1298 @ CHECK: rors.w r4, r4, r8              @ encoding: [0x74,0xfa,0x08,0xf4]
1299 @ CHECK: lsrs.w r4, r5, r6              @ encoding: [0x35,0xfa,0x06,0xf4]
1300 @ CHECK: itttt  eq                      @ encoding: [0x01,0xbf]
1301 @ CHECK: lsleq  r4, r5                  @ encoding: [0xac,0x40]
1302 @ CHECK: lsreq  r4, r5                  @ encoding: [0xec,0x40]
1303 @ CHECK: asreq  r4, r5                  @ encoding: [0x2c,0x41]
1304 @ CHECK: roreq  r4, r5                  @ encoding: [0xec,0x41]
1305 @ CHECK: rrx    r4, r4                  @ encoding: [0x4f,0xea,0x34,0x04]
1306
1307
1308 @------------------------------------------------------------------------------
1309 @ MOVT
1310 @------------------------------------------------------------------------------
1311         movt r3, #7
1312         movt r6, #0xffff
1313         it eq
1314         movteq r4, #0xff0
1315
1316 @ CHECK: movt   r3, #7                  @ encoding: [0xc0,0xf2,0x07,0x03]
1317 @ CHECK: movt   r6, #65535              @ encoding: [0xcf,0xf6,0xff,0x76]
1318 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1319 @ CHECK: movteq r4, #4080               @ encoding: [0xc0,0xf6,0xf0,0x74]
1320
1321 @------------------------------------------------------------------------------
1322 @ MRC/MRC2
1323 @------------------------------------------------------------------------------
1324         mrc  p14, #0, r1, c1, c2, #4
1325         mrc2  p14, #0, r1, c1, c2, #4
1326         mrc p11, #1, r1, c2, c2
1327         mrc2 p12, #3, r3, c3, c4
1328
1329 @ CHECK: mrc    p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xee,0x92,0x1e]
1330 @ CHECK: mrc2   p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xfe,0x92,0x1e]
1331 @ CHECK: mrc    p11, #1, r1, c2, c2, #0 @ encoding: [0x32,0xee,0x12,0x1b]
1332 @ CHECK: mrc2   p12, #3, r3, c3, c4, #0 @ encoding: [0x73,0xfe,0x14,0x3c]
1333
1334
1335 @------------------------------------------------------------------------------
1336 @ MRRC/MRRC2
1337 @------------------------------------------------------------------------------
1338         mrrc  p7, #1, r5, r4, c1
1339         mrrc2  p7, #1, r5, r4, c1
1340
1341 @ CHECK: mrrc   p7, #1, r5, r4, c1      @ encoding: [0x54,0xec,0x11,0x57]
1342 @ CHECK: mrrc2  p7, #1, r5, r4, c1      @ encoding: [0x54,0xfc,0x11,0x57]
1343
1344
1345 @------------------------------------------------------------------------------
1346 @ MRS
1347 @------------------------------------------------------------------------------
1348         mrs  r8, apsr
1349         mrs  r8, cpsr
1350         mrs  r8, spsr
1351
1352 @ CHECK: mrs    r8, apsr                @ encoding: [0xef,0xf3,0x00,0x88]
1353 @ CHECK: mrs    r8, apsr                @ encoding: [0xef,0xf3,0x00,0x88]
1354 @ CHECK: mrs    r8, spsr                @ encoding: [0xff,0xf3,0x00,0x88]
1355
1356
1357 @------------------------------------------------------------------------------
1358 @ MSR
1359 @------------------------------------------------------------------------------
1360         msr  apsr, r1
1361         msr  apsr_g, r2
1362         msr  apsr_nzcvq, r3
1363         msr  APSR_nzcvq, r4
1364         msr  apsr_nzcvqg, r5
1365         msr  cpsr_fc, r6
1366         msr  cpsr_c, r7
1367         msr  cpsr_x, r8
1368         msr  cpsr_fc, r9
1369         msr  cpsr_all, r11
1370         msr  cpsr_fsx, r12
1371         msr  spsr_fc, r0
1372         msr  SPSR_fsxc, r5
1373         msr  cpsr_fsxc, r8
1374         msr  cpsr, r3
1375
1376 @ CHECK: msr    APSR_nzcvq, r1          @ encoding: [0x81,0xf3,0x00,0x88]
1377 @ CHECK: msr    APSR_g, r2              @ encoding: [0x82,0xf3,0x00,0x84]
1378 @ CHECK: msr    APSR_nzcvq, r3          @ encoding: [0x83,0xf3,0x00,0x88]
1379 @ CHECK: msr    APSR_nzcvq, r4          @ encoding: [0x84,0xf3,0x00,0x88]
1380 @ CHECK: msr    APSR_nzcvqg, r5         @ encoding: [0x85,0xf3,0x00,0x8c]
1381 @ CHECK: msr    CPSR_fc, r6             @ encoding: [0x86,0xf3,0x00,0x89]
1382 @ CHECK: msr    CPSR_c, r7              @ encoding: [0x87,0xf3,0x00,0x81]
1383 @ CHECK: msr    CPSR_x, r8              @ encoding: [0x88,0xf3,0x00,0x82]
1384 @ CHECK: msr    CPSR_fc, r9             @ encoding: [0x89,0xf3,0x00,0x89]
1385 @ CHECK: msr    CPSR_fc, r11            @ encoding: [0x8b,0xf3,0x00,0x89]
1386 @ CHECK: msr    CPSR_fsx, r12           @ encoding: [0x8c,0xf3,0x00,0x8e]
1387 @ CHECK: msr    SPSR_fc, r0             @ encoding: [0x90,0xf3,0x00,0x89]
1388 @ CHECK: msr    SPSR_fsxc, r5           @ encoding: [0x95,0xf3,0x00,0x8f]
1389 @ CHECK: msr    CPSR_fsxc, r8           @ encoding: [0x88,0xf3,0x00,0x8f]
1390 @ CHECK: msr    CPSR_fc, r3             @ encoding: [0x83,0xf3,0x00,0x89]
1391
1392
1393 @------------------------------------------------------------------------------
1394 @ MUL
1395 @------------------------------------------------------------------------------
1396         muls r3, r4, r3
1397         mul r3, r4, r3
1398         mul r3, r4, r6
1399         it eq
1400         muleq r3, r4, r5
1401         it le
1402         mulle r4, r4, r8
1403         mul r5, r6
1404
1405 @ CHECK: muls   r3, r4, r3              @ encoding: [0x63,0x43]
1406 @ CHECK: mul    r3, r4, r3              @ encoding: [0x04,0xfb,0x03,0xf3]
1407 @ CHECK: mul    r3, r4, r6              @ encoding: [0x04,0xfb,0x06,0xf3]
1408 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1409 @ CHECK: muleq  r3, r4, r5              @ encoding: [0x04,0xfb,0x05,0xf3]
1410 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
1411 @ CHECK: mulle  r4, r4, r8              @ encoding: [0x04,0xfb,0x08,0xf4]
1412 @ CHECK: mul    r5, r6, r5              @ encoding: [0x06,0xfb,0x05,0xf5]
1413
1414
1415 @------------------------------------------------------------------------------
1416 @ MVN(immediate)
1417 @------------------------------------------------------------------------------
1418         mvns r8, #21
1419         mvn r0, #0x3fc0000
1420         mvns r0, #0x3fc0000
1421         itte eq
1422         mvnseq r1, #12
1423         mvneq.w r1, #12
1424         mvnne r1, #12
1425
1426 @ CHECK: mvns   r8, #21                 @ encoding: [0x7f,0xf0,0x15,0x08]
1427 @ CHECK: mvn    r0, #66846720           @ encoding: [0x6f,0xf0,0x7f,0x70]
1428 @ CHECK: mvns   r0, #66846720           @ encoding: [0x7f,0xf0,0x7f,0x70]
1429 @ CHECK: itte   eq                      @ encoding: [0x06,0xbf]
1430 @ CHECK: mvnseq r1, #12                 @ encoding: [0x7f,0xf0,0x0c,0x01]
1431 @ CHECK: mvneq  r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
1432 @ CHECK: mvnne  r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
1433
1434
1435 @------------------------------------------------------------------------------
1436 @ MVN(register)
1437 @------------------------------------------------------------------------------
1438         mvn r2, r3
1439         mvns r2, r3
1440         mvn r5, r6, lsl #19
1441         mvn r5, r6, lsr #9
1442         mvn.w r5, r6, asr #4
1443         mvn r5, r6, ror #6
1444         mvn r5, r6, rrx
1445         it eq
1446         mvneq r2, r3
1447
1448 @ CHECK: mvn.w  r2, r3                  @ encoding: [0x6f,0xea,0x03,0x02]
1449 @ CHECK: mvns   r2, r3                  @ encoding: [0xda,0x43]
1450 @ CHECK: mvn.w  r5, r6, lsl #19         @ encoding: [0x6f,0xea,0xc6,0x45]
1451 @ CHECK: mvn.w  r5, r6, lsr #9          @ encoding: [0x6f,0xea,0x56,0x25]
1452 @ CHECK: mvn.w  r5, r6, asr #4          @ encoding: [0x6f,0xea,0x26,0x15]
1453 @ CHECK: mvn.w  r5, r6, ror #6          @ encoding: [0x6f,0xea,0xb6,0x15]
1454 @ CHECK: mvn.w  r5, r6, rrx             @ encoding: [0x6f,0xea,0x36,0x05]
1455 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1456 @ CHECK: mvneq  r2, r3                  @ encoding: [0xda,0x43]
1457
1458 @------------------------------------------------------------------------------
1459 @ NEG
1460 @------------------------------------------------------------------------------
1461         neg r5, r2
1462         neg r5, r8
1463
1464 @ CHECK: rsb.w  r5, r2, #0              @ encoding: [0xc2,0xf1,0x00,0x05]
1465 @ CHECK: rsb.w  r5, r8, #0              @ encoding: [0xc8,0xf1,0x00,0x05]
1466
1467
1468 @------------------------------------------------------------------------------
1469 @ NOP
1470 @------------------------------------------------------------------------------
1471         nop.w
1472
1473 @ CHECK: nop.w                          @ encoding: [0xaf,0xf3,0x00,0x80]
1474
1475
1476 @------------------------------------------------------------------------------
1477 @ ORN
1478 @------------------------------------------------------------------------------
1479         orn r4, r5, #0xf000
1480         orn r4, r5, r6
1481         orns r4, r5, r6
1482         orn r4, r5, r6, lsl #5
1483         orns r4, r5, r6, lsr #5
1484         orn r4, r5, r6, lsr #5
1485         orns r4, r5, r6, asr #5
1486         orn r4, r5, r6, ror #5
1487
1488 @ CHECK: orn    r4, r5, #61440          @ encoding: [0x65,0xf4,0x70,0x44]
1489 @ CHECK: orn    r4, r5, r6              @ encoding: [0x65,0xea,0x06,0x04]
1490 @ CHECK: orns   r4, r5, r6              @ encoding: [0x75,0xea,0x06,0x04]
1491 @ CHECK: orn    r4, r5, r6, lsl #5      @ encoding: [0x65,0xea,0x46,0x14]
1492 @ CHECK: orns   r4, r5, r6, lsr #5      @ encoding: [0x75,0xea,0x56,0x14]
1493 @ CHECK: orn    r4, r5, r6, lsr #5      @ encoding: [0x65,0xea,0x56,0x14]
1494 @ CHECK: orns   r4, r5, r6, asr #5      @ encoding: [0x75,0xea,0x66,0x14]
1495 @ CHECK: orn    r4, r5, r6, ror #5      @ encoding: [0x65,0xea,0x76,0x14]
1496
1497
1498 @------------------------------------------------------------------------------
1499 @ ORR
1500 @------------------------------------------------------------------------------
1501         orr r4, r5, #0xf000
1502         orr r4, r5, r6
1503         orr r4, r5, r6, lsl #5
1504         orrs r4, r5, r6, lsr #5
1505         orr r4, r5, r6, lsr #5
1506         orrs r4, r5, r6, asr #5
1507         orr r4, r5, r6, ror #5
1508
1509 @ CHECK: orr    r4, r5, #61440          @ encoding: [0x45,0xf4,0x70,0x44]
1510 @ CHECK: orr.w  r4, r5, r6              @ encoding: [0x45,0xea,0x06,0x04]
1511 @ CHECK: orr.w  r4, r5, r6, lsl #5      @ encoding: [0x45,0xea,0x46,0x14]
1512 @ CHECK: orrs.w r4, r5, r6, lsr #5      @ encoding: [0x55,0xea,0x56,0x14]
1513 @ CHECK: orr.w  r4, r5, r6, lsr #5      @ encoding: [0x45,0xea,0x56,0x14]
1514 @ CHECK: orrs.w r4, r5, r6, asr #5      @ encoding: [0x55,0xea,0x66,0x14]
1515 @ CHECK: orr.w  r4, r5, r6, ror #5      @ encoding: [0x45,0xea,0x76,0x14]
1516
1517
1518 @------------------------------------------------------------------------------
1519 @ PKH
1520 @------------------------------------------------------------------------------
1521         pkhbt r2, r2, r3
1522         pkhbt r2, r2, r3, lsl #31
1523         pkhbt r2, r2, r3, lsl #0
1524         pkhbt r2, r2, r3, lsl #15
1525
1526         pkhtb r2, r2, r3
1527         pkhtb r2, r2, r3, asr #31
1528         pkhtb r2, r2, r3, asr #15
1529
1530 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1531 @ CHECK: pkhbt  r2, r2, r3, lsl #31     @ encoding: [0xc2,0xea,0xc3,0x72]
1532 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1533 @ CHECK: pkhbt  r2, r2, r3, lsl #15     @ encoding: [0xc2,0xea,0xc3,0x32]
1534
1535 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1536 @ CHECK: pkhtb  r2, r2, r3, asr #31     @ encoding: [0xc2,0xea,0xe3,0x72]
1537 @ CHECK: pkhtb  r2, r2, r3, asr #15     @ encoding: [0xc2,0xea,0xe3,0x32]
1538
1539
1540 @------------------------------------------------------------------------------
1541 @ PLD(immediate)
1542 @------------------------------------------------------------------------------
1543         pld [r5, #-4]
1544         pld [r6, #32]
1545         pld [r6, #33]
1546         pld [r6, #257]
1547         pld [r7, #257]
1548         pld [r1, #0]
1549         pld [r1, #-0]
1550
1551 @ CHECK: pld    [r5, #-4]               @ encoding: [0x15,0xf8,0x04,0xfc]
1552 @ CHECK: pld    [r6, #32]               @ encoding: [0x96,0xf8,0x20,0xf0]
1553 @ CHECK: pld    [r6, #33]               @ encoding: [0x96,0xf8,0x21,0xf0]
1554 @ CHECK: pld    [r6, #257]              @ encoding: [0x96,0xf8,0x01,0xf1]
1555 @ CHECK: pld    [r7, #257]              @ encoding: [0x97,0xf8,0x01,0xf1]
1556 @ CHECK: pld    [r1]                    @ encoding: [0x91,0xf8,0x00,0xf0]
1557 @ CHECK: pld    [r1, #-0]               @ encoding: [0x11,0xf8,0x00,0xfc]
1558
1559
1560 @------------------------------------------------------------------------------
1561 @ PLD(literal)
1562 @------------------------------------------------------------------------------
1563 @        pld  _foo
1564
1565 @ FIXME: pld    _foo                    @ encoding: [0x9f'A',0xf8'A',A,0xf0'A']
1566             @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1567
1568
1569 @------------------------------------------------------------------------------
1570 @ PLD(register)
1571 @------------------------------------------------------------------------------
1572         pld [r8, r1]
1573         pld [r5, r2]
1574         pld [r0, r2, lsl #3]
1575         pld [r8, r2, lsl #2]
1576         pld [sp, r2, lsl #1]
1577         pld [sp, r2, lsl #0]
1578
1579 @ CHECK: pld    [r8, r1]                @ encoding: [0x18,0xf8,0x01,0xf0]
1580 @ CHECK: pld    [r5, r2]                @ encoding: [0x15,0xf8,0x02,0xf0]
1581 @ CHECK: pld    [r0, r2, lsl #3]        @ encoding: [0x10,0xf8,0x32,0xf0]
1582 @ CHECK: pld    [r8, r2, lsl #2]        @ encoding: [0x18,0xf8,0x22,0xf0]
1583 @ CHECK: pld    [sp, r2, lsl #1]        @ encoding: [0x1d,0xf8,0x12,0xf0]
1584 @ CHECK: pld    [sp, r2]                @ encoding: [0x1d,0xf8,0x02,0xf0]
1585
1586 @------------------------------------------------------------------------------
1587 @ PLI(immediate)
1588 @------------------------------------------------------------------------------
1589         pli [r5, #-4]
1590         pli [r6, #32]
1591         pli [r6, #33]
1592         pli [r6, #257]
1593         pli [r7, #257]
1594
1595 @ CHECK: pli    [r5, #-4]               @ encoding: [0x15,0xf9,0x04,0xfc]
1596 @ CHECK: pli    [r6, #32]               @ encoding: [0x96,0xf9,0x20,0xf0]
1597 @ CHECK: pli    [r6, #33]               @ encoding: [0x96,0xf9,0x21,0xf0]
1598 @ CHECK: pli    [r6, #257]              @ encoding: [0x96,0xf9,0x01,0xf1]
1599 @ CHECK: pli    [r7, #257]              @ encoding: [0x97,0xf9,0x01,0xf1]
1600
1601
1602 @------------------------------------------------------------------------------
1603 @ PLI(literal)
1604 @------------------------------------------------------------------------------
1605 @        pli  _foo
1606
1607
1608 @ FIXME: pli    _foo                    @ encoding: [0x9f'A',0xf9'A',A,0xf0'A']
1609            @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1610
1611
1612 @------------------------------------------------------------------------------
1613 @ PLI(register)
1614 @------------------------------------------------------------------------------
1615         pli [r8, r1]
1616         pli [r5, r2]
1617         pli [r0, r2, lsl #3]
1618         pli [r8, r2, lsl #2]
1619         pli [sp, r2, lsl #1]
1620         pli [sp, r2, lsl #0]
1621
1622 @ CHECK: pli    [r8, r1]                @ encoding: [0x18,0xf9,0x01,0xf0]
1623 @ CHECK: pli    [r5, r2]                @ encoding: [0x15,0xf9,0x02,0xf0]
1624 @ CHECK: pli    [r0, r2, lsl #3]        @ encoding: [0x10,0xf9,0x32,0xf0]
1625 @ CHECK: pli    [r8, r2, lsl #2]        @ encoding: [0x18,0xf9,0x22,0xf0]
1626 @ CHECK: pli    [sp, r2, lsl #1]        @ encoding: [0x1d,0xf9,0x12,0xf0]
1627 @ CHECK: pli    [sp, r2]                @ encoding: [0x1d,0xf9,0x02,0xf0]
1628
1629 @------------------------------------------------------------------------------
1630 @ POP (alias)
1631 @------------------------------------------------------------------------------
1632         pop {r2, r9}
1633
1634 @ CHECK: pop.w  {r2, r9}                @ encoding: [0xbd,0xe8,0x04,0x02]
1635
1636
1637 @------------------------------------------------------------------------------
1638 @ PUSH (alias)
1639 @------------------------------------------------------------------------------
1640         push {r2, r9}
1641
1642 @ CHECK: push.w {r2, r9}                @ encoding: [0x2d,0xe9,0x04,0x02]
1643
1644
1645 @------------------------------------------------------------------------------
1646 @ QADD/QADD16/QADD8
1647 @------------------------------------------------------------------------------
1648         qadd r1, r2, r3
1649         qadd16 r1, r2, r3
1650         qadd8 r1, r2, r3
1651         itte gt
1652         qaddgt r1, r2, r3
1653         qadd16gt r1, r2, r3
1654         qadd8le r1, r2, r3
1655
1656 @ CHECK: qadd   r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1657 @ CHECK: qadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x13,0xf1]
1658 @ CHECK: qadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x13,0xf1]
1659 @ CHECK: itte   gt                      @ encoding: [0xc6,0xbf]
1660 @ CHECK: qaddgt r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1661 @ CHECK: qadd16gt r1, r2, r3            @ encoding: [0x92,0xfa,0x13,0xf1]
1662 @ CHECK: qadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x13,0xf1]
1663
1664
1665 @------------------------------------------------------------------------------
1666 @ QDADD/QDSUB
1667 @------------------------------------------------------------------------------
1668         qdadd r6, r7, r8
1669         qdsub r6, r7, r8
1670         itt hi
1671         qdaddhi r6, r7, r8
1672         qdsubhi r6, r7, r8
1673
1674 @ CHECK: qdadd  r6, r7, r8              @ encoding: [0x88,0xfa,0x97,0xf6]
1675 @ CHECK: qdsub  r6, r7, r8              @ encoding: [0x88,0xfa,0xb7,0xf6]
1676 @ CHECK: itt    hi                      @ encoding: [0x84,0xbf]
1677 @ CHECK: qdaddhi r6, r7, r8             @ encoding: [0x88,0xfa,0x97,0xf6]
1678 @ CHECK: qdsubhi r6, r7, r8             @ encoding: [0x88,0xfa,0xb7,0xf6]
1679
1680
1681 @------------------------------------------------------------------------------
1682 @ QSAX
1683 @------------------------------------------------------------------------------
1684         qsax r9, r12, r0
1685         it eq
1686         qsaxeq r9, r12, r0
1687
1688 @ CHECK: qsax   r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1689 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1690 @ CHECK: qsaxeq r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1691
1692
1693 @------------------------------------------------------------------------------
1694 @ QSUB/QSUB16/QSUB8
1695 @------------------------------------------------------------------------------
1696         qsub r1, r2, r3
1697         qsub16 r1, r2, r3
1698         qsub8 r1, r2, r3
1699         itet le
1700         qsuble r1, r2, r3
1701         qsub16gt r1, r2, r3
1702         qsub8le r1, r2, r3
1703
1704 @ CHECK: qsub   r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1705 @ CHECK: qsub16 r1, r2, r3              @ encoding: [0xd2,0xfa,0x13,0xf1]
1706 @ CHECK: qsub8  r1, r2, r3              @ encoding: [0xc2,0xfa,0x13,0xf1]
1707 @ CHECK: itet   le                      @ encoding: [0xd6,0xbf]
1708 @ CHECK: qsuble r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1709 @ CHECK: qsub16gt       r1, r2, r3      @ encoding: [0xd2,0xfa,0x13,0xf1]
1710 @ CHECK: qsub8le r1, r2, r3             @ encoding: [0xc2,0xfa,0x13,0xf1]
1711
1712
1713 @------------------------------------------------------------------------------
1714 @ RBIT
1715 @------------------------------------------------------------------------------
1716         rbit r1, r2
1717         it ne
1718         rbitne r1, r2
1719
1720 @ CHECK: rbit   r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1721 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1722 @ CHECK: rbitne r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1723
1724
1725 @------------------------------------------------------------------------------
1726 @ REV
1727 @------------------------------------------------------------------------------
1728         rev.w r1, r2
1729         rev r2, r8
1730         itt ne
1731         revne r1, r2
1732         revne r1, r8
1733
1734 @ CHECK: rev.w  r1, r2                  @ encoding: [0x92,0xfa,0x82,0xf1]
1735 @ CHECK: rev.w  r2, r8                  @ encoding: [0x98,0xfa,0x88,0xf2]
1736 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1737 @ CHECK: revne  r1, r2                  @ encoding: [0x11,0xba]
1738 @ CHECK: revne.w r1, r8                 @ encoding: [0x98,0xfa,0x88,0xf1]
1739
1740
1741 @------------------------------------------------------------------------------
1742 @ REV16
1743 @------------------------------------------------------------------------------
1744         rev16.w r1, r2
1745         rev16 r2, r8
1746         itt ne
1747         rev16ne r1, r2
1748         rev16ne r1, r8
1749
1750 @ CHECK: rev16.w r1, r2                 @ encoding: [0x92,0xfa,0x92,0xf1]
1751 @ CHECK: rev16.w r2, r8                 @ encoding: [0x98,0xfa,0x98,0xf2]
1752 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1753 @ CHECK: rev16ne r1, r2                 @ encoding: [0x51,0xba]
1754 @ CHECK: rev16ne.w      r1, r8          @ encoding: [0x98,0xfa,0x98,0xf1]
1755
1756
1757 @------------------------------------------------------------------------------
1758 @ REVSH
1759 @------------------------------------------------------------------------------
1760         revsh.w r1, r2
1761         revsh r2, r8
1762         itt ne
1763         revshne r1, r2
1764         revshne r1, r8
1765
1766 @ CHECK: revsh.w r1, r2                 @ encoding: [0x92,0xfa,0xb2,0xf1]
1767 @ CHECK: revsh.w r2, r8                 @ encoding: [0x98,0xfa,0xb8,0xf2]
1768 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1769 @ CHECK: revshne r1, r2                 @ encoding: [0xd1,0xba]
1770 @ CHECK: revshne.w      r1, r8          @ encoding: [0x98,0xfa,0xb8,0xf1]
1771
1772
1773 @------------------------------------------------------------------------------
1774 @ ROR (immediate)
1775 @------------------------------------------------------------------------------
1776         ror r2, r3, #12
1777         rors r8, r3, #31
1778         rors.w r2, r3, #1
1779         ror r2, r3, #4
1780         rors r2, r12, #15
1781
1782         ror r3, #19
1783         rors r8, #2
1784         rors.w r7, #5
1785         ror.w r12, #21
1786
1787 @ CHECK: ror.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x33,0x32]
1788 @ CHECK: rors.w r8, r3, #31             @ encoding: [0x5f,0xea,0xf3,0x78]
1789 @ CHECK: rors.w r2, r3, #1              @ encoding: [0x5f,0xea,0x73,0x02]
1790 @ CHECK: ror.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x33,0x12]
1791 @ CHECK: rors.w r2, r12, #15            @ encoding: [0x5f,0xea,0xfc,0x32]
1792
1793 @ CHECK: ror.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xf3,0x43]
1794 @ CHECK: rors.w r8, r8, #2              @ encoding: [0x5f,0xea,0xb8,0x08]
1795 @ CHECK: rors.w r7, r7, #5              @ encoding: [0x5f,0xea,0x77,0x17]
1796 @ CHECK: ror.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x7c,0x5c]
1797
1798
1799 @------------------------------------------------------------------------------
1800 @ ROR (register)
1801 @------------------------------------------------------------------------------
1802         ror r3, r4, r2
1803         ror.w r1, r2
1804         rors r3, r4, r8
1805
1806 @ CHECK: ror.w  r3, r4, r2              @ encoding: [0x64,0xfa,0x02,0xf3]
1807 @ CHECK: ror.w  r1, r1, r2              @ encoding: [0x61,0xfa,0x02,0xf1]
1808 @ CHECK: rors.w r3, r4, r8              @ encoding: [0x74,0xfa,0x08,0xf3]
1809
1810
1811 @------------------------------------------------------------------------------
1812 @ RRX
1813 @------------------------------------------------------------------------------
1814         rrx r1, r2
1815         rrxs r1, r2
1816         ite lt
1817         rrxlt r9, r12
1818         rrxsge r8, r3
1819
1820 @ CHECK: rrx    r1, r2                  @ encoding: [0x4f,0xea,0x32,0x01]
1821 @ CHECK: rrxs   r1, r2                  @ encoding: [0x5f,0xea,0x32,0x01]
1822 @ CHECK: ite    lt                      @ encoding: [0xb4,0xbf]
1823 @ CHECK: rrxlt  r9, r12                 @ encoding: [0x4f,0xea,0x3c,0x09]
1824 @ CHECK: rrxsge r8, r3                  @ encoding: [0x5f,0xea,0x33,0x08]
1825
1826 @------------------------------------------------------------------------------
1827 @ RSB (immediate)
1828 @------------------------------------------------------------------------------
1829         rsb r2, r5, #0xff000
1830         rsbs r3, r12, #0xf
1831         rsb r1, #0xff
1832         rsb r1, r1, #0xff
1833         rsb r11, r11, #0
1834         rsb r9, #0
1835         rsbs r3, r1, #0
1836         rsb r3, r1, #0
1837
1838 @ CHECK: rsb.w  r2, r5, #1044480        @ encoding: [0xc5,0xf5,0x7f,0x22]
1839 @ CHECK: rsbs.w r3, r12, #15            @ encoding: [0xdc,0xf1,0x0f,0x03]
1840 @ CHECK: rsb.w  r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1841 @ CHECK: rsb.w  r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1842 @ CHECK: rsb.w  r11, r11, #0            @ encoding: [0xcb,0xf1,0x00,0x0b]
1843 @ CHECK: rsb.w  r9, r9, #0              @ encoding: [0xc9,0xf1,0x00,0x09]
1844 @ CHECK: rsbs   r3, r1, #0              @ encoding: [0x4b,0x42]
1845 @ CHECK: rsb.w  r3, r1, #0              @ encoding: [0xc1,0xf1,0x00,0x03]
1846
1847
1848 @------------------------------------------------------------------------------
1849 @ RSB (register)
1850 @------------------------------------------------------------------------------
1851         rsb r4, r8
1852         rsb r4, r9, r8
1853         rsb r1, r4, r8, asr #3
1854         rsbs r2, r1, r7, lsl #1
1855
1856 @ CHECK: rsb    r4, r4, r8              @ encoding: [0xc4,0xeb,0x08,0x04]
1857 @ CHECK: rsb    r4, r9, r8              @ encoding: [0xc9,0xeb,0x08,0x04]
1858 @ CHECK: rsb    r1, r4, r8, asr #3      @ encoding: [0xc4,0xeb,0xe8,0x01]
1859 @ CHECK: rsbs   r2, r1, r7, lsl #1      @ encoding: [0xd1,0xeb,0x47,0x02]
1860
1861
1862 @------------------------------------------------------------------------------
1863 @ SADD16
1864 @------------------------------------------------------------------------------
1865         sadd16 r3, r4, r8
1866         it ne
1867         sadd16ne r3, r4, r8
1868
1869 @ CHECK: sadd16 r3, r4, r8              @ encoding: [0x94,0xfa,0x08,0xf3]
1870 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1871 @ CHECK: sadd16ne       r3, r4, r8      @ encoding: [0x94,0xfa,0x08,0xf3]
1872
1873
1874 @------------------------------------------------------------------------------
1875 @ SADD8
1876 @------------------------------------------------------------------------------
1877         sadd8 r3, r4, r8
1878         it ne
1879         sadd8ne r3, r4, r8
1880
1881 @ CHECK: sadd8  r3, r4, r8              @ encoding: [0x84,0xfa,0x08,0xf3]
1882 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1883 @ CHECK: sadd8ne r3, r4, r8             @ encoding: [0x84,0xfa,0x08,0xf3]
1884
1885
1886 @------------------------------------------------------------------------------
1887 @ SASX
1888 @------------------------------------------------------------------------------
1889         saddsubx r9, r2, r7
1890         it ne
1891         saddsubxne r2, r5, r6
1892         sasx r9, r2, r7
1893         it ne
1894         sasxne r2, r5, r6
1895
1896 @ CHECK: sasx   r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
1897 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1898 @ CHECK: sasxne r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
1899 @ CHECK: sasx   r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
1900 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1901 @ CHECK: sasxne r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
1902
1903
1904 @------------------------------------------------------------------------------
1905 @ SBC (immediate)
1906 @------------------------------------------------------------------------------
1907         sbc r0, r1, #4
1908         sbcs r0, r1, #0
1909         sbc r1, r2, #255
1910         sbc r3, r7, #0x00550055
1911         sbc r8, r12, #0xaa00aa00
1912         sbc r9, r7, #0xa5a5a5a5
1913         sbc r5, r3, #0x87000000
1914         sbc r4, r2, #0x7f800000
1915         sbc r4, r2, #0x00000680
1916
1917 @ CHECK: sbc    r0, r1, #4              @ encoding: [0x61,0xf1,0x04,0x00]
1918 @ CHECK: sbcs   r0, r1, #0              @ encoding: [0x71,0xf1,0x00,0x00]
1919 @ CHECK: sbc    r1, r2, #255            @ encoding: [0x62,0xf1,0xff,0x01]
1920 @ CHECK: sbc    r3, r7, #5570645        @ encoding: [0x67,0xf1,0x55,0x13]
1921 @ CHECK: sbc    r8, r12, #2852170240    @ encoding: [0x6c,0xf1,0xaa,0x28]
1922 @ CHECK: sbc    r9, r7, #2779096485     @ encoding: [0x67,0xf1,0xa5,0x39]
1923 @ CHECK: sbc    r5, r3, #2264924160     @ encoding: [0x63,0xf1,0x07,0x45]
1924 @ CHECK: sbc    r4, r2, #2139095040     @ encoding: [0x62,0xf1,0xff,0x44]
1925 @ CHECK: sbc    r4, r2, #1664           @ encoding: [0x62,0xf5,0xd0,0x64]
1926
1927
1928 @------------------------------------------------------------------------------
1929 @ SBC (register)
1930 @------------------------------------------------------------------------------
1931         sbc r4, r5, r6
1932         sbcs r4, r5, r6
1933         sbc.w r9, r1, r3
1934         sbcs.w r9, r1, r3
1935         sbc     r0, r1, r3, ror #4
1936         sbcs    r0, r1, r3, lsl #7
1937         sbc.w   r0, r1, r3, lsr #31
1938         sbcs.w  r0, r1, r3, asr #32
1939
1940 @ CHECK: sbc.w  r4, r5, r6              @ encoding: [0x65,0xeb,0x06,0x04]
1941 @ CHECK: sbcs.w r4, r5, r6              @ encoding: [0x75,0xeb,0x06,0x04]
1942 @ CHECK: sbc.w  r9, r1, r3              @ encoding: [0x61,0xeb,0x03,0x09]
1943 @ CHECK: sbcs.w r9, r1, r3              @ encoding: [0x71,0xeb,0x03,0x09]
1944 @ CHECK: sbc.w  r0, r1, r3, ror #4      @ encoding: [0x61,0xeb,0x33,0x10]
1945 @ CHECK: sbcs.w r0, r1, r3, lsl #7      @ encoding: [0x71,0xeb,0xc3,0x10]
1946 @ CHECK: sbc.w  r0, r1, r3, lsr #31     @ encoding: [0x61,0xeb,0xd3,0x70]
1947 @ CHECK: sbcs.w r0, r1, r3, asr #32     @ encoding: [0x71,0xeb,0x23,0x00]
1948
1949
1950 @------------------------------------------------------------------------------
1951 @ SBFX
1952 @------------------------------------------------------------------------------
1953         sbfx r4, r5, #16, #1
1954         it gt
1955         sbfxgt r4, r5, #16, #16
1956
1957 @ CHECK: sbfx   r4, r5, #16, #1         @ encoding: [0x45,0xf3,0x00,0x44]
1958 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1959 @ CHECK: sbfxgt r4, r5, #16, #16        @ encoding: [0x45,0xf3,0x0f,0x44]
1960
1961
1962 @------------------------------------------------------------------------------
1963 @ SEL
1964 @------------------------------------------------------------------------------
1965         sel r5, r9, r2
1966         it le
1967         selle r5, r9, r2
1968
1969 @ CHECK: sel    r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
1970 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
1971 @ CHECK: selle  r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
1972
1973
1974 @------------------------------------------------------------------------------
1975 @ SEV
1976 @------------------------------------------------------------------------------
1977         sev.w
1978         it eq
1979         seveq.w
1980
1981 @ CHECK: sev.w                           @ encoding: [0xaf,0xf3,0x04,0x80]
1982 @ CHECK: it     eq                       @ encoding: [0x08,0xbf]
1983 @ CHECK: seveq.w                         @ encoding: [0xaf,0xf3,0x04,0x80]
1984
1985
1986 @------------------------------------------------------------------------------
1987 @ SADD16/SADD8
1988 @------------------------------------------------------------------------------
1989         sadd16 r1, r2, r3
1990         sadd8 r1, r2, r3
1991         ite gt
1992         sadd16gt r1, r2, r3
1993         sadd8le r1, r2, r3
1994
1995 @ CHECK: sadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x03,0xf1]
1996 @ CHECK: sadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x03,0xf1]
1997 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
1998 @ CHECK: sadd16gt       r1, r2, r3      @ encoding: [0x92,0xfa,0x03,0xf1]
1999 @ CHECK: sadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x03,0xf1]
2000
2001
2002 @------------------------------------------------------------------------------
2003 @ SHASX
2004 @------------------------------------------------------------------------------
2005         shasx r4, r8, r2
2006         it gt
2007         shasxgt r4, r8, r2
2008         shaddsubx r4, r8, r2
2009         it gt
2010         shaddsubxgt r4, r8, r2
2011
2012 @ CHECK: shasx  r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
2013 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2014 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
2015 @ CHECK: shasx  r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
2016 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2017 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
2018
2019
2020 @------------------------------------------------------------------------------
2021 @ SHASX
2022 @------------------------------------------------------------------------------
2023         shsax r4, r8, r2
2024         it gt
2025         shsaxgt r4, r8, r2
2026         shsubaddx r4, r8, r2
2027         it gt
2028         shsubaddxgt r4, r8, r2
2029
2030 @ CHECK: shsax  r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
2031 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2032 @ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
2033 @ CHECK: shsax  r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
2034 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2035 @ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
2036
2037
2038 @------------------------------------------------------------------------------
2039 @ SHSUB16/SHSUB8
2040 @------------------------------------------------------------------------------
2041         shsub16 r4, r8, r2
2042         shsub8 r4, r8, r2
2043         itt gt
2044         shsub16gt r4, r8, r2
2045         shsub8gt r4, r8, r2
2046
2047 @ CHECK: shsub16 r4, r8, r2             @ encoding: [0xd8,0xfa,0x22,0xf4]
2048 @ CHECK: shsub8 r4, r8, r2              @ encoding: [0xc8,0xfa,0x22,0xf4]
2049 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
2050 @ CHECK: shsub16gt      r4, r8, r2      @ encoding: [0xd8,0xfa,0x22,0xf4]
2051 @ CHECK: shsub8gt       r4, r8, r2      @ encoding: [0xc8,0xfa,0x22,0xf4]
2052
2053
2054 @------------------------------------------------------------------------------
2055 @ SMLABB/SMLABT/SMLATB/SMLATT
2056 @------------------------------------------------------------------------------
2057         smlabb r3, r1, r9, r0
2058         smlabt r5, r6, r4, r1
2059         smlatb r4, r2, r3, r2
2060         smlatt r8, r3, r8, r4
2061         itete gt
2062         smlabbgt r3, r1, r9, r0
2063         smlabtle r5, r6, r4, r1
2064         smlatbgt r4, r2, r3, r2
2065         smlattle r8, r3, r8, r4
2066
2067 @ CHECK: smlabb r3, r1, r9, r0          @ encoding: [0x11,0xfb,0x09,0x03]
2068 @ CHECK: smlabt r5, r6, r4, r1          @ encoding: [0x16,0xfb,0x14,0x15]
2069 @ CHECK: smlatb r4, r2, r3, r2          @ encoding: [0x12,0xfb,0x23,0x24]
2070 @ CHECK: smlatt r8, r3, r8, r4          @ encoding: [0x13,0xfb,0x38,0x48]
2071 @ CHECK: itete  gt                      @ encoding: [0xcb,0xbf]
2072 @ CHECK: smlabbgt       r3, r1, r9, r0  @ encoding: [0x11,0xfb,0x09,0x03]
2073 @ CHECK: smlabtle       r5, r6, r4, r1  @ encoding: [0x16,0xfb,0x14,0x15]
2074 @ CHECK: smlatbgt       r4, r2, r3, r2  @ encoding: [0x12,0xfb,0x23,0x24]
2075 @ CHECK: smlattle       r8, r3, r8, r4  @ encoding: [0x13,0xfb,0x38,0x48]
2076
2077
2078 @------------------------------------------------------------------------------
2079 @ SMLAD/SMLADX
2080 @------------------------------------------------------------------------------
2081         smlad r2, r3, r5, r8
2082         smladx r2, r3, r5, r8
2083         itt hi
2084         smladhi r2, r3, r5, r8
2085         smladxhi r2, r3, r5, r8
2086
2087 @ CHECK: smlad  r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x05,0x82]
2088 @ CHECK: smladx r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x15,0x82]
2089 @ CHECK: itt    hi                      @ encoding: [0x84,0xbf]
2090 @ CHECK: smladhi r2, r3, r5, r8         @ encoding: [0x23,0xfb,0x05,0x82]
2091 @ CHECK: smladxhi       r2, r3, r5, r8  @ encoding: [0x23,0xfb,0x15,0x82]
2092
2093
2094 @------------------------------------------------------------------------------
2095 @ SMLAL
2096 @------------------------------------------------------------------------------
2097         smlal r2, r3, r5, r8
2098         it eq
2099         smlaleq r2, r3, r5, r8
2100
2101 @ CHECK: smlal  r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0x08,0x23]
2102 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2103 @ CHECK: smlaleq r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0x08,0x23]
2104
2105
2106 @------------------------------------------------------------------------------
2107 @ SMLALBB/SMLALBT/SMLALTB/SMLALTT
2108 @------------------------------------------------------------------------------
2109         smlalbb r3, r1, r9, r0
2110         smlalbt r5, r6, r4, r1
2111         smlaltb r4, r2, r3, r2
2112         smlaltt r8, r3, r8, r4
2113         iteet ge
2114         smlalbbge r3, r1, r9, r0
2115         smlalbtlt r5, r6, r4, r1
2116         smlaltblt r4, r2, r3, r2
2117         smlalttge r8, r3, r8, r4
2118
2119 @ CHECK: smlalbb r3, r1, r9, r0         @ encoding: [0xc9,0xfb,0x80,0x31]
2120 @ CHECK: smlalbt r5, r6, r4, r1         @ encoding: [0xc4,0xfb,0x91,0x56]
2121 @ CHECK: smlaltb r4, r2, r3, r2         @ encoding: [0xc3,0xfb,0xa2,0x42]
2122 @ CHECK: smlaltt r8, r3, r8, r4         @ encoding: [0xc8,0xfb,0xb4,0x83]
2123 @ CHECK: iteet  ge                      @ encoding: [0xad,0xbf]
2124 @ CHECK: smlalbbge      r3, r1, r9, r0  @ encoding: [0xc9,0xfb,0x80,0x31]
2125 @ CHECK: smlalbtlt      r5, r6, r4, r1  @ encoding: [0xc4,0xfb,0x91,0x56]
2126 @ CHECK: smlaltblt      r4, r2, r3, r2  @ encoding: [0xc3,0xfb,0xa2,0x42]
2127 @ CHECK: smlalttge      r8, r3, r8, r4  @ encoding: [0xc8,0xfb,0xb4,0x83]
2128
2129
2130 @------------------------------------------------------------------------------
2131 @ SMLALD/SMLALDX
2132 @------------------------------------------------------------------------------
2133         smlald r2, r3, r5, r8
2134         smlaldx r2, r3, r5, r8
2135         ite eq
2136         smlaldeq r2, r3, r5, r8
2137         smlaldxne r2, r3, r5, r8
2138
2139 @ CHECK: smlald r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0xc8,0x23]
2140 @ CHECK: smlaldx r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0xd8,0x23]
2141 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2142 @ CHECK: smlaldeq       r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xc8,0x23]
2143 @ CHECK: smlaldxne      r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xd8,0x23]
2144
2145
2146 @------------------------------------------------------------------------------
2147 @ SMLAWB/SMLAWT
2148 @------------------------------------------------------------------------------
2149         smlawb r2, r3, r10, r8
2150         smlawt r8, r3, r5, r9
2151         ite eq
2152         smlawbeq r2, r7, r5, r8
2153         smlawtne r1, r3, r0, r8
2154
2155 @ CHECK: smlawb r2, r3, r10, r8         @ encoding: [0x33,0xfb,0x0a,0x82]
2156 @ CHECK: smlawt r8, r3, r5, r9          @ encoding: [0x33,0xfb,0x15,0x98]
2157 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2158 @ CHECK: smlawbeq       r2, r7, r5, r8  @ encoding: [0x37,0xfb,0x05,0x82]
2159 @ CHECK: smlawtne       r1, r3, r0, r8  @ encoding: [0x33,0xfb,0x10,0x81]
2160
2161
2162 @------------------------------------------------------------------------------
2163 @ SMLSD/SMLSDX
2164 @------------------------------------------------------------------------------
2165         smlsd r2, r3, r5, r8
2166         smlsdx r2, r3, r5, r8
2167         ite le
2168         smlsdle r2, r3, r5, r8
2169         smlsdxgt r2, r3, r5, r8
2170
2171 @ CHECK: smlsd  r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x05,0x82]
2172 @ CHECK: smlsdx r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x15,0x82]
2173 @ CHECK: ite    le                      @ encoding: [0xd4,0xbf]
2174 @ CHECK: smlsdle        r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x05,0x82]
2175 @ CHECK: smlsdxgt       r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x15,0x82]
2176
2177
2178 @------------------------------------------------------------------------------
2179 @ SMLSLD/SMLSLDX
2180 @------------------------------------------------------------------------------
2181         smlsld r2, r9, r5, r1
2182         smlsldx r4, r11, r2, r8
2183         ite ge
2184         smlsldge r8, r2, r5, r6
2185         smlsldxlt r1, r0, r3, r8
2186
2187 @ CHECK: smlsld r2, r9, r5, r1          @ encoding: [0xd5,0xfb,0xc1,0x29]
2188 @ CHECK: smlsldx        r4, r11, r2, r8 @ encoding: [0xd2,0xfb,0xd8,0x4b]
2189 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2190 @ CHECK: smlsldge       r8, r2, r5, r6  @ encoding: [0xd5,0xfb,0xc6,0x82]
2191 @ CHECK: smlsldxlt      r1, r0, r3, r8  @ encoding: [0xd3,0xfb,0xd8,0x10]
2192
2193
2194 @------------------------------------------------------------------------------
2195 @ SMMLA/SMMLAR
2196 @------------------------------------------------------------------------------
2197         smmla r1, r2, r3, r4
2198         smmlar r4, r3, r2, r1
2199         ite lo
2200         smmlalo r1, r2, r3, r4
2201         smmlarcs r4, r3, r2, r1
2202
2203 @ CHECK: smmla  r1, r2, r3, r4          @ encoding: [0x52,0xfb,0x03,0x41]
2204 @ CHECK: smmlar r4, r3, r2, r1          @ encoding: [0x53,0xfb,0x12,0x14]
2205 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2206 @ CHECK: smmlalo        r1, r2, r3, r4  @ encoding: [0x52,0xfb,0x03,0x41]
2207 @ CHECK: smmlarhs       r4, r3, r2, r1  @ encoding: [0x53,0xfb,0x12,0x14]
2208
2209
2210 @------------------------------------------------------------------------------
2211 @ SMMLS/SMMLSR
2212 @------------------------------------------------------------------------------
2213         smmls r1, r2, r3, r4
2214         smmlsr r4, r3, r2, r1
2215         ite lo
2216         smmlslo r1, r2, r3, r4
2217         smmlsrcs r4, r3, r2, r1
2218
2219 @ CHECK: smmls  r1, r2, r3, r4          @ encoding: [0x62,0xfb,0x03,0x41]
2220 @ CHECK: smmlsr r4, r3, r2, r1          @ encoding: [0x63,0xfb,0x12,0x14]
2221 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2222 @ CHECK: smmlslo        r1, r2, r3, r4  @ encoding: [0x62,0xfb,0x03,0x41]
2223 @ CHECK: smmlsrhs       r4, r3, r2, r1  @ encoding: [0x63,0xfb,0x12,0x14]
2224
2225
2226 @------------------------------------------------------------------------------
2227 @ SMMUL/SMMULR
2228 @------------------------------------------------------------------------------
2229         smmul r2, r3, r4
2230         smmulr r3, r2, r1
2231         ite cc
2232         smmulcc r2, r3, r4
2233         smmulrhs r3, r2, r1
2234
2235 @ CHECK: smmul  r2, r3, r4              @ encoding: [0x53,0xfb,0x04,0xf2]
2236 @ CHECK: smmulr r3, r2, r1              @ encoding: [0x52,0xfb,0x11,0xf3]
2237 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2238 @ CHECK: smmullo        r2, r3, r4      @ encoding: [0x53,0xfb,0x04,0xf2]
2239 @ CHECK: smmulrhs       r3, r2, r1      @ encoding: [0x52,0xfb,0x11,0xf3]
2240
2241
2242 @------------------------------------------------------------------------------
2243 @ SMUAD/SMUADX
2244 @------------------------------------------------------------------------------
2245         smuad r2, r3, r4
2246         smuadx r3, r2, r1
2247         ite lt
2248         smuadlt r2, r3, r4
2249         smuadxge r3, r2, r1
2250
2251 @ CHECK: smuad  r2, r3, r4              @ encoding: [0x23,0xfb,0x04,0xf2]
2252 @ CHECK: smuadx r3, r2, r1              @ encoding: [0x22,0xfb,0x11,0xf3]
2253 @ CHECK: ite    lt                      @ encoding: [0xb4,0xbf]
2254 @ CHECK: smuadlt        r2, r3, r4      @ encoding: [0x23,0xfb,0x04,0xf2]
2255 @ CHECK: smuadxge       r3, r2, r1      @ encoding: [0x22,0xfb,0x11,0xf3]
2256
2257
2258 @------------------------------------------------------------------------------
2259 @ SMULBB/SMULBT/SMULTB/SMULTT
2260 @------------------------------------------------------------------------------
2261         smulbb r3, r9, r0
2262         smulbt r5, r4, r1
2263         smultb r4, r2, r2
2264         smultt r8, r3, r4
2265         itete ge
2266         smulbbge r1, r9, r0
2267         smulbtlt r5, r6, r4
2268         smultbge r2, r3, r2
2269         smulttlt r8, r3, r4
2270
2271 @ CHECK: smulbb r3, r9, r0              @ encoding: [0x19,0xfb,0x00,0xf3]
2272 @ CHECK: smulbt r5, r4, r1              @ encoding: [0x14,0xfb,0x11,0xf5]
2273 @ CHECK: smultb r4, r2, r2              @ encoding: [0x12,0xfb,0x22,0xf4]
2274 @ CHECK: smultt r8, r3, r4              @ encoding: [0x13,0xfb,0x34,0xf8]
2275 @ CHECK: itete  ge                      @ encoding: [0xab,0xbf]
2276 @ CHECK: smulbbge       r1, r9, r0      @ encoding: [0x19,0xfb,0x00,0xf1]
2277 @ CHECK: smulbtlt       r5, r6, r4      @ encoding: [0x16,0xfb,0x14,0xf5]
2278 @ CHECK: smultbge       r2, r3, r2      @ encoding: [0x13,0xfb,0x22,0xf2]
2279 @ CHECK: smulttlt       r8, r3, r4      @ encoding: [0x13,0xfb,0x34,0xf8]
2280
2281
2282 @------------------------------------------------------------------------------
2283 @ SMULL
2284 @------------------------------------------------------------------------------
2285         smull r3, r9, r0, r1
2286         it eq
2287         smulleq r8, r3, r4, r5
2288
2289 @ CHECK: smull  r3, r9, r0, r1          @ encoding: [0x80,0xfb,0x01,0x39]
2290 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2291 @ CHECK: smulleq r8, r3, r4, r5         @ encoding: [0x84,0xfb,0x05,0x83]
2292
2293
2294 @------------------------------------------------------------------------------
2295 @ SMULWB/SMULWT
2296 @------------------------------------------------------------------------------
2297         smulwb r3, r9, r0
2298         smulwt r3, r9, r2
2299         ite gt
2300         smulwbgt r3, r9, r0
2301         smulwtle r3, r9, r2
2302
2303 @ CHECK: smulwb r3, r9, r0              @ encoding: [0x39,0xfb,0x00,0xf3]
2304 @ CHECK: smulwt r3, r9, r2              @ encoding: [0x39,0xfb,0x12,0xf3]
2305 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
2306 @ CHECK: smulwbgt       r3, r9, r0      @ encoding: [0x39,0xfb,0x00,0xf3]
2307 @ CHECK: smulwtle       r3, r9, r2      @ encoding: [0x39,0xfb,0x12,0xf3]
2308
2309
2310 @------------------------------------------------------------------------------
2311 @ SMUSD/SMUSDX
2312 @------------------------------------------------------------------------------
2313         smusd r3, r0, r1
2314         smusdx r3, r9, r2
2315         ite eq
2316         smusdeq r8, r3, r2
2317         smusdxne r7, r4, r3
2318
2319 @ CHECK: smusd  r3, r0, r1              @ encoding: [0x40,0xfb,0x01,0xf3]
2320 @ CHECK: smusdx r3, r9, r2              @ encoding: [0x49,0xfb,0x12,0xf3]
2321 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2322 @ CHECK: smusdeq        r8, r3, r2      @ encoding: [0x43,0xfb,0x02,0xf8]
2323 @ CHECK: smusdxne       r7, r4, r3      @ encoding: [0x44,0xfb,0x13,0xf7]
2324
2325
2326 @------------------------------------------------------------------------------
2327 @ SRS
2328 @------------------------------------------------------------------------------
2329         srsdb sp, #1
2330         srsia sp, #0
2331
2332         srsdb sp!, #19
2333         srsia sp!, #2
2334
2335         srsea sp, #10
2336         srsfd sp, #9
2337
2338         srsea sp!, #5
2339         srsfd sp!, #5
2340
2341         srs sp, #5
2342         srs sp!, #5
2343
2344 @ CHECK: srsdb  sp, #1                  @ encoding: [0x0d,0xe8,0x01,0xc0]
2345 @ CHECK: srsia  sp, #0                  @ encoding: [0x8d,0xe9,0x00,0xc0]
2346 @ CHECK: srsdb  sp!, #19                @ encoding: [0x2d,0xe8,0x13,0xc0]
2347 @ CHECK: srsia  sp!, #2                 @ encoding: [0xad,0xe9,0x02,0xc0]
2348 @ CHECK: srsdb  sp, #10                 @ encoding: [0x0d,0xe8,0x0a,0xc0]
2349 @ CHECK: srsia  sp, #9                  @ encoding: [0x8d,0xe9,0x09,0xc0]
2350 @ CHECK: srsdb  sp!, #5                 @ encoding: [0x2d,0xe8,0x05,0xc0]
2351 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2352 @ CHECK: srsia  sp, #5                  @ encoding: [0x8d,0xe9,0x05,0xc0]
2353 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2354
2355         srsdb #1
2356         srsia #0
2357
2358         srsdb #19!
2359         srsia #2!
2360
2361         srsea #10
2362         srsfd #9
2363
2364         srsea #5!
2365         srsfd #5!
2366
2367         srs #5
2368         srs #5!
2369
2370 @ CHECK: srsdb  sp, #1                  @ encoding: [0x0d,0xe8,0x01,0xc0]
2371 @ CHECK: srsia  sp, #0                  @ encoding: [0x8d,0xe9,0x00,0xc0]
2372 @ CHECK: srsdb  sp!, #19                @ encoding: [0x2d,0xe8,0x13,0xc0]
2373 @ CHECK: srsia  sp!, #2                 @ encoding: [0xad,0xe9,0x02,0xc0]
2374 @ CHECK: srsdb  sp, #10                 @ encoding: [0x0d,0xe8,0x0a,0xc0]
2375 @ CHECK: srsia  sp, #9                  @ encoding: [0x8d,0xe9,0x09,0xc0]
2376 @ CHECK: srsdb  sp!, #5                 @ encoding: [0x2d,0xe8,0x05,0xc0]
2377 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2378 @ CHECK: srsia  sp, #5                  @ encoding: [0x8d,0xe9,0x05,0xc0]
2379 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2380
2381
2382 @------------------------------------------------------------------------------
2383 @ SSAT
2384 @------------------------------------------------------------------------------
2385         ssat    r8, #1, r10
2386         ssat    r8, #1, r10, lsl #0
2387         ssat    r8, #1, r10, lsl #31
2388         ssat    r8, #1, r10, asr #1
2389
2390 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2391 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2392 @ CHECK: ssat   r8, #1, r10, lsl #31    @ encoding: [0x0a,0xf3,0xc0,0x78]
2393 @ CHECK: ssat   r8, #1, r10, asr #1     @ encoding: [0x2a,0xf3,0x40,0x08]
2394
2395
2396 @------------------------------------------------------------------------------
2397 @ SSAT16
2398 @------------------------------------------------------------------------------
2399         ssat16  r2, #1, r7
2400         ssat16  r3, #16, r5
2401
2402 @ CHECK: ssat16 r2, #1, r7              @ encoding: [0x27,0xf3,0x00,0x02]
2403 @ CHECK: ssat16 r3, #16, r5             @ encoding: [0x25,0xf3,0x0f,0x03]
2404
2405
2406 @------------------------------------------------------------------------------
2407 @ SSAX
2408 @------------------------------------------------------------------------------
2409         ssubaddx r2, r3, r4
2410         it lt
2411         ssubaddxlt r2, r3, r4
2412         ssax r2, r3, r4
2413         it lt
2414         ssaxlt r2, r3, r4
2415
2416 @ CHECK: ssax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2417 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2418 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2419 @ CHECK: ssax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2420 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2421 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2422
2423
2424 @------------------------------------------------------------------------------
2425 @ SSUB16/SSUB8
2426 @------------------------------------------------------------------------------
2427         ssub16 r1, r0, r6
2428         ssub8 r9, r2, r4
2429         ite ne
2430         ssub16ne r5, r3, r2
2431         ssub8eq r5, r1, r2
2432
2433 @ CHECK: ssub16 r1, r0, r6              @ encoding: [0xd0,0xfa,0x06,0xf1]
2434 @ CHECK: ssub8  r9, r2, r4              @ encoding: [0xc2,0xfa,0x04,0xf9]
2435 @ CHECK: ite    ne                      @ encoding: [0x14,0xbf]
2436 @ CHECK: ssub16ne       r5, r3, r2      @ encoding: [0xd3,0xfa,0x02,0xf5]
2437 @ CHECK: ssub8eq        r5, r1, r2      @ encoding: [0xc1,0xfa,0x02,0xf5]
2438
2439
2440 @------------------------------------------------------------------------------
2441 @ STC{L}/STC2{L}
2442 @------------------------------------------------------------------------------
2443         stc2 p0, c8, [r1, #4]
2444         stc2 p1, c7, [r2]
2445         stc2 p2, c6, [r3, #-224]
2446         stc2 p3, c5, [r4, #-120]!
2447         stc2 p4, c4, [r5], #16
2448         stc2 p5, c3, [r6], #-72
2449         stc2l p6, c2, [r7, #4]
2450         stc2l p7, c1, [r8]
2451         stc2l p8, c0, [r9, #-224]
2452         stc2l p9, c1, [r10, #-120]!
2453         stc2l p10, c2, [r11], #16
2454         stc2l p11, c3, [r12], #-72
2455
2456         stc p12, c4, [r0, #4]
2457         stc p13, c5, [r1]
2458         stc p14, c6, [r2, #-224]
2459         stc p15, c7, [r3, #-120]!
2460         stc p5, c8, [r4], #16
2461         stc p4, c9, [r5], #-72
2462         stcl p3, c10, [r6, #4]
2463         stcl p2, c11, [r7]
2464         stcl p1, c12, [r8, #-224]
2465         stcl p0, c13, [r9, #-120]!
2466         stcl p6, c14, [r10], #16
2467         stcl p7, c15, [r11], #-72
2468
2469         stc2 p2, c8, [r1], { 25 }
2470
2471 @ CHECK: stc2   p0, c8, [r1, #4]        @ encoding: [0x81,0xfd,0x01,0x80]
2472 @ CHECK: stc2   p1, c7, [r2]            @ encoding: [0x82,0xfd,0x00,0x71]
2473 @ CHECK: stc2   p2, c6, [r3, #-224]     @ encoding: [0x03,0xfd,0x38,0x62]
2474 @ CHECK: stc2   p3, c5, [r4, #-120]!    @ encoding: [0x24,0xfd,0x1e,0x53]
2475 @ CHECK: stc2   p4, c4, [r5], #16       @ encoding: [0xa5,0xfc,0x04,0x44]
2476 @ CHECK: stc2   p5, c3, [r6], #-72      @ encoding: [0x26,0xfc,0x12,0x35]
2477 @ CHECK: stc2l  p6, c2, [r7, #4]        @ encoding: [0xc7,0xfd,0x01,0x26]
2478 @ CHECK: stc2l  p7, c1, [r8]            @ encoding: [0xc8,0xfd,0x00,0x17]
2479 @ CHECK: stc2l  p8, c0, [r9, #-224]     @ encoding: [0x49,0xfd,0x38,0x08]
2480 @ CHECK: stc2l  p9, c1, [r10, #-120]!   @ encoding: [0x6a,0xfd,0x1e,0x19]
2481 @ CHECK: stc2l  p10, c2, [r11], #16     @ encoding: [0xeb,0xfc,0x04,0x2a]
2482 @ CHECK: stc2l  p11, c3, [r12], #-72    @ encoding: [0x6c,0xfc,0x12,0x3b]
2483
2484 @ CHECK: stc    p12, c4, [r0, #4]       @ encoding: [0x80,0xed,0x01,0x4c]
2485 @ CHECK: stc    p13, c5, [r1]           @ encoding: [0x81,0xed,0x00,0x5d]
2486 @ CHECK: stc    p14, c6, [r2, #-224]    @ encoding: [0x02,0xed,0x38,0x6e]
2487 @ CHECK: stc    p15, c7, [r3, #-120]!   @ encoding: [0x23,0xed,0x1e,0x7f]
2488 @ CHECK: stc    p5, c8, [r4], #16       @ encoding: [0xa4,0xec,0x04,0x85]
2489 @ CHECK: stc    p4, c9, [r5], #-72      @ encoding: [0x25,0xec,0x12,0x94]
2490 @ CHECK: stcl   p3, c10, [r6, #4]       @ encoding: [0xc6,0xed,0x01,0xa3]
2491 @ CHECK: stcl   p2, c11, [r7]           @ encoding: [0xc7,0xed,0x00,0xb2]
2492 @ CHECK: stcl   p1, c12, [r8, #-224]    @ encoding: [0x48,0xed,0x38,0xc1]
2493 @ CHECK: stcl   p0, c13, [r9, #-120]!   @ encoding: [0x69,0xed,0x1e,0xd0]
2494 @ CHECK: stcl   p6, c14, [r10], #16     @ encoding: [0xea,0xec,0x04,0xe6]
2495 @ CHECK: stcl   p7, c15, [r11], #-72    @ encoding: [0x6b,0xec,0x12,0xf7]
2496
2497 @ CHECK: stc2   p2, c8, [r1], {25}      @ encoding: [0x81,0xfc,0x19,0x82]
2498
2499
2500 @------------------------------------------------------------------------------
2501 @ STMIA
2502 @------------------------------------------------------------------------------
2503         stmia.w r4, {r4, r5, r8, r9}
2504         stmia.w r4, {r5, r6}
2505         stmia.w r5!, {r3, r8}
2506         stm.w r4, {r4, r5, r8, r9}
2507         stm.w r4, {r5, r6}
2508         stm.w r5!, {r3, r8}
2509         stm.w r5!, {r1, r2}
2510         stm.w r2, {r1, r2}
2511
2512         stmia r4, {r4, r5, r8, r9}
2513         stmia r4, {r5, r6}
2514         stmia r5!, {r3, r8}
2515         stm r4, {r4, r5, r8, r9}
2516         stm r4, {r5, r6}
2517         stm r5!, {r3, r8}
2518         stmea r5!, {r3, r8}
2519
2520 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2521 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2522 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2523 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2524 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2525 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2526 @ CHECK: stm.w  r5!, {r1, r2}           @ encoding: [0xa5,0xe8,0x06,0x00]
2527 @ CHECK: stm.w  r2, {r1, r2}            @ encoding: [0x82,0xe8,0x06,0x00]
2528
2529 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2530 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2531 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2532 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2533 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2534 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2535 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2536
2537
2538 @------------------------------------------------------------------------------
2539 @ STMDB
2540 @------------------------------------------------------------------------------
2541         stmdb r4, {r4, r5, r8, r9}
2542         stmdb r4, {r5, r6}
2543         stmdb r5!, {r3, r8}
2544         stmea r5!, {r3, r8}
2545         stmdb.w r5, {r0, r1}
2546
2547 @ CHECK: stmdb  r4, {r4, r5, r8, r9}    @ encoding: [0x04,0xe9,0x30,0x03]
2548 @ CHECK: stmdb  r4, {r5, r6}            @ encoding: [0x04,0xe9,0x60,0x00]
2549 @ CHECK: stmdb  r5!, {r3, r8}           @ encoding: [0x25,0xe9,0x08,0x01]
2550 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2551 @ CHECK: stmdb  r5, {r0, r1}            @ encoding: [0x05,0xe9,0x03,0x00]
2552
2553
2554 @------------------------------------------------------------------------------
2555 @ STR(immediate)
2556 @------------------------------------------------------------------------------
2557         str r5, [r5, #-4]
2558         str r5, [r6, #32]
2559         str r5, [r6, #33]
2560         str r5, [r6, #257]
2561         str.w pc, [r7, #257]
2562         str r2, [r4, #255]!
2563         str r8, [sp, #4]!
2564         str lr, [sp, #-4]!
2565         str r2, [r4], #255
2566         str r8, [sp], #4
2567         str lr, [sp], #-4
2568
2569 @ CHECK: str    r5, [r5, #-4]           @ encoding: [0x45,0xf8,0x04,0x5c]
2570 @ CHECK: str    r5, [r6, #32]           @ encoding: [0x35,0x62]
2571 @ CHECK: str.w  r5, [r6, #33]           @ encoding: [0xc6,0xf8,0x21,0x50]
2572 @ CHECK: str.w  r5, [r6, #257]          @ encoding: [0xc6,0xf8,0x01,0x51]
2573 @ CHECK: str.w  pc, [r7, #257]          @ encoding: [0xc7,0xf8,0x01,0xf1]
2574 @ CHECK: str    r2, [r4, #255]!         @ encoding: [0x44,0xf8,0xff,0x2f]
2575 @ CHECK: str    r8, [sp, #4]!           @ encoding: [0x4d,0xf8,0x04,0x8f]
2576 @ CHECK: str    lr, [sp, #-4]!          @ encoding: [0x4d,0xf8,0x04,0xed]
2577 @ CHECK: str    r2, [r4], #255          @ encoding: [0x44,0xf8,0xff,0x2b]
2578 @ CHECK: str    r8, [sp], #4            @ encoding: [0x4d,0xf8,0x04,0x8b]
2579 @ CHECK: str    lr, [sp], #-4           @ encoding: [0x4d,0xf8,0x04,0xe9]
2580
2581
2582 @------------------------------------------------------------------------------
2583 @ STR(register)
2584 @------------------------------------------------------------------------------
2585         str r1, [r8, r1]
2586         str.w r4, [r5, r2]
2587         str r6, [r0, r2, lsl #3]
2588         str r8, [r8, r2, lsl #2]
2589         str r7, [sp, r2, lsl #1]
2590         str r7, [sp, r2, lsl #0]
2591
2592 @ CHECK: str.w  r1, [r8, r1]            @ encoding: [0x48,0xf8,0x01,0x10]
2593 @ CHECK: str.w  r4, [r5, r2]            @ encoding: [0x45,0xf8,0x02,0x40]
2594 @ CHECK: str.w  r6, [r0, r2, lsl #3]    @ encoding: [0x40,0xf8,0x32,0x60]
2595 @ CHECK: str.w  r8, [r8, r2, lsl #2]    @ encoding: [0x48,0xf8,0x22,0x80]
2596 @ CHECK: str.w  r7, [sp, r2, lsl #1]    @ encoding: [0x4d,0xf8,0x12,0x70]
2597 @ CHECK: str.w  r7, [sp, r2]            @ encoding: [0x4d,0xf8,0x02,0x70]
2598
2599
2600 @------------------------------------------------------------------------------
2601 @ STRB(immediate)
2602 @------------------------------------------------------------------------------
2603         strb r5, [r5, #-4]
2604         strb r5, [r6, #32]
2605         strb r5, [r6, #33]
2606         strb r5, [r6, #257]
2607         strb.w lr, [r7, #257]
2608         strb r5, [r8, #255]!
2609         strb r2, [r5, #4]!
2610         strb r1, [r4, #-4]!
2611         strb lr, [r3], #255
2612         strb r9, [r2], #4
2613         strb r3, [sp], #-4
2614         strb r4, [r8, #-0]!
2615
2616 @ CHECK: strb   r5, [r5, #-4]           @ encoding: [0x05,0xf8,0x04,0x5c]
2617 @ CHECK: strb.w r5, [r6, #32]           @ encoding: [0x86,0xf8,0x20,0x50]
2618 @ CHECK: strb.w r5, [r6, #33]           @ encoding: [0x86,0xf8,0x21,0x50]
2619 @ CHECK: strb.w r5, [r6, #257]          @ encoding: [0x86,0xf8,0x01,0x51]
2620 @ CHECK: strb.w lr, [r7, #257]          @ encoding: [0x87,0xf8,0x01,0xe1]
2621 @ CHECK: strb   r5, [r8, #255]!         @ encoding: [0x08,0xf8,0xff,0x5f]
2622 @ CHECK: strb   r2, [r5, #4]!           @ encoding: [0x05,0xf8,0x04,0x2f]
2623 @ CHECK: strb   r1, [r4, #-4]!          @ encoding: [0x04,0xf8,0x04,0x1d]
2624 @ CHECK: strb   lr, [r3], #255          @ encoding: [0x03,0xf8,0xff,0xeb]
2625 @ CHECK: strb   r9, [r2], #4            @ encoding: [0x02,0xf8,0x04,0x9b]
2626 @ CHECK: strb   r3, [sp], #-4           @ encoding: [0x0d,0xf8,0x04,0x39]
2627 @ CHECK: strb   r4, [r8, #-0]!          @ encoding: [0x08,0xf8,0x00,0x4d]
2628
2629
2630 @------------------------------------------------------------------------------
2631 @ STRB(register)
2632 @------------------------------------------------------------------------------
2633         strb r1, [r8, r1]
2634         strb.w r4, [r5, r2]
2635         strb r6, [r0, r2, lsl #3]
2636         strb r8, [r8, r2, lsl #2]
2637         strb r7, [sp, r2, lsl #1]
2638         strb r7, [sp, r2, lsl #0]
2639
2640 @ CHECK: strb.w r1, [r8, r1]            @ encoding: [0x08,0xf8,0x01,0x10]
2641 @ CHECK: strb.w r4, [r5, r2]            @ encoding: [0x05,0xf8,0x02,0x40]
2642 @ CHECK: strb.w r6, [r0, r2, lsl #3]    @ encoding: [0x00,0xf8,0x32,0x60]
2643 @ CHECK: strb.w r8, [r8, r2, lsl #2]    @ encoding: [0x08,0xf8,0x22,0x80]
2644 @ CHECK: strb.w r7, [sp, r2, lsl #1]    @ encoding: [0x0d,0xf8,0x12,0x70]
2645 @ CHECK: strb.w r7, [sp, r2]            @ encoding: [0x0d,0xf8,0x02,0x70]
2646
2647
2648 @------------------------------------------------------------------------------
2649 @ STRBT
2650 @------------------------------------------------------------------------------
2651         strbt r1, [r2]
2652         strbt r1, [r8, #0]
2653         strbt r1, [r8, #3]
2654         strbt r1, [r8, #255]
2655
2656 @ CHECK: strbt  r1, [r2]                @ encoding: [0x02,0xf8,0x00,0x1e]
2657 @ CHECK: strbt  r1, [r8]                @ encoding: [0x08,0xf8,0x00,0x1e]
2658 @ CHECK: strbt  r1, [r8, #3]            @ encoding: [0x08,0xf8,0x03,0x1e]
2659 @ CHECK: strbt  r1, [r8, #255]          @ encoding: [0x08,0xf8,0xff,0x1e]
2660
2661
2662 @------------------------------------------------------------------------------
2663 @ STRD
2664 @------------------------------------------------------------------------------
2665         strd r3, r5, [r6, #24]
2666         strd r3, r5, [r6, #24]!
2667         strd r3, r5, [r6], #4
2668         strd r3, r5, [r6], #-8
2669         strd r3, r5, [r6]
2670         strd r8, r1, [r3, #0]
2671         strd r0, r1, [r2, #-0]
2672         strd r0, r1, [r2, #-0]!
2673         strd r0, r1, [r2], #-0
2674
2675 @ CHECK: strd   r3, r5, [r6, #24]       @ encoding: [0xc6,0xe9,0x06,0x35]
2676 @ CHECK: strd   r3, r5, [r6, #24]!      @ encoding: [0xe6,0xe9,0x06,0x35]
2677 @ CHECK: strd   r3, r5, [r6], #4        @ encoding: [0xe6,0xe8,0x01,0x35]
2678 @ CHECK: strd   r3, r5, [r6], #-8       @ encoding: [0x66,0xe8,0x02,0x35]
2679 @ CHECK: strd   r3, r5, [r6]            @ encoding: [0xc6,0xe9,0x00,0x35]
2680 @ CHECK: strd   r8, r1, [r3]            @ encoding: [0xc3,0xe9,0x00,0x81]
2681 @ CHECK: strd   r0, r1, [r2, #-0]       @ encoding: [0x42,0xe9,0x00,0x01]
2682 @ CHECK: strd   r0, r1, [r2, #-0]!      @ encoding: [0x62,0xe9,0x00,0x01]
2683 @ CHECK: strd   r0, r1, [r2], #-0       @ encoding: [0x62,0xe8,0x00,0x01]
2684
2685
2686 @------------------------------------------------------------------------------
2687 @ STREX/STREXB/STREXH/STREXD
2688 @------------------------------------------------------------------------------
2689         strex r1, r8, [r4]
2690         strex r8, r2, [r4, #0]
2691         strex r2, r12, [sp, #128]
2692         strexb r5, r1, [r7]
2693         strexh r9, r7, [r12]
2694         strexd r9, r3, r6, [r4]
2695
2696 @ CHECK: strex  r1, r8, [r4]            @ encoding: [0x44,0xe8,0x00,0x81]
2697 @ CHECK: strex  r8, r2, [r4]            @ encoding: [0x44,0xe8,0x00,0x28]
2698 @ CHECK: strex  r2, r12, [sp, #128]     @ encoding: [0x4d,0xe8,0x20,0xc2]
2699 @ CHECK: strexb r5, r1, [r7]            @ encoding: [0xc7,0xe8,0x45,0x1f]
2700 @ CHECK: strexh r9, r7, [r12]           @ encoding: [0xcc,0xe8,0x59,0x7f]
2701 @ CHECK: strexd r9, r3, r6, [r4]        @ encoding: [0xc4,0xe8,0x79,0x36]
2702
2703
2704 @------------------------------------------------------------------------------
2705 @ STRH(immediate)
2706 @------------------------------------------------------------------------------
2707         strh r5, [r5, #-4]
2708         strh r5, [r6, #32]
2709         strh r5, [r6, #33]
2710         strh r5, [r6, #257]
2711         strh.w lr, [r7, #257]
2712         strh r5, [r8, #255]!
2713         strh r2, [r5, #4]!
2714         strh r1, [r4, #-4]!
2715         strh lr, [r3], #255
2716         strh r9, [r2], #4
2717         strh r3, [sp], #-4
2718
2719 @ CHECK: strh   r5, [r5, #-4]           @ encoding: [0x25,0xf8,0x04,0x5c]
2720 @ CHECK: strh   r5, [r6, #32]           @ encoding: [0x35,0x84]
2721 @ CHECK: strh.w r5, [r6, #33]           @ encoding: [0xa6,0xf8,0x21,0x50]
2722 @ CHECK: strh.w r5, [r6, #257]          @ encoding: [0xa6,0xf8,0x01,0x51]
2723 @ CHECK: strh.w lr, [r7, #257]          @ encoding: [0xa7,0xf8,0x01,0xe1]
2724 @ CHECK: strh   r5, [r8, #255]!         @ encoding: [0x28,0xf8,0xff,0x5f]
2725 @ CHECK: strh   r2, [r5, #4]!           @ encoding: [0x25,0xf8,0x04,0x2f]
2726 @ CHECK: strh   r1, [r4, #-4]!          @ encoding: [0x24,0xf8,0x04,0x1d]
2727 @ CHECK: strh   lr, [r3], #255          @ encoding: [0x23,0xf8,0xff,0xeb]
2728 @ CHECK: strh   r9, [r2], #4            @ encoding: [0x22,0xf8,0x04,0x9b]
2729 @ CHECK: strh   r3, [sp], #-4           @ encoding: [0x2d,0xf8,0x04,0x39]
2730
2731
2732 @------------------------------------------------------------------------------
2733 @ STRH(register)
2734 @------------------------------------------------------------------------------
2735         strh r1, [r8, r1]
2736         strh.w r4, [r5, r2]
2737         strh r6, [r0, r2, lsl #3]
2738         strh r8, [r8, r2, lsl #2]
2739         strh r7, [sp, r2, lsl #1]
2740         strh r7, [sp, r2, lsl #0]
2741
2742 @ CHECK: strh.w r1, [r8, r1]            @ encoding: [0x28,0xf8,0x01,0x10]
2743 @ CHECK: strh.w r4, [r5, r2]            @ encoding: [0x25,0xf8,0x02,0x40]
2744 @ CHECK: strh.w r6, [r0, r2, lsl #3]    @ encoding: [0x20,0xf8,0x32,0x60]
2745 @ CHECK: strh.w r8, [r8, r2, lsl #2]    @ encoding: [0x28,0xf8,0x22,0x80]
2746 @ CHECK: strh.w r7, [sp, r2, lsl #1]    @ encoding: [0x2d,0xf8,0x12,0x70]
2747 @ CHECK: strh.w r7, [sp, r2]            @ encoding: [0x2d,0xf8,0x02,0x70]
2748
2749
2750 @------------------------------------------------------------------------------
2751 @ STRHT
2752 @------------------------------------------------------------------------------
2753         strht r1, [r2]
2754         strht r1, [r8, #0]
2755         strht r1, [r8, #3]
2756         strht r1, [r8, #255]
2757
2758 @ CHECK: strht  r1, [r2]                @ encoding: [0x22,0xf8,0x00,0x1e]
2759 @ CHECK: strht  r1, [r8]                @ encoding: [0x28,0xf8,0x00,0x1e]
2760 @ CHECK: strht  r1, [r8, #3]            @ encoding: [0x28,0xf8,0x03,0x1e]
2761 @ CHECK: strht  r1, [r8, #255]          @ encoding: [0x28,0xf8,0xff,0x1e]
2762
2763
2764 @------------------------------------------------------------------------------
2765 @ STRT
2766 @------------------------------------------------------------------------------
2767         strt r1, [r2]
2768         strt r1, [r8, #0]
2769         strt r1, [r8, #3]
2770         strt r1, [r8, #255]
2771
2772 @ CHECK: strt   r1, [r2]                @ encoding: [0x42,0xf8,0x00,0x1e]
2773 @ CHECK: strt   r1, [r8]                @ encoding: [0x48,0xf8,0x00,0x1e]
2774 @ CHECK: strt   r1, [r8, #3]            @ encoding: [0x48,0xf8,0x03,0x1e]
2775 @ CHECK: strt   r1, [r8, #255]          @ encoding: [0x48,0xf8,0xff,0x1e]
2776
2777
2778 @------------------------------------------------------------------------------
2779 @ SUB (immediate)
2780 @------------------------------------------------------------------------------
2781         itet eq
2782         subeq r1, r2, #4
2783         subwne r5, r3, #1023
2784         subeq r4, r5, #293
2785         sub r2, sp, #1024
2786         sub r2, r8, #0xff00
2787         sub r2, r3, #257
2788         subw r2, r3, #257
2789         sub r12, r6, #0x100
2790         subw r12, r6, #0x100
2791         subs r1, r2, #0x1f0
2792         sub r2, #1
2793         sub r0, r0, #32
2794         subs r2, r2, #56
2795         subs r2, #56
2796
2797 @ CHECK: itet   eq                      @ encoding: [0x0a,0xbf]
2798 @ CHECK: subeq  r1, r2, #4              @ encoding: [0x11,0x1f]
2799 @ CHECK: subwne r5, r3, #1023           @ encoding: [0xa3,0xf2,0xff,0x35]
2800 @ CHECK: subweq r4, r5, #293            @ encoding: [0xa5,0xf2,0x25,0x14]
2801 @ CHECK: sub.w  r2, sp, #1024           @ encoding: [0xad,0xf5,0x80,0x62]
2802 @ CHECK: sub.w  r2, r8, #65280          @ encoding: [0xa8,0xf5,0x7f,0x42]
2803 @ CHECK: subw   r2, r3, #257            @ encoding: [0xa3,0xf2,0x01,0x12]
2804 @ CHECK: subw   r2, r3, #257            @ encoding: [0xa3,0xf2,0x01,0x12]
2805 @ CHECK: sub.w  r12, r6, #256           @ encoding: [0xa6,0xf5,0x80,0x7c]
2806 @ CHECK: subw   r12, r6, #256           @ encoding: [0xa6,0xf2,0x00,0x1c]
2807 @ CHECK: subs.w r1, r2, #496            @ encoding: [0xb2,0xf5,0xf8,0x71]
2808 @ CHECK: sub.w  r2, r2, #1              @ encoding: [0xa2,0xf1,0x01,0x02]
2809 @ CHECK: sub.w  r0, r0, #32             @ encoding: [0xa0,0xf1,0x20,0x00]
2810 @ CHECK: subs   r2, #56                 @ encoding: [0x38,0x3a]
2811 @ CHECK: subs   r2, #56                 @ encoding: [0x38,0x3a]
2812
2813
2814 @------------------------------------------------------------------------------
2815 @ SUB (register)
2816 @------------------------------------------------------------------------------
2817         sub r4, r5, r6
2818         sub r4, r5, r6, lsl #5
2819         sub r4, r5, r6, lsr #5
2820         sub.w r4, r5, r6, lsr #5
2821         sub r4, r5, r6, asr #5
2822         sub r4, r5, r6, ror #5
2823         sub.w r5, r2, r12, rrx
2824         sub r2, sp, ip
2825         sub sp, sp, ip
2826         sub sp, ip
2827         sub.w r2, sp, ip
2828         sub.w sp, sp, ip
2829         sub.w sp, ip
2830
2831 @ CHECK: sub.w  r4, r5, r6              @ encoding: [0xa5,0xeb,0x06,0x04]
2832 @ CHECK: sub.w  r4, r5, r6, lsl #5      @ encoding: [0xa5,0xeb,0x46,0x14]
2833 @ CHECK: sub.w  r4, r5, r6, lsr #5      @ encoding: [0xa5,0xeb,0x56,0x14]
2834 @ CHECK: sub.w  r4, r5, r6, lsr #5      @ encoding: [0xa5,0xeb,0x56,0x14]
2835 @ CHECK: sub.w  r4, r5, r6, asr #5      @ encoding: [0xa5,0xeb,0x66,0x14]
2836 @ CHECK: sub.w  r4, r5, r6, ror #5      @ encoding: [0xa5,0xeb,0x76,0x14]
2837 @ CHECK: sub.w r5, r2, r12, rrx         @ encoding: [0xa2,0xeb,0x3c,0x05]
2838 @ CHECK: sub.w  r2, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x02]
2839 @ CHECK: sub.w  sp, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x0d]
2840 @ CHECK: sub.w  sp, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x0d]
2841 @ CHECK: sub.w  r2, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x02]
2842 @ CHECK: sub.w  sp, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x0d]
2843 @ CHECK: sub.w  sp, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x0d]
2844
2845
2846 @------------------------------------------------------------------------------
2847 @ SVC
2848 @------------------------------------------------------------------------------
2849         svc #0
2850         ite eq
2851         svceq #255
2852         swine #33
2853
2854 @ CHECK: svc    #0                      @ encoding: [0x00,0xdf]
2855 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2856 @ CHECK: svceq  #255                    @ encoding: [0xff,0xdf]
2857 @ CHECK: svcne  #33                     @ encoding: [0x21,0xdf]
2858
2859
2860 @------------------------------------------------------------------------------
2861 @ SXTAB
2862 @------------------------------------------------------------------------------
2863         sxtab r2, r3, r4
2864         sxtab r4, r5, r6, ror #0
2865         it lt
2866         sxtablt r6, r2, r9, ror #8
2867         sxtab r5, r1, r4, ror #16
2868         sxtab r7, r8, r3, ror #24
2869
2870 @ CHECK: sxtab  r2, r3, r4              @ encoding: [0x43,0xfa,0x84,0xf2]
2871 @ CHECK: sxtab  r4, r5, r6              @ encoding: [0x45,0xfa,0x86,0xf4]
2872 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2873 @ CHECK: sxtablt r6, r2, r9, ror #8     @ encoding: [0x42,0xfa,0x99,0xf6]
2874 @ CHECK: sxtab  r5, r1, r4, ror #16     @ encoding: [0x41,0xfa,0xa4,0xf5]
2875 @ CHECK: sxtab  r7, r8, r3, ror #24     @ encoding: [0x48,0xfa,0xb3,0xf7]
2876
2877
2878 @------------------------------------------------------------------------------
2879 @ SXTAB16
2880 @------------------------------------------------------------------------------
2881         sxtab16 r6, r2, r7, ror #0
2882         sxtab16 r3, r5, r8, ror #8
2883         sxtab16 r3, r2, r1, ror #16
2884         ite ne
2885         sxtab16ne r0, r1, r4
2886         sxtab16eq r1, r2, r3, ror #24
2887
2888 @ CHECK: sxtab16 r6, r2, r7             @ encoding: [0x22,0xfa,0x87,0xf6]
2889 @ CHECK: sxtab16 r3, r5, r8, ror #8     @ encoding: [0x25,0xfa,0x98,0xf3]
2890 @ CHECK: sxtab16 r3, r2, r1, ror #16    @ encoding: [0x22,0xfa,0xa1,0xf3]
2891 @ CHECK: ite    ne                      @ encoding: [0x14,0xbf]
2892 @ CHECK: sxtab16ne r0, r1, r4           @ encoding: [0x21,0xfa,0x84,0xf0]
2893 @ CHECK: sxtab16eq r1, r2, r3, ror #24  @ encoding: [0x22,0xfa,0xb3,0xf1]
2894
2895
2896 @------------------------------------------------------------------------------
2897 @ SXTAH
2898 @------------------------------------------------------------------------------
2899         sxtah r1, r3, r9
2900         sxtah r3, r8, r3, ror #8
2901         sxtah r9, r3, r3, ror #24
2902         ite hi
2903         sxtahhi r6, r1, r6, ror #0
2904         sxtahls r2, r2, r4, ror #16
2905
2906 @ CHECK: sxtah  r1, r3, r9              @ encoding: [0x03,0xfa,0x89,0xf1]
2907 @ CHECK: sxtah  r3, r8, r3, ror #8      @ encoding: [0x08,0xfa,0x93,0xf3]
2908 @ CHECK: sxtah  r9, r3, r3, ror #24     @ encoding: [0x03,0xfa,0xb3,0xf9]
2909 @ CHECK: ite    hi                      @ encoding: [0x8c,0xbf]
2910 @ CHECK: sxtahhi r6, r1, r6             @ encoding: [0x01,0xfa,0x86,0xf6]
2911 @ CHECK: sxtahls r2, r2, r4, ror #16    @ encoding: [0x02,0xfa,0xa4,0xf2]
2912
2913
2914 @------------------------------------------------------------------------------
2915 @ SXTB
2916 @------------------------------------------------------------------------------
2917         sxtb r5, r6, ror #0
2918         sxtb r6, r9, ror #8
2919         sxtb r8, r3, ror #24
2920         ite ge
2921         sxtbge r2, r4
2922         sxtblt r5, r1, ror #16
2923         sxtb.w  r7, r8
2924
2925 @ CHECK: sxtb   r5, r6                  @ encoding: [0x75,0xb2]
2926 @ CHECK: sxtb.w r6, r9, ror #8          @ encoding: [0x4f,0xfa,0x99,0xf6]
2927 @ CHECK: sxtb.w r8, r3, ror #24         @ encoding: [0x4f,0xfa,0xb3,0xf8]
2928 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2929 @ CHECK: sxtbge r2, r4                  @ encoding: [0x62,0xb2]
2930 @ CHECK: sxtblt.w       r5, r1, ror #16 @ encoding: [0x4f,0xfa,0xa1,0xf5]
2931 @ CHECK: sxtb.w r7, r8                  @ encoding: [0x4f,0xfa,0x88,0xf7]
2932
2933
2934 @------------------------------------------------------------------------------
2935 @ SXTB16
2936 @------------------------------------------------------------------------------
2937         sxtb16 r1, r4
2938         sxtb16 r6, r7, ror #0
2939         sxtb16 r3, r1, ror #16
2940         ite cs
2941         sxtb16cs r3, r5, ror #8
2942         sxtb16lo r2, r3, ror #24
2943
2944 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x2f,0xfa,0x84,0xf1]
2945 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x2f,0xfa,0x87,0xf6]
2946 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x2f,0xfa,0xa1,0xf3]
2947 @ CHECK: ite    hs                      @ encoding: [0x2c,0xbf]
2948 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x2f,0xfa,0x95,0xf3]
2949 @ CHECK: sxtb16lo       r2, r3, ror #24 @ encoding: [0x2f,0xfa,0xb3,0xf2]
2950
2951
2952 @------------------------------------------------------------------------------
2953 @ SXTH
2954 @------------------------------------------------------------------------------
2955         sxth r1, r6, ror #0
2956         sxth r3, r8, ror #8
2957         sxth r9, r3, ror #24
2958         itt ne
2959         sxthne r3, r9
2960         sxthne r2, r2, ror #16
2961         sxth.w  r7, r8
2962
2963 @ CHECK: sxth   r1, r6                  @ encoding: [0x31,0xb2]
2964 @ CHECK: sxth.w r3, r8, ror #8          @ encoding: [0x0f,0xfa,0x98,0xf3]
2965 @ CHECK: sxth.w r9, r3, ror #24         @ encoding: [0x0f,0xfa,0xb3,0xf9]
2966 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
2967 @ CHECK: sxthne.w       r3, r9          @ encoding: [0x0f,0xfa,0x89,0xf3]
2968 @ CHECK: sxthne.w       r2, r2, ror #16 @ encoding: [0x0f,0xfa,0xa2,0xf2]
2969 @ CHECK: sxth.w r7, r8                  @ encoding: [0x0f,0xfa,0x88,0xf7]
2970
2971
2972 @------------------------------------------------------------------------------
2973 @ SXTB
2974 @------------------------------------------------------------------------------
2975         sxtb r5, r6, ror #0
2976         sxtb.w r6, r9, ror #8
2977         sxtb r8, r3, ror #24
2978         ite ge
2979         sxtbge r2, r4
2980         sxtblt r5, r1, ror #16
2981
2982 @ CHECK: sxtb   r5, r6                  @ encoding: [0x75,0xb2]
2983 @ CHECK: sxtb.w r6, r9, ror #8          @ encoding: [0x4f,0xfa,0x99,0xf6]
2984 @ CHECK: sxtb.w r8, r3, ror #24         @ encoding: [0x4f,0xfa,0xb3,0xf8]
2985 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2986 @ CHECK: sxtbge r2, r4                  @ encoding: [0x62,0xb2]
2987 @ CHECK: sxtblt.w       r5, r1, ror #16 @ encoding: [0x4f,0xfa,0xa1,0xf5]
2988
2989
2990 @------------------------------------------------------------------------------
2991 @ SXTB16
2992 @------------------------------------------------------------------------------
2993         sxtb16 r1, r4
2994         sxtb16 r6, r7, ror #0
2995         sxtb16 r3, r1, ror #16
2996         ite cs
2997         sxtb16cs r3, r5, ror #8
2998         sxtb16lo r2, r3, ror #24
2999
3000 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x2f,0xfa,0x84,0xf1]
3001 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x2f,0xfa,0x87,0xf6]
3002 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x2f,0xfa,0xa1,0xf3]
3003 @ CHECK: ite    hs                      @ encoding: [0x2c,0xbf]
3004 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x2f,0xfa,0x95,0xf3]
3005 @ CHECK: sxtb16lo       r2, r3, ror #24 @ encoding: [0x2f,0xfa,0xb3,0xf2]
3006
3007
3008 @------------------------------------------------------------------------------
3009 @ SXTH
3010 @------------------------------------------------------------------------------
3011         sxth r1, r6, ror #0
3012         sxth.w r3, r8, ror #8
3013         sxth r9, r3, ror #24
3014         itt ne
3015         sxthne r3, r9
3016         sxthne r2, r2, ror #16
3017
3018 @ CHECK: sxth   r1, r6                  @ encoding: [0x31,0xb2]
3019 @ CHECK: sxth.w r3, r8, ror #8          @ encoding: [0x0f,0xfa,0x98,0xf3]
3020 @ CHECK: sxth.w r9, r3, ror #24         @ encoding: [0x0f,0xfa,0xb3,0xf9]
3021 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
3022 @ CHECK: sxthne.w       r3, r9          @ encoding: [0x0f,0xfa,0x89,0xf3]
3023 @ CHECK: sxthne.w       r2, r2, ror #16 @ encoding: [0x0f,0xfa,0xa2,0xf2]
3024
3025
3026 @------------------------------------------------------------------------------
3027 @ TBB/TBH
3028 @------------------------------------------------------------------------------
3029         tbb [r3, r8]
3030         tbh [r3, r8, lsl #1]
3031         it eq
3032         tbbeq [r3, r8]
3033         it cs
3034         tbhcs [r3, r8, lsl #1]
3035
3036 @ CHECK: tbb    [r3, r8]                @ encoding: [0xd3,0xe8,0x08,0xf0]
3037 @ CHECK: tbh    [r3, r8, lsl #1]        @ encoding: [0xd3,0xe8,0x18,0xf0]
3038 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
3039 @ CHECK: tbbeq  [r3, r8]                @ encoding: [0xd3,0xe8,0x08,0xf0]
3040 @ CHECK: it     hs                      @ encoding: [0x28,0xbf]
3041 @ CHECK: tbhhs  [r3, r8, lsl #1]        @ encoding: [0xd3,0xe8,0x18,0xf0]
3042
3043
3044 @------------------------------------------------------------------------------
3045 @ TEQ
3046 @------------------------------------------------------------------------------
3047         teq r5, #0xf000
3048         teq r4, r5
3049         teq r4, r5, lsl #5
3050         teq r4, r5, lsr #5
3051         teq r4, r5, lsr #5
3052         teq r4, r5, asr #5
3053         teq r4, r5, ror #5
3054
3055 @ CHECK: teq.w  r5, #61440              @ encoding: [0x95,0xf4,0x70,0x4f]
3056 @ CHECK: teq.w  r4, r5                  @ encoding: [0x94,0xea,0x05,0x0f]
3057 @ CHECK: teq.w  r4, r5, lsl #5          @ encoding: [0x94,0xea,0x45,0x1f]
3058 @ CHECK: teq.w  r4, r5, lsr #5          @ encoding: [0x94,0xea,0x55,0x1f]
3059 @ CHECK: teq.w  r4, r5, lsr #5          @ encoding: [0x94,0xea,0x55,0x1f]
3060 @ CHECK: teq.w  r4, r5, asr #5          @ encoding: [0x94,0xea,0x65,0x1f]
3061 @ CHECK: teq.w  r4, r5, ror #5          @ encoding: [0x94,0xea,0x75,0x1f]
3062
3063
3064 @------------------------------------------------------------------------------
3065 @ TST
3066 @------------------------------------------------------------------------------
3067         tst r5, #0xf000
3068         tst r2, r5
3069         tst r3, r12, lsl #5
3070         tst r4, r11, lsr #4
3071         tst r5, r10, lsr #12
3072         tst r6, r9, asr #30
3073         tst r7, r8, ror #2
3074
3075 @ CHECK: tst.w  r5, #61440              @ encoding: [0x15,0xf4,0x70,0x4f]
3076 @ CHECK: tst    r2, r5                  @ encoding: [0x2a,0x42]
3077 @ CHECK: tst.w  r3, r12, lsl #5         @ encoding: [0x13,0xea,0x4c,0x1f]
3078 @ CHECK: tst.w  r4, r11, lsr #4         @ encoding: [0x14,0xea,0x1b,0x1f]
3079 @ CHECK: tst.w  r5, r10, lsr #12        @ encoding: [0x15,0xea,0x1a,0x3f]
3080 @ CHECK: tst.w  r6, r9, asr #30         @ encoding: [0x16,0xea,0xa9,0x7f]
3081 @ CHECK: tst.w  r7, r8, ror #2          @ encoding: [0x17,0xea,0xb8,0x0f]
3082
3083
3084 @------------------------------------------------------------------------------
3085 @ UADD16/UADD8
3086 @------------------------------------------------------------------------------
3087         uadd16 r1, r2, r3
3088         uadd8 r1, r2, r3
3089         ite gt
3090         uadd16gt r1, r2, r3
3091         uadd8le r1, r2, r3
3092
3093 @ CHECK: uadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x43,0xf1]
3094 @ CHECK: uadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x43,0xf1]
3095 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3096 @ CHECK: uadd16gt       r1, r2, r3      @ encoding: [0x92,0xfa,0x43,0xf1]
3097 @ CHECK: uadd8le        r1, r2, r3      @ encoding: [0x82,0xfa,0x43,0xf1]
3098
3099
3100 @------------------------------------------------------------------------------
3101 @ UASX
3102 @------------------------------------------------------------------------------
3103         uasx r9, r12, r0
3104         it eq
3105         uasxeq r9, r12, r0
3106         uaddsubx r9, r12, r0
3107         it eq
3108         uaddsubxeq r9, r12, r0
3109
3110 @ CHECK: uasx   r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
3111 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
3112 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
3113 @ CHECK: uasx   r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
3114 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
3115 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
3116
3117
3118 @------------------------------------------------------------------------------
3119 @ UBFX
3120 @------------------------------------------------------------------------------
3121         ubfx r4, r5, #16, #1
3122         it gt
3123         ubfxgt r4, r5, #16, #16
3124
3125 @ CHECK: ubfx   r4, r5, #16, #1         @ encoding: [0xc5,0xf3,0x00,0x44]
3126 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
3127 @ CHECK: ubfxgt r4, r5, #16, #16        @ encoding: [0xc5,0xf3,0x0f,0x44]
3128
3129
3130 @------------------------------------------------------------------------------
3131 @ UHADD16/UHADD8
3132 @------------------------------------------------------------------------------
3133         uhadd16 r4, r8, r2
3134         uhadd8 r4, r8, r2
3135         itt gt
3136         uhadd16gt r4, r8, r2
3137         uhadd8gt r4, r8, r2
3138
3139 @ CHECK: uhadd16        r4, r8, r2      @ encoding: [0x98,0xfa,0x62,0xf4]
3140 @ CHECK: uhadd8 r4, r8, r2              @ encoding: [0x88,0xfa,0x62,0xf4]
3141 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
3142 @ CHECK: uhadd16gt      r4, r8, r2      @ encoding: [0x98,0xfa,0x62,0xf4]
3143 @ CHECK: uhadd8gt       r4, r8, r2      @ encoding: [0x88,0xfa,0x62,0xf4]
3144
3145
3146 @------------------------------------------------------------------------------
3147 @ UHASX/UHSAX
3148 @------------------------------------------------------------------------------
3149         uhasx r4, r1, r5
3150         uhsax r5, r6, r6
3151         itt gt
3152         uhasxgt r6, r9, r8
3153         uhsaxgt r7, r8, r12
3154         uhaddsubx r4, r1, r5
3155         uhsubaddx r5, r6, r6
3156         itt gt
3157         uhaddsubxgt r6, r9, r8
3158         uhsubaddxgt r7, r8, r12
3159
3160 @ CHECK: uhasx  r4, r1, r5              @ encoding: [0xa1,0xfa,0x65,0xf4]
3161 @ CHECK: uhsax  r5, r6, r6              @ encoding: [0xe6,0xfa,0x66,0xf5]
3162 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
3163 @ CHECK: uhasxgt r6, r9, r8             @ encoding: [0xa9,0xfa,0x68,0xf6]
3164 @ CHECK: uhsaxgt r7, r8, r12            @ encoding: [0xe8,0xfa,0x6c,0xf7]
3165 @ CHECK: uhasx  r4, r1, r5              @ encoding: [0xa1,0xfa,0x65,0xf4]
3166 @ CHECK: uhsax  r5, r6, r6              @ encoding: [0xe6,0xfa,0x66,0xf5]
3167 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
3168 @ CHECK: uhasxgt r6, r9, r8             @ encoding: [0xa9,0xfa,0x68,0xf6]
3169 @ CHECK: uhsaxgt r7, r8, r12            @ encoding: [0xe8,0xfa,0x6c,0xf7]
3170
3171
3172 @------------------------------------------------------------------------------
3173 @ UHSUB16/UHSUB8
3174 @------------------------------------------------------------------------------
3175         uhsub16 r5, r8, r3
3176         uhsub8 r1, r7, r6
3177         itt lt
3178         uhsub16lt r4, r9, r12
3179         uhsub8lt r3, r1, r5
3180
3181 @ CHECK: uhsub16        r5, r8, r3      @ encoding: [0xd8,0xfa,0x63,0xf5]
3182 @ CHECK: uhsub8 r1, r7, r6              @ encoding: [0xc7,0xfa,0x66,0xf1]
3183 @ CHECK: itt    lt                      @ encoding: [0xbc,0xbf]
3184 @ CHECK: uhsub16lt      r4, r9, r12     @ encoding: [0xd9,0xfa,0x6c,0xf4]
3185 @ CHECK: uhsub8lt       r3, r1, r5      @ encoding: [0xc1,0xfa,0x65,0xf3]
3186
3187
3188 @------------------------------------------------------------------------------
3189 @ UMAAL
3190 @------------------------------------------------------------------------------
3191         umaal r3, r4, r5, r6
3192         it lt
3193         umaallt r3, r4, r5, r6
3194
3195 @ CHECK: umaal  r3, r4, r5, r6          @ encoding: [0xe5,0xfb,0x66,0x34]
3196 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
3197 @ CHECK: umaallt        r3, r4, r5, r6  @ encoding: [0xe5,0xfb,0x66,0x34]
3198
3199
3200 @------------------------------------------------------------------------------
3201 @ UMLAL
3202 @------------------------------------------------------------------------------
3203         umlal r2, r4, r6, r8
3204         it gt
3205         umlalgt r6, r1, r2, r6
3206
3207 @ CHECK: umlal  r2, r4, r6, r8          @ encoding: [0xe6,0xfb,0x08,0x24]
3208 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
3209 @ CHECK: umlalgt        r6, r1, r2, r6  @ encoding: [0xe2,0xfb,0x06,0x61]
3210
3211
3212 @------------------------------------------------------------------------------
3213 @ UMULL
3214 @------------------------------------------------------------------------------
3215         umull r2, r4, r6, r8
3216         it gt
3217         umullgt r6, r1, r2, r6
3218
3219 @ CHECK: umull  r2, r4, r6, r8          @ encoding: [0xa6,0xfb,0x08,0x24]
3220 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
3221 @ CHECK: umullgt        r6, r1, r2, r6  @ encoding: [0xa2,0xfb,0x06,0x61]
3222
3223
3224 @------------------------------------------------------------------------------
3225 @ UQADD16/UQADD8
3226 @------------------------------------------------------------------------------
3227         uqadd16 r1, r2, r3
3228         uqadd8 r3, r4, r8
3229         ite gt
3230         uqadd16gt r4, r7, r9
3231         uqadd8le r8, r1, r2
3232
3233 @ CHECK: uqadd16        r1, r2, r3      @ encoding: [0x92,0xfa,0x53,0xf1]
3234 @ CHECK: uqadd8 r3, r4, r8              @ encoding: [0x84,0xfa,0x58,0xf3]
3235 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3236 @ CHECK: uqadd16gt      r4, r7, r9      @ encoding: [0x97,0xfa,0x59,0xf4]
3237 @ CHECK: uqadd8le       r8, r1, r2      @ encoding: [0x81,0xfa,0x52,0xf8]
3238
3239
3240 @------------------------------------------------------------------------------
3241 @ UQASX/UQSAX
3242 @------------------------------------------------------------------------------
3243         uqasx r1, r2, r3
3244         uqsax r3, r4, r8
3245         ite gt
3246         uqasxgt r4, r7, r9
3247         uqsaxle r8, r1, r2
3248
3249         uqaddsubx r1, r2, r3
3250         uqsubaddx r3, r4, r8
3251         ite gt
3252         uqaddsubxgt r4, r7, r9
3253         uqsubaddxle r8, r1, r2
3254
3255 @ CHECK: uqasx  r1, r2, r3              @ encoding: [0xa2,0xfa,0x53,0xf1]
3256 @ CHECK: uqsax  r3, r4, r8              @ encoding: [0xe4,0xfa,0x58,0xf3]
3257 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3258 @ CHECK: uqasxgt r4, r7, r9             @ encoding: [0xa7,0xfa,0x59,0xf4]
3259 @ CHECK: uqsaxle r8, r1, r2             @ encoding: [0xe1,0xfa,0x52,0xf8]
3260
3261 @ CHECK: uqasx  r1, r2, r3              @ encoding: [0xa2,0xfa,0x53,0xf1]
3262 @ CHECK: uqsax  r3, r4, r8              @ encoding: [0xe4,0xfa,0x58,0xf3]
3263 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3264 @ CHECK: uqasxgt r4, r7, r9             @ encoding: [0xa7,0xfa,0x59,0xf4]
3265 @ CHECK: uqsaxle r8, r1, r2             @ encoding: [0xe1,0xfa,0x52,0xf8]
3266
3267
3268 @------------------------------------------------------------------------------
3269 @ UQSUB16/UQSUB8
3270 @------------------------------------------------------------------------------
3271         uqsub8 r8, r2, r9
3272         uqsub16 r1, r9, r7
3273         ite gt
3274         uqsub8gt r3, r1, r6
3275         uqsub16le r4, r6, r4
3276
3277 @ CHECK: uqsub8 r8, r2, r9              @ encoding: [0xc2,0xfa,0x59,0xf8]
3278 @ CHECK: uqsub16 r1, r9, r7             @ encoding: [0xd9,0xfa,0x57,0xf1]
3279 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3280 @ CHECK: uqsub8gt       r3, r1, r6      @ encoding: [0xc1,0xfa,0x56,0xf3]
3281 @ CHECK: uqsub16le      r4, r6, r4      @ encoding: [0xd6,0xfa,0x54,0xf4]
3282
3283
3284 @------------------------------------------------------------------------------
3285 @ UQSUB16/UQSUB8
3286 @------------------------------------------------------------------------------
3287         usad8 r1, r9, r7
3288         usada8 r8, r2, r9, r12
3289         ite gt
3290         usada8gt r3, r1, r6, r9
3291         usad8le r4, r6, r4
3292
3293 @ CHECK: usad8  r1, r9, r7              @ encoding: [0x79,0xfb,0x07,0xf1]
3294 @ CHECK: usada8 r8, r2, r9, r12         @ encoding: [0x72,0xfb,0x09,0xc8]
3295 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3296 @ CHECK: usada8gt       r3, r1, r6, r9  @ encoding: [0x71,0xfb,0x06,0x93]
3297 @ CHECK: usad8le        r4, r6, r4      @ encoding: [0x76,0xfb,0x04,0xf4]
3298
3299
3300 @------------------------------------------------------------------------------
3301 @ USAT
3302 @------------------------------------------------------------------------------
3303         usat    r8, #1, r10
3304         usat    r8, #4, r10, lsl #0
3305         usat    r8, #5, r10, lsl #31
3306         usat    r8, #16, r10, asr #1
3307
3308 @ CHECK: usat   r8, #1, r10             @ encoding: [0x8a,0xf3,0x01,0x08]
3309 @ CHECK: usat   r8, #4, r10             @ encoding: [0x8a,0xf3,0x04,0x08]
3310 @ CHECK: usat   r8, #5, r10, lsl #31    @ encoding: [0x8a,0xf3,0xc5,0x78]
3311 @ CHECK: usat   r8, #16, r10, asr #1    @ encoding: [0xaa,0xf3,0x50,0x08]
3312
3313
3314 @------------------------------------------------------------------------------
3315 @ USAT16
3316 @------------------------------------------------------------------------------
3317         usat16  r2, #2, r7
3318         usat16  r3, #15, r5
3319
3320 @ CHECK: usat16 r2, #2, r7              @ encoding: [0xa7,0xf3,0x02,0x02]
3321 @ CHECK: usat16 r3, #15, r5             @ encoding: [0xa5,0xf3,0x0f,0x03]
3322
3323
3324 @------------------------------------------------------------------------------
3325 @ USAX
3326 @------------------------------------------------------------------------------
3327         usax r2, r3, r4
3328         it ne
3329         usaxne r6, r1, r9
3330         usubaddx r2, r3, r4
3331         it ne
3332         usubaddxne r6, r1, r9
3333
3334 @ CHECK: usax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x44,0xf2]
3335 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3336 @ CHECK: usaxne r6, r1, r9              @ encoding: [0xe1,0xfa,0x49,0xf6]
3337 @ CHECK: usax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x44,0xf2]
3338 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3339 @ CHECK: usaxne r6, r1, r9              @ encoding: [0xe1,0xfa,0x49,0xf6]
3340
3341
3342 @------------------------------------------------------------------------------
3343 @ USUB16/USUB8
3344 @------------------------------------------------------------------------------
3345         usub16 r4, r2, r7
3346         usub8 r1, r8, r5
3347         ite hi
3348         usub16hi r1, r1, r3
3349         usub8ls r9, r2, r3
3350
3351 @ CHECK: usub16 r4, r2, r7              @ encoding: [0xd2,0xfa,0x47,0xf4]
3352 @ CHECK: usub8  r1, r8, r5              @ encoding: [0xc8,0xfa,0x45,0xf1]
3353 @ CHECK: ite    hi                      @ encoding: [0x8c,0xbf]
3354 @ CHECK: usub16hi       r1, r1, r3      @ encoding: [0xd1,0xfa,0x43,0xf1]
3355 @ CHECK: usub8ls        r9, r2, r3      @ encoding: [0xc2,0xfa,0x43,0xf9]
3356
3357
3358 @------------------------------------------------------------------------------
3359 @ UXTAB
3360 @------------------------------------------------------------------------------
3361         uxtab r2, r3, r4
3362         uxtab r4, r5, r6, ror #0
3363         it lt
3364         uxtablt r6, r2, r9, ror #8
3365         uxtab r5, r1, r4, ror #16
3366         uxtab r7, r8, r3, ror #24
3367
3368 @ CHECK: uxtab  r2, r3, r4              @ encoding: [0x53,0xfa,0x84,0xf2]
3369 @ CHECK: uxtab  r4, r5, r6              @ encoding: [0x55,0xfa,0x86,0xf4]
3370 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
3371 @ CHECK: uxtablt r6, r2, r9, ror #8     @ encoding: [0x52,0xfa,0x99,0xf6]
3372 @ CHECK: uxtab  r5, r1, r4, ror #16     @ encoding: [0x51,0xfa,0xa4,0xf5]
3373 @ CHECK: uxtab  r7, r8, r3, ror #24     @ encoding: [0x58,0xfa,0xb3,0xf7]
3374
3375
3376 @------------------------------------------------------------------------------
3377 @ UXTAB16
3378 @------------------------------------------------------------------------------
3379         it ge
3380         uxtab16ge r0, r1, r4
3381         uxtab16 r6, r2, r7, ror #0
3382         uxtab16 r3, r5, r8, ror #8
3383         uxtab16 r3, r2, r1, ror #16
3384         it eq
3385         uxtab16eq r1, r2, r3, ror #24
3386
3387 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3388 @ CHECK: uxtab16ge      r0, r1, r4      @ encoding: [0x31,0xfa,0x84,0xf0]
3389 @ CHECK: uxtab16 r6, r2, r7             @ encoding: [0x32,0xfa,0x87,0xf6]
3390 @ CHECK: uxtab16 r3, r5, r8, ror #8     @ encoding: [0x35,0xfa,0x98,0xf3]
3391 @ CHECK: uxtab16 r3, r2, r1, ror #16    @ encoding: [0x32,0xfa,0xa1,0xf3]
3392 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
3393 @ CHECK: uxtab16eq r1, r2, r3, ror #24  @ encoding: [0x32,0xfa,0xb3,0xf1]
3394
3395
3396 @------------------------------------------------------------------------------
3397 @ UXTAH
3398 @------------------------------------------------------------------------------
3399         uxtah r1, r3, r9
3400         it hi
3401         uxtahhi r6, r1, r6, ror #0
3402         uxtah r3, r8, r3, ror #8
3403         it lo
3404         uxtahlo r2, r2, r4, ror #16
3405         uxtah r9, r3, r3, ror #24
3406
3407 @ CHECK: uxtah  r1, r3, r9              @ encoding: [0x13,0xfa,0x89,0xf1]
3408 @ CHECK: it     hi                      @ encoding: [0x88,0xbf]
3409 @ CHECK: uxtahhi r6, r1, r6             @ encoding: [0x11,0xfa,0x86,0xf6]
3410 @ CHECK: uxtah  r3, r8, r3, ror #8      @ encoding: [0x18,0xfa,0x93,0xf3]
3411 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
3412 @ CHECK: uxtahlo r2, r2, r4, ror #16    @ encoding: [0x12,0xfa,0xa4,0xf2]
3413 @ CHECK: uxtah  r9, r3, r3, ror #24     @ encoding: [0x13,0xfa,0xb3,0xf9]
3414
3415
3416 @------------------------------------------------------------------------------
3417 @ UXTB
3418 @------------------------------------------------------------------------------
3419         it ge
3420         uxtbge r2, r4
3421         uxtb r5, r6, ror #0
3422         uxtb r6, r9, ror #8
3423         it cc
3424         uxtbcc r5, r1, ror #16
3425         uxtb r8, r3, ror #24
3426         uxtb.w  r7, r8
3427
3428 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3429 @ CHECK: uxtbge r2, r4                  @ encoding: [0xe2,0xb2]
3430 @ CHECK: uxtb   r5, r6                  @ encoding: [0xf5,0xb2]
3431 @ CHECK: uxtb.w r6, r9, ror #8          @ encoding: [0x5f,0xfa,0x99,0xf6]
3432 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
3433 @ CHECK: uxtblo.w       r5, r1, ror #16 @ encoding: [0x5f,0xfa,0xa1,0xf5]
3434 @ CHECK: uxtb.w r8, r3, ror #24         @ encoding: [0x5f,0xfa,0xb3,0xf8]
3435 @ CHECK: uxtb.w r7, r8                  @ encoding: [0x5f,0xfa,0x88,0xf7]
3436
3437
3438 @------------------------------------------------------------------------------
3439 @ UXTB16
3440 @------------------------------------------------------------------------------
3441         uxtb16 r1, r4
3442         uxtb16 r6, r7, ror #0
3443         it cs
3444         uxtb16cs r3, r5, ror #8
3445         uxtb16 r3, r1, ror #16
3446         it ge
3447         uxtb16ge r2, r3, ror #24
3448
3449 @ CHECK: uxtb16 r1, r4                  @ encoding: [0x3f,0xfa,0x84,0xf1]
3450 @ CHECK: uxtb16 r6, r7                  @ encoding: [0x3f,0xfa,0x87,0xf6]
3451 @ CHECK: it     hs                      @ encoding: [0x28,0xbf]
3452 @ CHECK: uxtb16hs       r3, r5, ror #8  @ encoding: [0x3f,0xfa,0x95,0xf3]
3453 @ CHECK: uxtb16 r3, r1, ror #16         @ encoding: [0x3f,0xfa,0xa1,0xf3]
3454 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3455 @ CHECK: uxtb16ge       r2, r3, ror #24 @ encoding: [0x3f,0xfa,0xb3,0xf2]
3456
3457
3458 @------------------------------------------------------------------------------
3459 @ UXTH
3460 @------------------------------------------------------------------------------
3461         it ne
3462         uxthne r3, r9
3463         uxth r1, r6, ror #0
3464         uxth r3, r8, ror #8
3465         it le
3466         uxthle r2, r2, ror #16
3467         uxth r9, r3, ror #24
3468         uxth.w  r7, r8
3469
3470 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3471 @ CHECK: uxthne.w       r3, r9          @ encoding: [0x1f,0xfa,0x89,0xf3]
3472 @ CHECK: uxth   r1, r6                  @ encoding: [0xb1,0xb2]
3473 @ CHECK: uxth.w r3, r8, ror #8          @ encoding: [0x1f,0xfa,0x98,0xf3]
3474 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
3475 @ CHECK: uxthle.w       r2, r2, ror #16 @ encoding: [0x1f,0xfa,0xa2,0xf2]
3476 @ CHECK: uxth.w r9, r3, ror #24         @ encoding: [0x1f,0xfa,0xb3,0xf9]
3477 @ CHECK: uxth.w r7, r8                  @ encoding: [0x1f,0xfa,0x88,0xf7]
3478
3479 @------------------------------------------------------------------------------
3480 @ WFE/WFI/YIELD/HINT
3481 @------------------------------------------------------------------------------
3482         wfe
3483         wfi
3484         yield
3485         itet lt
3486         wfelt
3487         wfige
3488         yieldlt
3489         hint.w #4
3490         hint #3
3491         hint #2
3492         hint #1
3493         hint #0
3494
3495 @ CHECK: wfe                            @ encoding: [0x20,0xbf]
3496 @ CHECK: wfi                            @ encoding: [0x30,0xbf]
3497 @ CHECK: yield                          @ encoding: [0x10,0xbf]
3498 @ CHECK: itet   lt                      @ encoding: [0xb6,0xbf]
3499 @ CHECK: wfelt                          @ encoding: [0x20,0xbf]
3500 @ CHECK: wfige                          @ encoding: [0x30,0xbf]
3501 @ CHECK: yieldlt                        @ encoding: [0x10,0xbf]
3502 @ CHECK: sev.w                          @ encoding: [0xaf,0xf3,0x04,0x80]
3503 @ CHECK: wfi.w                          @ encoding: [0xaf,0xf3,0x03,0x80]
3504 @ CHECK: wfe.w                          @ encoding: [0xaf,0xf3,0x02,0x80]
3505 @ CHECK: yield.w                        @ encoding: [0xaf,0xf3,0x01,0x80]
3506 @ CHECK: nop.w                          @ encoding: [0xaf,0xf3,0x00,0x80]
3507
3508
3509 @------------------------------------------------------------------------------
3510 @ Alternate syntax for LDR*(literal) encodings
3511 @------------------------------------------------------------------------------
3512         ldr r11, [pc, #-22]
3513         ldrb r11, [pc, #-22]
3514         ldrh r11, [pc, #-22]
3515         ldrsb r11, [pc, #-22]
3516         ldrsh r11, [pc, #-22]
3517
3518         ldr.w r11, [pc, #-22]
3519         ldrb.w r11, [pc, #-22]
3520         ldrh.w r11, [pc, #-22]
3521         ldrsb.w r11, [pc, #-22]
3522         ldrsh.w r11, [pc, #-22]
3523
3524 @ CHECK: ldr.w  r11, [pc, #-22]         @ encoding: [0x5f,0xf8,0x16,0xb0]
3525 @ CHECK: ldrb.w r11, [pc, #-22]         @ encoding: [0x1f,0xf8,0x16,0xb0]
3526 @ CHECK: ldrh.w r11, [pc, #-22]         @ encoding: [0x3f,0xf8,0x16,0xb0]
3527 @ CHECK: ldrsb.w r11, [pc, #-22]        @ encoding: [0x1f,0xf9,0x16,0xb0]
3528 @ CHECK: ldrsh.w r11, [pc, #-22]        @ encoding: [0x3f,0xf9,0x16,0xb0]
3529 @ CHECK: ldr.w  r11, [pc, #-22]         @ encoding: [0x5f,0xf8,0x16,0xb0]
3530 @ CHECK: ldrb.w r11, [pc, #-22]         @ encoding: [0x1f,0xf8,0x16,0xb0]
3531 @ CHECK: ldrh.w r11, [pc, #-22]         @ encoding: [0x3f,0xf8,0x16,0xb0]
3532 @ CHECK: ldrsb.w r11, [pc, #-22]        @ encoding: [0x1f,0xf9,0x16,0xb0]
3533 @ CHECK: ldrsh.w r11, [pc, #-22]        @ encoding: [0x3f,0xf9,0x16,0xb0]
3534
3535 @ rdar://12596361
3536         ldr r1, [pc, #12]
3537 @ CHECK: ldr.n r1, [pc, #12]        @ encoding: [0x03,0x49]