xref: /llvm-project/llvm/test/MC/Disassembler/ARM/thumb2.txt (revision 7f85a3804bc4dfff5b8ac1f8046a0906d93026ff)
1# RUN: llvm-mc -triple=thumbv7-apple-darwin -mcpu=cortex-a8 -disassemble < %s | FileCheck %s
2
3#------------------------------------------------------------------------------
4# ADC (immediate)
5#------------------------------------------------------------------------------
6# CHECK: adc r0, r1, #4
7# CHECK: adcs r0, r1, #0
8# CHECK: adc r1, r2, #255
9# CHECK: adc r3, r7, #5570645
10# CHECK: adc r8, r12, #2852170240
11# CHECK: adc r9, r7, #2779096485
12# CHECK: adc r5, r3, #2264924160
13# CHECK: adc r4, r2, #2139095040
14# CHECK: adc r4, r2, #1664
15# CHECK: adc	r0, r0, #1
16# CHECK: adc	r1, r1, #2139095040
17
180x41 0xf1 0x04 0x00
190x51 0xf1 0x00 0x00
200x42 0xf1 0xff 0x01
210x47 0xf1 0x55 0x13
220x4c 0xf1 0xaa 0x28
230x47 0xf1 0xa5 0x39
240x43 0xf1 0x07 0x45
250x42 0xf1 0xff 0x44
260x42 0xf5 0xd0 0x64
270x40 0xf1 0x01 0x00
280x41 0xf1 0xff 0x41
29
30#------------------------------------------------------------------------------
31# ADC (register)
32#------------------------------------------------------------------------------
33# CHECK: adc.w r4, r5, r6
34# CHECK: adcs.w r4, r5, r6
35# CHECK: adc.w r9, r1, r3
36# CHECK: adcs.w r9, r1, r3
37# CHECK: adc.w r0, r1, r3, ror #4
38# CHECK: adcs.w  r0, r1, r3, lsl #7
39# CHECK: adc.w r0, r1, r3, lsr #31
40# CHECK: adcs.w  r0, r1, r3, asr #32
41# CHECK: adc.w	r4, r4, r5
42# CHECK: adc.w	r9, r9, r1
43# CHECK: adc.w	r0, r0, r1, ror #4
44# CHECK: adc.w	r0, r0, r1, lsr #31
45
460x45 0xeb 0x06 0x04
470x55 0xeb 0x06 0x04
480x41 0xeb 0x03 0x09
490x51 0xeb 0x03 0x09
500x41 0xeb 0x33 0x10
510x51 0xeb 0xc3 0x10
520x41 0xeb 0xd3 0x70
530x51 0xeb 0x23 0x00
540x44 0xeb 0x05 0x04
550x49 0xeb 0x01 0x09
560x40 0xeb 0x31 0x10
570x40 0xeb 0xd1 0x70
58
59
60#------------------------------------------------------------------------------
61# ADD (immediate)
62#------------------------------------------------------------------------------
63# CHECK: itet eq
64# CHECK: addeq r1, r2, #4
65# CHECK: addwne r5, r3, #1023
66# CHECK: addweq r4, r5, #293
67# CHECK: add.w r2, sp, #1024
68# CHECK: add.w r2, r8, #65280
69# CHECK: addw r2, r3, #257
70# CHECK: add.w r12, r6, #256
71# CHECK: addw r12, r6, #256
72# CHECK: adds.w r1, r2, #496
73
740x0a 0xbf
750x11 0x1d
760x03 0xf2 0xff 0x35
770x05 0xf2 0x25 0x14
780x0d 0xf5 0x80 0x62
790x08 0xf5 0x7f 0x42
800x03 0xf2 0x01 0x12
810x06 0xf5 0x80 0x7c
820x06 0xf2 0x00 0x1c
830x12 0xf5 0xf8 0x71
84
85
86#------------------------------------------------------------------------------
87# ADD (register)
88#------------------------------------------------------------------------------
89# CHECK: add.w r1, r2, r8
90# CHECK: add.w r5, r9, r2, asr #32
91# CHECK: adds.w r7, r3, r1, lsl #31
92# CHECK: adds.w r0, r3, r6, lsr #25
93# CHECK: add.w r4, r8, r1, ror #12
94
950x02 0xeb 0x08 0x01
960x09 0xeb 0x22 0x05
970x13 0xeb 0xc1 0x77
980x13 0xeb 0x56 0x60
990x08 0xeb 0x31 0x34
100
101
102#------------------------------------------------------------------------------
103# ADR
104#------------------------------------------------------------------------------
105# CHECK: adr.w r11, #-3270
106# CHECK-NEXT: adr.w r11, #-826
107# CHECK-NEXT: subw r1, pc, #0
108# CHECK-NEXT: adr.w   r0, #1024
1090xaf 0xf6 0xc6 0x4b
1100xaf 0xf2 0x3a 0x3b
1110xaf 0xf2 0x00 0x01
1120x0f,0xf2,0x00,0x40
113#------------------------------------------------------------------------------
114# AND (immediate)
115#------------------------------------------------------------------------------
116# CHECK: and r2, r5, #1044480
117# CHECK: ands r3, r12, #15
118# CHECK: and r1, r1, #255
119
1200x05 0xf4 0x7f 0x22
1210x1c 0xf0 0x0f 0x03
1220x01 0xf0 0xff 0x01
123
124
125#------------------------------------------------------------------------------
126# AND (register)
127#------------------------------------------------------------------------------
128# CHECK: and.w r4, r9, r8
129# CHECK: and.w r1, r4, r8, asr #3
130# CHECK: ands.w r2, r1, r7, lsl #1
131# CHECK: ands.w r4, r5, r2, lsr #20
132# CHECK: and.w r9, r12, r1, ror #17
133
1340x09 0xea 0x08 0x04
1350x04 0xea 0xe8 0x01
1360x11 0xea 0x47 0x02
1370x15 0xea 0x12 0x54
1380x0c 0xea 0x71 0x49
139
140#------------------------------------------------------------------------------
141# ASR (immediate)
142#------------------------------------------------------------------------------
143# CHECK: asr.w r2, r3, #12
144# CHECK: asrs.w r8, r3, #32
145# CHECK: asrs.w r2, r3, #1
146# CHECK: asr.w r2, r3, #4
147# CHECK: asrs.w r2, r12, #15
148
149# CHECK: asr.w r3, r3, #19
150# CHECK: asrs.w r8, r8, #2
151# CHECK: asrs.w r7, r7, #5
152# CHECK: asr.w r12, r12, #21
153
1540x4f 0xea 0x23 0x32
1550x5f 0xea 0x23 0x08
1560x5f 0xea 0x63 0x02
1570x4f 0xea 0x23 0x12
1580x5f 0xea 0xec 0x32
159
1600x4f 0xea 0xe3 0x43
1610x5f 0xea 0xa8 0x08
1620x5f 0xea 0x67 0x17
1630x4f 0xea 0x6c 0x5c
164
165
166#------------------------------------------------------------------------------
167# ASR (register)
168#------------------------------------------------------------------------------
169# CHECK: asr.w r3, r4, r2
170# CHECK: asr.w r1, r1, r2
171# CHECK: asrs.w r3, r4, r8
172
1730x44 0xfa 0x02 0xf3
1740x41 0xfa 0x02 0xf1
1750x54 0xfa 0x08 0xf3
176
177#------------------------------------------------------------------------------
178# B
179#------------------------------------------------------------------------------
180# CHECK: bmi.w   #-183396
181
1820x13 0xf5 0xce 0xa9
183
184# CHECK: b.w   #208962
185# CHECK: b.w   #-16777216
186
1870x33 0xf0 0x21 0xb8 # rdar://12585795
1880x00 0xf4 0x00 0x90
189
190#------------------------------------------------------------------------------
191# BFC
192#------------------------------------------------------------------------------
193# CHECK: bfc r5, #3, #17
194# CHECK: it lo
195# CHECK: bfclo r5, #3, #17
196
1970x6f 0xf3 0xd3 0x05
1980x38 0xbf
1990x6f 0xf3 0xd3 0x05
200
201
202#------------------------------------------------------------------------------
203# BFI
204#------------------------------------------------------------------------------
205# CHECK: bfi r5, r2, #3, #17
206# CHECK: it ne
207# CHECK: bfine r5, r2, #3, #17
208# CHECK: bfi r6, r0, #0, #32
209# CHECK: bfi r6, r0, #31, #1
210
2110x62 0xf3 0xd3 0x05
2120x18 0xbf
2130x62 0xf3 0xd3 0x05
2140x60 0xf3 0x1f 0x06
2150x60 0xf3 0xdf 0x76
216
217
218#------------------------------------------------------------------------------
219# BIC
220#------------------------------------------------------------------------------
221# CHECK: bic r10, r1, #15
222# CHECK: bic.w r12, r3, r6
223# CHECK: bic.w r11, r2, r6, lsl #12
224# CHECK: bic.w r8, r4, r1, lsr #11
225# CHECK: bic.w r7, r5, r7, lsr #15
226# CHECK: bic.w r6, r7, r9, asr #32
227# CHECK: bic.w r5, r6, r8, ror #1
228
229# CHECK: bic r1, r1, #15
230# CHECK: bic.w r1, r1, r1
231# CHECK: bic.w r4, r4, r2, lsl #31
232# CHECK: bic.w r6, r6, r3, lsr #12
233# CHECK: bic.w r7, r7, r4, lsr #7
234# CHECK: bic.w r8, r8, r5, asr #15
235# CHECK: bic.w r12, r12, r6, ror #29
236
2370x21 0xf0 0x0f 0x0a
2380x23 0xea 0x06 0x0c
2390x22 0xea 0x06 0x3b
2400x24 0xea 0xd1 0x28
2410x25 0xea 0xd7 0x37
2420x27 0xea 0x29 0x06
2430x26 0xea 0x78 0x05
244
2450x21 0xf0 0x0f 0x01
2460x21 0xea 0x01 0x01
2470x24 0xea 0xc2 0x74
2480x26 0xea 0x13 0x36
2490x27 0xea 0xd4 0x17
2500x28 0xea 0xe5 0x38
2510x2c 0xea 0x76 0x7c
252
253
254#------------------------------------------------------------------------------
255# BXJ
256#------------------------------------------------------------------------------
257# CHECK: bxj r5
258# CHECK: it ne
259# CHECK: bxjne r7
260
2610xc5 0xf3 0x00 0x8f
2620x18 0xbf
2630xc7 0xf3 0x00 0x8f
264
265
266#------------------------------------------------------------------------------
267# CBZ/CBNZ
268#------------------------------------------------------------------------------
269# CHECK: cbnz    r7, #6
270# CHECK: cbnz    r7, #12
271# CHECK: cbz     r4, #64
272
2730x1f 0xb9
2740x37 0xb9
2750x04 0xb3
276
277
278#------------------------------------------------------------------------------
279# CDP/CDP2
280#------------------------------------------------------------------------------
281# CHECK: cdp  p7, #1, c1, c1, c1, #4
282# CHECK: cdp2  p7, #1, c1, c1, c1, #4
283
2840x11 0xee 0x81 0x17
2850x11 0xfe 0x81 0x17
286
287
288#------------------------------------------------------------------------------
289# CLREX
290#------------------------------------------------------------------------------
291#CHECK: clrex
292#CHECK: it ne
293#CHECK: clrexne
294
2950xbf 0xf3 0x2f 0x8f
2960x18 0xbf
2970xbf 0xf3 0x2f 0x8f
298
299
300#------------------------------------------------------------------------------
301# CLZ
302#------------------------------------------------------------------------------
303#CHECK: clz r1, r2
304#CHECK: it eq
305#CHECK: clzeq r1, r2
306
3070xb2 0xfa 0x82 0xf1
3080x08 0xbf
3090xb2 0xfa 0x82 0xf1
310
311
312#------------------------------------------------------------------------------
313# CMN
314#------------------------------------------------------------------------------
315#CHECK: cmn.w r1, #15
316#CHECK: cmn.w r8, r6
317#CHECK: cmn.w r1, r6, lsl #10
318#CHECK: cmn.w r1, r6, lsr #10
319#CHECK: cmn.w sp, r6, lsr #10
320#CHECK: cmn.w r1, r6, asr #10
321#CHECK: cmn.w r1, r6, ror #10
322
3230x11 0xf1 0x0f 0x0f
3240x18 0xeb 0x06 0x0f
3250x11 0xeb 0x86 0x2f
3260x11 0xeb 0x96 0x2f
3270x1d 0xeb 0x96 0x2f
3280x11 0xeb 0xa6 0x2f
3290x11 0xeb 0xb6 0x2f
330
331
332#------------------------------------------------------------------------------
333# CMP
334#------------------------------------------------------------------------------
335#CHECK: cmp.w r5, #65280
336#CHECK: cmp.w r4, r12
337#CHECK: cmp.w r9, r6, lsl #12
338#CHECK: cmp.w r3, r7, lsr #31
339#CHECK: cmp.w sp, r6, lsr #1
340#CHECK: cmp.w r2, r5, asr #24
341#CHECK: cmp.w r1, r4, ror #15
342
3430xb5 0xf5 0x7f 0x4f
3440xb4 0xeb 0x0c 0x0f
3450xb9 0xeb 0x06 0x3f
3460xb3 0xeb 0xd7 0x7f
3470xbd 0xeb 0x56 0x0f
3480xb2 0xeb 0x25 0x6f
3490xb1 0xeb 0xf4 0x3f
350
351
352#------------------------------------------------------------------------------
353# DBG
354#------------------------------------------------------------------------------
355#CHECK: dbg #5
356#CHECK: dbg #0
357#CHECK: dbg #15
358
3590xaf 0xf3 0xf5 0x80
3600xaf 0xf3 0xf0 0x80
3610xaf 0xf3 0xff 0x80
362
363
364#------------------------------------------------------------------------------
365# DMB
366#------------------------------------------------------------------------------
367#CHECK: dmb sy
368#CHECK: dmb st
369#CHECK: dmb #0xd
370#CHECK: dmb #0xc
371#CHECK: dmb ish
372#CHECK: dmb ishst
373#CHECK: dmb #0x9
374#CHECK: dmb #0x8
375#CHECK: dmb nsh
376#CHECK: dmb nshst
377#CHECK: dmb #0x5
378#CHECK: dmb #0x4
379#CHECK: dmb osh
380#CHECK: dmb oshst
381#CHECK: dmb #0x1
382#CHECK: dmb #0x0
383
3840xbf 0xf3 0x5f 0x8f
3850xbf 0xf3 0x5e 0x8f
3860xbf 0xf3 0x5d 0x8f
3870xbf 0xf3 0x5c 0x8f
3880xbf 0xf3 0x5b 0x8f
3890xbf 0xf3 0x5a 0x8f
3900xbf 0xf3 0x59 0x8f
3910xbf 0xf3 0x58 0x8f
3920xbf 0xf3 0x57 0x8f
3930xbf 0xf3 0x56 0x8f
3940xbf 0xf3 0x55 0x8f
3950xbf 0xf3 0x54 0x8f
3960xbf 0xf3 0x53 0x8f
3970xbf 0xf3 0x52 0x8f
3980xbf 0xf3 0x51 0x8f
3990xbf 0xf3 0x50 0x8f
400
401
402#------------------------------------------------------------------------------
403# DSB
404#------------------------------------------------------------------------------
405#CHECK: dsb sy
406#CHECK: dsb st
407#CHECK: dsb #0xd
408#CHECK: dsb #0xc
409#CHECK: dsb ish
410#CHECK: dsb ishst
411#CHECK: dsb #0x9
412#CHECK: dsb #0x8
413#CHECK: dsb nsh
414#CHECK: dsb nshst
415#CHECK: dsb #0x5
416#CHECK: pssbb
417#CHECK: dsb osh
418#CHECK: dsb oshst
419#CHECK: dsb #0x1
420#CHECK: ssbb
421
4220xbf 0xf3 0x4f 0x8f
4230xbf 0xf3 0x4e 0x8f
4240xbf 0xf3 0x4d 0x8f
4250xbf 0xf3 0x4c 0x8f
4260xbf 0xf3 0x4b 0x8f
4270xbf 0xf3 0x4a 0x8f
4280xbf 0xf3 0x49 0x8f
4290xbf 0xf3 0x48 0x8f
4300xbf 0xf3 0x47 0x8f
4310xbf 0xf3 0x46 0x8f
4320xbf 0xf3 0x45 0x8f
4330xbf 0xf3 0x44 0x8f
4340xbf 0xf3 0x43 0x8f
4350xbf 0xf3 0x42 0x8f
4360xbf 0xf3 0x41 0x8f
4370xbf 0xf3 0x40 0x8f
438
439
440#------------------------------------------------------------------------------
441# EOR
442#------------------------------------------------------------------------------
443#CHECK: eor r4, r5, #61440
444#CHECK: eor.w r4, r5, r6
445#CHECK: eor.w r4, r5, r6, lsl #5
446#CHECK: eor.w r4, r5, r6, lsr #5
447#CHECK: eor.w r4, r5, r6, lsr #5
448#CHECK: eor.w r4, r5, r6, asr #5
449#CHECK: eor.w r4, r5, r6, ror #5
450
4510x85 0xf4 0x70 0x44
4520x85 0xea 0x06 0x04
4530x85 0xea 0x46 0x14
4540x85 0xea 0x56 0x14
4550x85 0xea 0x56 0x14
4560x85 0xea 0x66 0x14
4570x85 0xea 0x76 0x14
458
459
460#------------------------------------------------------------------------------
461# ISB
462#------------------------------------------------------------------------------
463#CHECK: isb sy
464#CHECK: isb #0xa
465
4660xbf 0xf3 0x6f 0x8f
4670xbf 0xf3 0x6a 0x8f
468
469#------------------------------------------------------------------------------
470# IT
471#------------------------------------------------------------------------------
472# Test encodings of a few full IT blocks, not just the IT instruction
473
474# CHECK: iteet eq
475# CHECK: addeq r0, r1, r2
476# CHECK: nopne
477# CHECK: subne r5, r6, r7
478# CHECK: addeq r1, r2, #4
479
4800x0d 0xbf
4810x88 0x18
4820x00 0xbf
4830xf5 0x1b
4840x11 0x1d
485
486# CHECK: ittee ls
487# CHECK: addls r0, r1, r2
488# CHECK: nopls
489# CHECK: subhi r5, r6, r7
490# CHECK: addhi r1, r2, #4
491
4920x99 0xbf
4930x88 0x18
4940x00 0xbf
4950xf5 0x1b
4960x11 0x1d
497
498
499#------------------------------------------------------------------------------
500# LDMIA
501#------------------------------------------------------------------------------
502# CHECK: ldm.w r4, {r4, r5, r8, r9}
503# CHECK: ldm.w r4, {r5, r6}
504# CHECK: ldm.w r5!, {r3, r8}
505# CHECK: ldm.w r4, {r4, r5, r8, r9}
506# CHECK: ldm.w r4, {r5, r6}
507# CHECK: ldm.w r5!, {r3, r8}
508# CHECK: ldm.w r5!, {r1, r2}
509# CHECK: ldm.w r2, {r1, r2}
510
511# CHECK: ldm.w r4, {r4, r5, r8, r9}
512# CHECK: ldm.w r4, {r5, r6}
513# CHECK: ldm.w r5!, {r3, r8}
514# CHECK: ldm.w r4, {r4, r5, r8, r9}
515# CHECK: ldm.w r4, {r5, r6}
516# CHECK: ldm.w r5!, {r3, r8}
517# CHECK: ldm.w r5!, {r3, r8}
518
5190x94 0xe8 0x30 0x03
5200x94 0xe8 0x60 0x00
5210xb5 0xe8 0x08 0x01
5220x94 0xe8 0x30 0x03
5230x94 0xe8 0x60 0x00
5240xb5 0xe8 0x08 0x01
5250xb5 0xe8 0x06 0x00
5260x92 0xe8 0x06 0x00
527
5280x94 0xe8 0x30 0x03
5290x94 0xe8 0x60 0x00
5300xb5 0xe8 0x08 0x01
5310x94 0xe8 0x30 0x03
5320x94 0xe8 0x60 0x00
5330xb5 0xe8 0x08 0x01
5340xb5 0xe8 0x08 0x01
535
536
537#------------------------------------------------------------------------------
538# LDMDB
539#------------------------------------------------------------------------------
540# CHECK: ldmdb r4, {r4, r5, r8, r9}
541# CHECK: ldmdb r4, {r5, r6}
542# CHECK: ldmdb r5!, {r3, r8}
543# CHECK: ldmdb r5!, {r3, r8}
544
5450x14 0xe9 0x30 0x03
5460x14 0xe9 0x60 0x00
5470x35 0xe9 0x08 0x01
5480x35 0xe9 0x08 0x01
549
550
551#------------------------------------------------------------------------------
552# LDR(immediate)
553#------------------------------------------------------------------------------
554# CHECK: ldr r5, [r5, #-4]
555# CHECK: ldr r5, [r6, #32]
556# CHECK: ldr.w r5, [r6, #33]
557# CHECK: ldr.w r5, [r6, #257]
558# CHECK: ldr.w pc, [r7, #257]
559
5600x55 0xf8 0x04 0x5c
5610x35 0x6a
5620xd6 0xf8 0x21 0x50
5630xd6 0xf8 0x01 0x51
5640xd7 0xf8 0x01 0xf1
565
566
567#------------------------------------------------------------------------------
568# LDR(literal)
569#------------------------------------------------------------------------------
570# CHECK: ldr.w r4, [pc, #-0]
571# CHECK: ldr.w r2, [pc, #-40]
572# CHECK: ldr.w r1, [pc, #1024]
5730x5f 0xf8 0x00 0x40
5740x5f 0xf8 0x28 0x20
5750xdf 0xf8 0x00 0x14
576
577
578#------------------------------------------------------------------------------
579# LDR(register)
580#------------------------------------------------------------------------------
581# CHECK: ldr.w r1, [r8, r1]
582# CHECK: ldr.w r4, [r5, r2]
583# CHECK: ldr.w r6, [r0, r2, lsl #3]
584# CHECK: ldr.w r8, [r8, r2, lsl #2]
585# CHECK: ldr.w r7, [sp, r2, lsl #1]
586# CHECK: ldr.w r7, [sp, r2]
587# CHECK: ldr pc, [sp], #12
588# CHECK: ldr r2, [r4, #255]!
589# CHECK: ldr r8, [sp, #4]!
590# CHECK: ldr lr, [sp, #-4]!
591# CHECK: ldr lr, [sp, #0]!
592# CHECK: ldr r2, [r4], #255
593# CHECK: ldr r8, [sp], #4
594# CHECK: ldr lr, [sp], #-4
595
5960x58 0xf8 0x01 0x10
5970x55 0xf8 0x02 0x40
5980x50 0xf8 0x32 0x60
5990x58 0xf8 0x22 0x80
6000x5d 0xf8 0x12 0x70
6010x5d 0xf8 0x02 0x70
6020x5d 0xf8 0x0c 0xfb
6030x54 0xf8 0xff 0x2f
6040x5d 0xf8 0x04 0x8f
6050x5d 0xf8 0x04 0xed
6060x5d 0xf8 0x00 0xef
6070x54 0xf8 0xff 0x2b
6080x5d 0xf8 0x04 0x8b
6090x5d 0xf8 0x04 0xe9
610
611
612#------------------------------------------------------------------------------
613# LDRB(immediate)
614#------------------------------------------------------------------------------
615# CHECK: ldrb r5, [r5, #-4]
616# CHECK: ldrb.w r5, [r6, #32]
617# CHECK: ldrb.w r5, [r6, #33]
618# CHECK: ldrb.w r5, [r6, #257]
619# CHECK: ldrb.w lr, [r7, #257]
620
6210x15 0xf8 0x04 0x5c
6220x96 0xf8 0x20 0x50
6230x96 0xf8 0x21 0x50
6240x96 0xf8 0x01 0x51
6250x97 0xf8 0x01 0xe1
626
627
628#------------------------------------------------------------------------------
629# LDRB(register)
630#------------------------------------------------------------------------------
631# CHECK: ldrb.w r1, [r8, r1]
632# CHECK: ldrb.w r4, [r5, r2]
633# CHECK: ldrb.w r6, [r0, r2, lsl #3]
634# CHECK: ldrb.w r8, [r8, r2, lsl #2]
635# CHECK: ldrb.w r7, [sp, r2, lsl #1]
636# CHECK: ldrb.w r7, [sp, r2]
637# CHECK: ldrb r5, [r8, #255]!
638# CHECK: ldrb r2, [r5, #4]!
639# CHECK: ldrb r1, [r4, #-4]!
640# CHECK: ldrb r1, [r4, #0]!
641# CHECK: ldrb lr, [r3], #255
642# CHECK: ldrb r9, [r2], #4
643# CHECK: ldrb r3, [sp], #-4
644
6450x18 0xf8 0x01 0x10
6460x15 0xf8 0x02 0x40
6470x10 0xf8 0x32 0x60
6480x18 0xf8 0x22 0x80
6490x1d 0xf8 0x12 0x70
6500x1d 0xf8 0x02 0x70
6510x18 0xf8 0xff 0x5f
6520x15 0xf8 0x04 0x2f
6530x14 0xf8 0x04 0x1d
6540x14 0xf8 0x00 0x1f
6550x13 0xf8 0xff 0xeb
6560x12 0xf8 0x04 0x9b
6570x1d 0xf8 0x04 0x39
658
659
660#------------------------------------------------------------------------------
661# LDRB(literal)
662#------------------------------------------------------------------------------
663# CHECK: ldrb.w r6, [pc, #-0]
664# CHECK: ldrb.w r10, [pc, #227]
665# CHECK: ldrb.w r5, [pc, #0]
6660x1f 0xf8 0x00 0x60
6670x9f 0xf8 0xe3 0xa0
6680x9f 0xf8 0x00 0x50
669
670
671#------------------------------------------------------------------------------
672# LDRBT
673#------------------------------------------------------------------------------
674# CHECK: ldrbt r1, [r2]
675# CHECK: ldrbt r1, [r8]
676# CHECK: ldrbt r1, [r8, #3]
677# CHECK: ldrbt r1, [r8, #255]
678
6790x12 0xf8 0x00 0x1e
6800x18 0xf8 0x00 0x1e
6810x18 0xf8 0x03 0x1e
6820x18 0xf8 0xff 0x1e
683
684
685#------------------------------------------------------------------------------
686# LDRD(immediate)
687#------------------------------------------------------------------------------
688# CHECK: ldrd r3, r5, [r6, #24]
689# CHECK: ldrd r3, r5, [r6, #24]!
690# CHECK: ldrd r3, r5, [r6], #4
691# CHECK: ldrd r3, r5, [r6], #-8
692# CHECK: ldrd r3, r5, [r6]
693# CHECK: ldrd r8, r1, [r3]
694# CHECK: ldrd r0, r1, [r2], #-0
695# CHECK: ldrd r0, r1, [r2, #-0]!
696# CHECK: ldrd r0, r1, [r2, #0]!
697# CHECK: ldrd r0, r1, [r2, #-0]
698# CHECK: ldrd r1, r1, [r0], #0
699
7000xd6 0xe9 0x06 0x35
7010xf6 0xe9 0x06 0x35
7020xf6 0xe8 0x01 0x35
7030x76 0xe8 0x02 0x35
7040xd6 0xe9 0x00 0x35
7050xd3 0xe9 0x00 0x81
7060x72 0xe8 0x00 0x01
7070x72 0xe9 0x00 0x01
7080xf2 0xe9 0x00 0x01
7090x52 0xe9 0x00 0x01
7100xf0 0xe8 0x00 0x11
711
712
713#------------------------------------------------------------------------------
714# FIXME: LDRD(literal)
715#------------------------------------------------------------------------------
716
717
718#------------------------------------------------------------------------------
719# LDREX/LDREXB/LDREXH/LDREXD
720#------------------------------------------------------------------------------
721# CHECK: ldrex r1, [r4]
722# CHECK: ldrex r8, [r4]
723# CHECK: ldrex r2, [sp, #128]
724# CHECK: ldrexb r5, [r7]
725# CHECK: ldrexh r9, [r12]
726# CHECK: ldrexd r9, r3, [r4]
727
7280x54 0xe8 0x00 0x1f
7290x54 0xe8 0x00 0x8f
7300x5d 0xe8 0x20 0x2f
7310xd7 0xe8 0x4f 0x5f
7320xdc 0xe8 0x5f 0x9f
7330xd4 0xe8 0x7f 0x93
734
735
736#------------------------------------------------------------------------------
737# LDRH(immediate)
738#------------------------------------------------------------------------------
739# CHECK: ldrh r5, [r5, #-4]
740# CHECK: ldrh r5, [r6, #32]
741# CHECK: ldrh.w r5, [r6, #33]
742# CHECK: ldrh.w r5, [r6, #257]
743# CHECK: ldrh.w lr, [r7, #257]
744
7450x35 0xf8 0x04 0x5c
7460x35 0x8c
7470xb6 0xf8 0x21 0x50
7480xb6 0xf8 0x01 0x51
7490xb7 0xf8 0x01 0xe1
750
751
752#------------------------------------------------------------------------------
753# LDRH(register)
754#------------------------------------------------------------------------------
755# CHECK: ldrh.w r1, [r8, r1]
756# CHECK: ldrh.w r4, [r5, r2]
757# CHECK: ldrh.w r6, [r0, r2, lsl #3]
758# CHECK: ldrh.w r8, [r8, r2, lsl #2]
759# CHECK: ldrh.w r7, [sp, r2, lsl #1]
760# CHECK: ldrh.w r7, [sp, r2]
761# CHECK: ldrh r5, [r8, #255]!
762# CHECK: ldrh r2, [r5, #4]!
763# CHECK: ldrh r1, [r4, #-4]!
764# CHECK: ldrh r1, [r4, #0]!
765# CHECK: ldrh lr, [r3], #255
766# CHECK: ldrh r9, [r2], #4
767# CHECK: ldrh r3, [sp], #-4
768
7690x38 0xf8 0x01 0x10
7700x35 0xf8 0x02 0x40
7710x30 0xf8 0x32 0x60
7720x38 0xf8 0x22 0x80
7730x3d 0xf8 0x12 0x70
7740x3d 0xf8 0x02 0x70
7750x38 0xf8 0xff 0x5f
7760x35 0xf8 0x04 0x2f
7770x34 0xf8 0x04 0x1d
7780x34 0xf8 0x00 0x1f
7790x33 0xf8 0xff 0xeb
7800x32 0xf8 0x04 0x9b
7810x3d 0xf8 0x04 0x39
782
783
784#------------------------------------------------------------------------------
785# LDRH(literal)
786#------------------------------------------------------------------------------
787# CHECK: ldrh.w r7, [pc, #-0]
788# CHECK: ldrh.w r5, [pc, #121]
789# CHECK: ldrh.w r4, [pc, #0]
7900x3f 0xf8 0x00 0x70
7910xbf 0xf8 0x79 0x50
7920xbf 0xf8 0x00 0x40
793
794
795#------------------------------------------------------------------------------
796# LDRSB(immediate)
797#------------------------------------------------------------------------------
798# CHECK: ldrsb r5, [r5, #-4]
799# CHECK: ldrsb.w r5, [r6, #32]
800# CHECK: ldrsb.w r5, [r6, #33]
801# CHECK: ldrsb.w r5, [r6, #257]
802# CHECK: ldrsb.w lr, [r7, #257]
803
8040x15 0xf9 0x04 0x5c
8050x96 0xf9 0x20 0x50
8060x96 0xf9 0x21 0x50
8070x96 0xf9 0x01 0x51
8080x97 0xf9 0x01 0xe1
809
810
811#------------------------------------------------------------------------------
812# LDRSB(register)
813#------------------------------------------------------------------------------
814# CHECK: ldrsb.w r1, [r8, r1]
815# CHECK: ldrsb.w r4, [r5, r2]
816# CHECK: ldrsb.w r6, [r0, r2, lsl #3]
817# CHECK: ldrsb.w r8, [r8, r2, lsl #2]
818# CHECK: ldrsb.w r7, [sp, r2, lsl #1]
819# CHECK: ldrsb.w r7, [sp, r2]
820# CHECK: ldrsb r5, [r8, #255]!
821# CHECK: ldrsb r2, [r5, #4]!
822# CHECK: ldrsb r1, [r4, #-4]!
823# CHECK: ldrsb r1, [r4, #0]!
824# CHECK: ldrsb lr, [r3], #255
825# CHECK: ldrsb r9, [r2], #4
826# CHECK: ldrsb r3, [sp], #-4
827
8280x18 0xf9 0x01 0x10
8290x15 0xf9 0x02 0x40
8300x10 0xf9 0x32 0x60
8310x18 0xf9 0x22 0x80
8320x1d 0xf9 0x12 0x70
8330x1d 0xf9 0x02 0x70
8340x18 0xf9 0xff 0x5f
8350x15 0xf9 0x04 0x2f
8360x14 0xf9 0x04 0x1d
8370x14 0xf9 0x00 0x1f
8380x13 0xf9 0xff 0xeb
8390x12 0xf9 0x04 0x9b
8400x1d 0xf9 0x04 0x39
841
842
843#------------------------------------------------------------------------------
844# LDRSB(literal)
845#------------------------------------------------------------------------------
846# CHECK: ldrsb.w r0, [pc, #-0]
847# CHECK: ldrsb.w r12, [pc, #80]
848# CHECK: ldrsb.w r3, [pc, #0]
8490x1f 0xf9 0x00 0x00
8500x9f 0xf9 0x50 0xc0
8510x9f 0xf9 0x00 0x30
852
853
854#------------------------------------------------------------------------------
855# LDRSBT
856#------------------------------------------------------------------------------
857# CHECK: ldrsbt r1, [r2]
858# CHECK: ldrsbt r1, [r8]
859# CHECK: ldrsbt r1, [r8, #3]
860# CHECK: ldrsbt r1, [r8, #255]
861
8620x12 0xf9 0x00 0x1e
8630x18 0xf9 0x00 0x1e
8640x18 0xf9 0x03 0x1e
8650x18 0xf9 0xff 0x1e
866
867
868#------------------------------------------------------------------------------
869# LDRSH(immediate)
870#------------------------------------------------------------------------------
871# CHECK: ldrsh r5, [r5, #-4]
872# CHECK: ldrsh.w r5, [r6, #32]
873# CHECK: ldrsh.w r5, [r6, #33]
874# CHECK: ldrsh.w r5, [r6, #257]
875# CHECK: ldrsh.w lr, [r7, #257]
876# CHECK: ldrsh r10, [r5, #-0]
877
8780x35 0xf9 0x04 0x5c
8790xb6 0xf9 0x20 0x50
8800xb6 0xf9 0x21 0x50
8810xb6 0xf9 0x01 0x51
8820xb7 0xf9 0x01 0xe1
8830x35 0xf9 0x00 0xac
884
885#------------------------------------------------------------------------------
886# LDRSH(register)
887#------------------------------------------------------------------------------
888# CHECK: ldrsh.w r1, [r8, r1]
889# CHECK: ldrsh.w r4, [r5, r2]
890# CHECK: ldrsh.w r6, [r0, r2, lsl #3]
891# CHECK: ldrsh.w r8, [r8, r2, lsl #2]
892# CHECK: ldrsh.w r7, [sp, r2, lsl #1]
893# CHECK: ldrsh.w r7, [sp, r2]
894# CHECK: ldrsh r5, [r8, #255]!
895# CHECK: ldrsh r2, [r5, #4]!
896# CHECK: ldrsh r1, [r4, #-4]!
897# CHECK: ldrsh r1, [r4, #0]!
898# CHECK: ldrsh lr, [r3], #255
899# CHECK: ldrsh r9, [r2], #4
900# CHECK: ldrsh r3, [sp], #-4
901
9020x38 0xf9 0x01 0x10
9030x35 0xf9 0x02 0x40
9040x30 0xf9 0x32 0x60
9050x38 0xf9 0x22 0x80
9060x3d 0xf9 0x12 0x70
9070x3d 0xf9 0x02 0x70
9080x38 0xf9 0xff 0x5f
9090x35 0xf9 0x04 0x2f
9100x34 0xf9 0x04 0x1d
9110x34 0xf9 0x00 0x1f
9120x33 0xf9 0xff 0xeb
9130x32 0xf9 0x04 0x9b
9140x3d 0xf9 0x04 0x39
915
916
917#------------------------------------------------------------------------------
918# LDRSH(literal)
919#------------------------------------------------------------------------------
920# CHECK: ldrsh.w r0, [pc, #-0]
921# CHECK: ldrsh.w r10, [pc, #-231]
922# CHECK: ldrsh.w r6, [pc, #0]
9230x3f 0xf9 0x00 0x00
9240x3f 0xf9 0xe7 0xa0
9250xbf 0xf9 0x00 0x60
926
927
928#------------------------------------------------------------------------------
929# LDRSHT
930#------------------------------------------------------------------------------
931# CHECK: ldrsht r1, [r2]
932# CHECK: ldrsht r1, [r8]
933# CHECK: ldrsht r1, [r8, #3]
934# CHECK: ldrsht r1, [r8, #255]
935
9360x32 0xf9 0x00 0x1e
9370x38 0xf9 0x00 0x1e
9380x38 0xf9 0x03 0x1e
9390x38 0xf9 0xff 0x1e
940
941
942#------------------------------------------------------------------------------
943# LDRT
944#------------------------------------------------------------------------------
945# CHECK: ldrt r1, [r2]
946# CHECK: ldrt r2, [r6]
947# CHECK: ldrt r3, [r7, #3]
948# CHECK: ldrt r4, [r9, #255]
949
9500x52 0xf8 0x00 0x1e
9510x56 0xf8 0x00 0x2e
9520x57 0xf8 0x03 0x3e
9530x59 0xf8 0xff 0x4e
954
955
956#------------------------------------------------------------------------------
957# LSL (immediate)
958#------------------------------------------------------------------------------
959# CHECK: lsl.w r2, r3, #12
960# CHECK: lsls.w r8, r3, #31
961# CHECK: lsls.w r2, r3, #1
962# CHECK: lsl.w r2, r3, #4
963# CHECK: lsls.w r2, r12, #15
964
965# CHECK: lsl.w r3, r3, #19
966# CHECK: lsls.w r8, r8, #2
967# CHECK: lsls.w r7, r7, #5
968# CHECK: lsl.w r12, r12, #21
969
9700x4f 0xea 0x03 0x32
9710x5f 0xea 0xc3 0x78
9720x5f 0xea 0x43 0x02
9730x4f 0xea 0x03 0x12
9740x5f 0xea 0xcc 0x32
975
9760x4f 0xea 0xc3 0x43
9770x5f 0xea 0x88 0x08
9780x5f 0xea 0x47 0x17
9790x4f 0xea 0x4c 0x5c
980
981
982#------------------------------------------------------------------------------
983# LSL (register)
984#------------------------------------------------------------------------------
985# CHECK: lsl.w r3, r4, r2
986# CHECK: lsl.w r1, r1, r2
987# CHECK: lsls.w r3, r4, r8
988
9890x04 0xfa 0x02 0xf3
9900x01 0xfa 0x02 0xf1
9910x14 0xfa 0x08 0xf3
992
993
994#------------------------------------------------------------------------------
995# LSR (immediate)
996#------------------------------------------------------------------------------
997# CHECK: lsr.w r2, r3, #12
998# CHECK: lsrs.w r8, r3, #32
999# CHECK: lsrs.w r2, r3, #1
1000# CHECK: lsr.w r2, r3, #4
1001# CHECK: lsrs.w r2, r12, #15
1002
1003# CHECK: lsr.w r3, r3, #19
1004# CHECK: lsrs.w r8, r8, #2
1005# CHECK: lsrs.w r7, r7, #5
1006# CHECK: lsr.w r12, r12, #21
1007
10080x4f 0xea 0x13 0x32
10090x5f 0xea 0x13 0x08
10100x5f 0xea 0x53 0x02
10110x4f 0xea 0x13 0x12
10120x5f 0xea 0xdc 0x32
1013
10140x4f 0xea 0xd3 0x43
10150x5f 0xea 0x98 0x08
10160x5f 0xea 0x57 0x17
10170x4f 0xea 0x5c 0x5c
1018
1019
1020#------------------------------------------------------------------------------
1021# LSR (register)
1022#------------------------------------------------------------------------------
1023# CHECK: lsr.w r3, r4, r2
1024# CHECK: lsr.w r1, r1, r2
1025# CHECK: lsrs.w r3, r4, r8
1026
10270x24 0xfa 0x02 0xf3
10280x21 0xfa 0x02 0xf1
10290x34 0xfa 0x08 0xf3
1030
1031#------------------------------------------------------------------------------
1032# MCR/MCR2
1033#------------------------------------------------------------------------------
1034# CHECK: mcr  p7, #1, r5, c1, c1, #4
1035# CHECK: mcr2  p7, #1, r5, c1, c1, #4
1036
10370x21 0xee 0x91 0x57
10380x21 0xfe 0x91 0x57
1039
1040
1041#------------------------------------------------------------------------------
1042# MCRR/MCRR2
1043#------------------------------------------------------------------------------
1044# CHECK: mcrr  p7, #15, r5, r4, c1
1045# CHECK: mcrr2  p7, #15, r5, r4, c1
1046
10470x44 0xec 0xf1 0x57
10480x44 0xfc 0xf1 0x57
1049
1050
1051#------------------------------------------------------------------------------
1052# MLA/MLS
1053#------------------------------------------------------------------------------
1054# CHECK: mla  r1, r2, r3, r4
1055# CHECK: mls  r1, r2, r3, r4
1056
10570x02 0xfb 0x03 0x41
10580x02 0xfb 0x13 0x41
1059
1060
1061#------------------------------------------------------------------------------
1062# MOV(immediate)
1063#------------------------------------------------------------------------------
1064# CHECK: movs r1, #21
1065# CHECK: movs.w r1, #21
1066# CHECK: movs.w r8, #21
1067# CHECK: movw r0, #65535
1068# CHECK: movw r1, #43777
1069# CHECK: movw r1, #43792
1070# CHECK: mov.w r0, #66846720
1071# CHECK: mov.w r0, #66846720
1072# CHECK: movs.w r0, #66846720
1073
10740x15 0x21
10750x5f 0xf0 0x15 0x01
10760x5f 0xf0 0x15 0x08
10770x4f 0xf6 0xff 0x70
10780x4a 0xf6 0x01 0x31
10790x4a 0xf6 0x10 0x31
10800x4f 0xf0 0x7f 0x70
10810x4f 0xf0 0x7f 0x70
10820x5f 0xf0 0x7f 0x70
1083
1084#------------------------------------------------------------------------------
1085# MOVT
1086#------------------------------------------------------------------------------
1087# CHECK: movt r3, #7
1088# CHECK: movt r6, #65535
1089# CHECK: it eq
1090# CHECK: movteq r4, #4080
1091
10920xc0 0xf2 0x07 0x03
10930xcf 0xf6 0xff 0x76
10940x08 0xbf
10950xc0 0xf6 0xf0 0x74
1096
1097#------------------------------------------------------------------------------
1098# MRC/MRC2
1099#------------------------------------------------------------------------------
1100# CHECK: mrc  p14, #0, r1, c1, c2, #4
1101# CHECK: mrc2  p14, #0, r1, c1, c2, #4
1102
11030x11 0xee 0x92 0x1e
11040x11 0xfe 0x92 0x1e
1105
1106
1107#------------------------------------------------------------------------------
1108# MRRC/MRRC2
1109#------------------------------------------------------------------------------
1110# CHECK: mrrc  p7, #1, r5, r4, c1
1111# CHECK: mrrc2  p7, #1, r5, r4, c1
1112
11130x54 0xec 0x11 0x57
11140x54 0xfc 0x11 0x57
1115
1116
1117#------------------------------------------------------------------------------
1118# MRS
1119#------------------------------------------------------------------------------
1120# CHECK: mrs  r8, apsr
1121# CHECK: mrs  r8, spsr
1122
11230xef 0xf3 0x00 0x88
11240xff 0xf3 0x00 0x88
1125
1126
1127#------------------------------------------------------------------------------
1128# MSR
1129#------------------------------------------------------------------------------
1130# CHECK: msr  APSR_nzcvq, r1
1131# CHECK: msr  APSR_g, r2
1132# CHECK: msr  APSR_nzcvq, r3
1133# CHECK: msr  APSR_nzcvq, r4
1134# CHECK: msr  APSR_nzcvqg, r5
1135# CHECK: msr  CPSR_fc, r6
1136# CHECK: msr  CPSR_c, r7
1137# CHECK: msr  CPSR_x, r8
1138# CHECK: msr  CPSR_fc, r9
1139# CHECK: msr  CPSR_fc, r11
1140# CHECK: msr  CPSR_fsx, r12
1141# CHECK: msr  SPSR_fc, r0
1142# CHECK: msr  SPSR_fsxc, r5
1143# CHECK: msr  CPSR_fsxc, r8
1144
11450x81 0xf3 0x00 0x88
11460x82 0xf3 0x00 0x84
11470x83 0xf3 0x00 0x88
11480x84 0xf3 0x00 0x88
11490x85 0xf3 0x00 0x8c
11500x86 0xf3 0x00 0x89
11510x87 0xf3 0x00 0x81
11520x88 0xf3 0x00 0x82
11530x89 0xf3 0x00 0x89
11540x8b 0xf3 0x00 0x89
11550x8c 0xf3 0x00 0x8e
11560x90 0xf3 0x00 0x89
11570x95 0xf3 0x00 0x8f
11580x88 0xf3 0x00 0x8f
1159
1160
1161#------------------------------------------------------------------------------
1162# MUL
1163#------------------------------------------------------------------------------
1164# CHECK: muls r3, r4, r3
1165# CHECK: mul r3, r4, r3
1166# CHECK: mul r3, r4, r6
1167# CHECK: it eq
1168# CHECK: muleq r3, r4, r5
1169
11700x63 0x43
11710x04 0xfb 0x03 0xf3
11720x04 0xfb 0x06 0xf3
11730x08 0xbf
11740x04 0xfb 0x05 0xf3
1175
1176
1177#------------------------------------------------------------------------------
1178# MVN(immediate)
1179#------------------------------------------------------------------------------
1180# CHECK: mvns r8, #21
1181# CHECK: mvn r0, #66846720
1182# CHECK: mvns r0, #66846720
1183# CHECK: itte eq
1184# CHECK: mvnseq r1, #12
1185# CHECK: mvneq r1, #12
1186# CHECK: mvnne r1, #12
1187
11880x7f 0xf0 0x15 0x08
11890x6f 0xf0 0x7f 0x70
11900x7f 0xf0 0x7f 0x70
11910x06 0xbf
11920x7f 0xf0 0x0c 0x01
11930x6f 0xf0 0x0c 0x01
11940x6f 0xf0 0x0c 0x01
1195
1196
1197#------------------------------------------------------------------------------
1198# MVN(register)
1199#------------------------------------------------------------------------------
1200# CHECK: mvn.w r2, r3
1201# CHECK: mvns r2, r3
1202# CHECK: mvn.w r5, r6, lsl #19
1203# CHECK: mvn.w r5, r6, lsr #9
1204# CHECK: mvn.w r5, r6, asr #4
1205# CHECK: mvn.w r5, r6, ror #6
1206# CHECK: mvn.w r5, r6, rrx
1207# CHECK: it eq
1208# CHECK: mvneq r2, r3
1209
12100x6f 0xea 0x03 0x02
12110xda 0x43
12120x6f 0xea 0xc6 0x45
12130x6f 0xea 0x56 0x25
12140x6f 0xea 0x26 0x15
12150x6f 0xea 0xb6 0x15
12160x6f 0xea 0x36 0x05
12170x08 0xbf
12180xda 0x43
1219
1220#------------------------------------------------------------------------------
1221# NOP
1222#------------------------------------------------------------------------------
1223# CHECK: nop.w
1224
12250xaf 0xf3 0x00 0x80
1226
1227
1228#------------------------------------------------------------------------------
1229# ORN
1230#------------------------------------------------------------------------------
1231# CHECK: orn r4, r5, #61440
1232# CHECK: orn r4, r5, r6
1233# CHECK: orns r4, r5, r6
1234# CHECK: orn r4, r5, r6, lsl #5
1235# CHECK: orns r4, r5, r6, lsr #5
1236# CHECK: orn r4, r5, r6, lsr #5
1237# CHECK: orns r4, r5, r6, asr #5
1238# CHECK: orn r4, r5, r6, ror #5
1239
12400x65 0xf4 0x70 0x44
12410x65 0xea 0x06 0x04
12420x75 0xea 0x06 0x04
12430x65 0xea 0x46 0x14
12440x75 0xea 0x56 0x14
12450x65 0xea 0x56 0x14
12460x75 0xea 0x66 0x14
12470x65 0xea 0x76 0x14
1248
1249
1250#------------------------------------------------------------------------------
1251# ORR
1252#------------------------------------------------------------------------------
1253# CHECK: orr r4, r5, #61440
1254# CHECK: orr.w r4, r5, r6
1255# CHECK: orr.w r4, r5, r6, lsl #5
1256# CHECK: orrs.w r4, r5, r6, lsr #5
1257# CHECK: orr.w r4, r5, r6, lsr #5
1258# CHECK: orrs.w r4, r5, r6, asr #5
1259# CHECK: orr.w r4, r5, r6, ror #5
1260
12610x45 0xf4 0x70 0x44
12620x45 0xea 0x06 0x04
12630x45 0xea 0x46 0x14
12640x55 0xea 0x56 0x14
12650x45 0xea 0x56 0x14
12660x55 0xea 0x66 0x14
12670x45 0xea 0x76 0x14
1268
1269
1270#------------------------------------------------------------------------------
1271# PKH
1272#------------------------------------------------------------------------------
1273# CHECK: pkhbt r2, r2, r3
1274# CHECK: pkhbt r2, r2, r3, lsl #31
1275# CHECK: pkhbt r2, r2, r3, lsl #15
1276
1277# CHECK: pkhtb r2, r2, r3, asr #31
1278# CHECK: pkhtb r2, r2, r3, asr #15
1279
12800xc2 0xea 0x03 0x02
12810xc2 0xea 0xc3 0x72
12820xc2 0xea 0xc3 0x32
1283
12840xc2 0xea 0xe3 0x72
12850xc2 0xea 0xe3 0x32
1286
1287
1288#------------------------------------------------------------------------------
1289# PLD(immediate)
1290#------------------------------------------------------------------------------
1291# CHECK: pld [r5, #-4]
1292# CHECK: pld [r6, #32]
1293# CHECK: pld [r6, #33]
1294# CHECK: pld [r6, #257]
1295# CHECK: pld [r7, #257]
1296
12970x15 0xf8 0x04 0xfc
12980x96 0xf8 0x20 0xf0
12990x96 0xf8 0x21 0xf0
13000x96 0xf8 0x01 0xf1
13010x97 0xf8 0x01 0xf1
1302
1303#------------------------------------------------------------------------------
1304# PLD(register)
1305#------------------------------------------------------------------------------
1306# CHECK: pld [r8, r1]
1307# CHECK: pld [r5, r2]
1308# CHECK: pld [r0, r2, lsl #3]
1309# CHECK: pld [r8, r2, lsl #2]
1310# CHECK: pld [sp, r2, lsl #1]
1311# CHECK: pld [sp, r2]
1312
13130x18 0xf8 0x01 0xf0
13140x15 0xf8 0x02 0xf0
13150x10 0xf8 0x32 0xf0
13160x18 0xf8 0x22 0xf0
13170x1d 0xf8 0x12 0xf0
13180x1d 0xf8 0x02 0xf0
1319
1320#------------------------------------------------------------------------------
1321# PLD(literal)
1322#------------------------------------------------------------------------------
1323# CHECK: pld [pc, #-0]
1324# CHECK: pld [pc, #455]
1325# CHECK: pld [pc, #0]
1326
13270x1f 0xf8 0x00 0xf0
13280x9f 0xf8 0xc7 0xf1
13290x9f 0xf8 0x00 0xf0
1330
1331#------------------------------------------------------------------------------
1332# PLI(immediate)
1333#------------------------------------------------------------------------------
1334# CHECK: pli [r5, #-4]
1335# CHECK: pli [r6, #32]
1336# CHECK: pli [r6, #33]
1337# CHECK: pli [r6, #257]
1338# CHECK: pli [r7, #257]
1339
13400x15 0xf9 0x04 0xfc
13410x96 0xf9 0x20 0xf0
13420x96 0xf9 0x21 0xf0
13430x96 0xf9 0x01 0xf1
13440x97 0xf9 0x01 0xf1
1345
1346#------------------------------------------------------------------------------
1347# PLI(register)
1348#------------------------------------------------------------------------------
1349# CHECK: pli [r8, r1]
1350# CHECK: pli [r5, r2]
1351# CHECK: pli [r0, r2, lsl #3]
1352# CHECK: pli [r8, r2, lsl #2]
1353# CHECK: pli [sp, r2, lsl #1]
1354# CHECK: pli [sp, r2]
1355
13560x18 0xf9 0x01 0xf0
13570x15 0xf9 0x02 0xf0
13580x10 0xf9 0x32 0xf0
13590x18 0xf9 0x22 0xf0
13600x1d 0xf9 0x12 0xf0
13610x1d 0xf9 0x02 0xf0
1362
1363#------------------------------------------------------------------------------
1364# PLI(literal)
1365#------------------------------------------------------------------------------
1366# CHECK: pli [pc, #-0]
1367# CHECK: pli [pc, #-328]
1368# CHECK: pli [pc, #0]
1369
13700x1f 0xf9 0x00 0xf0
13710x1f 0xf9 0x48 0xf1
13720x9f 0xf9 0x00 0xf0
1373
1374
1375#------------------------------------------------------------------------------
1376# QADD/QADD16/QADD8
1377#------------------------------------------------------------------------------
1378# CHECK: qadd r1, r2, r3
1379# CHECK: qadd16 r1, r2, r3
1380# CHECK: qadd8 r1, r2, r3
1381# CHECK: itte gt
1382# CHECK: qaddgt r1, r2, r3
1383# CHECK: qadd16gt r1, r2, r3
1384# CHECK: qadd8le r1, r2, r3
1385
13860x83 0xfa 0x82 0xf1
13870x92 0xfa 0x13 0xf1
13880x82 0xfa 0x13 0xf1
13890xc6 0xbf
13900x83 0xfa 0x82 0xf1
13910x92 0xfa 0x13 0xf1
13920x82 0xfa 0x13 0xf1
1393
1394
1395#------------------------------------------------------------------------------
1396# QDADD/QDSUB
1397#------------------------------------------------------------------------------
1398# CHECK: qdadd r6, r7, r8
1399# CHECK: qdsub r6, r7, r8
1400# CHECK: itt hi
1401# CHECK: qdaddhi r6, r7, r8
1402# CHECK: qdsubhi r6, r7, r8
1403
14040x88 0xfa 0x97 0xf6
14050x88 0xfa 0xb7 0xf6
14060x84 0xbf
14070x88 0xfa 0x97 0xf6
14080x88 0xfa 0xb7 0xf6
1409
1410
1411#------------------------------------------------------------------------------
1412# QSAX
1413#------------------------------------------------------------------------------
1414# CHECK: qsax r9, r12, r0
1415# CHECK: it eq
1416# CHECK: qsaxeq r9, r12, r0
1417
14180xec 0xfa 0x10 0xf9
14190x08 0xbf
14200xec 0xfa 0x10 0xf9
1421
1422
1423#------------------------------------------------------------------------------
1424# QSUB/QSUB16/QSUB8
1425#------------------------------------------------------------------------------
1426# CHECK: qsub r1, r2, r3
1427# CHECK: qsub16 r1, r2, r3
1428# CHECK: qsub8 r1, r2, r3
1429# CHECK: itet le
1430# CHECK: qsuble r1, r2, r3
1431# CHECK: qsub16gt r1, r2, r3
1432# CHECK: qsub8le r1, r2, r3
1433
14340x83 0xfa 0xa2 0xf1
14350xd2 0xfa 0x13 0xf1
14360xc2 0xfa 0x13 0xf1
14370xd6 0xbf
14380x83 0xfa 0xa2 0xf1
14390xd2 0xfa 0x13 0xf1
14400xc2 0xfa 0x13 0xf1
1441
1442
1443#------------------------------------------------------------------------------
1444# RBIT
1445#------------------------------------------------------------------------------
1446# CHECK: rbit r1, r2
1447# CHECK: it ne
1448# CHECK: rbitne r1, r2
1449
14500x92 0xfa 0xa2 0xf1
14510x18 0xbf
14520x92 0xfa 0xa2 0xf1
1453
1454
1455#------------------------------------------------------------------------------
1456# REV
1457#------------------------------------------------------------------------------
1458# CHECK: rev.w r1, r2
1459# CHECK: rev.w r2, r8
1460# CHECK: itt ne
1461# CHECK: revne r1, r2
1462# CHECK: revne.w r1, r8
1463
14640x92 0xfa 0x82 0xf1
14650x98 0xfa 0x88 0xf2
14660x1c 0xbf
14670x11 0xba
14680x98 0xfa 0x88 0xf1
1469
1470
1471#------------------------------------------------------------------------------
1472# REV16
1473#------------------------------------------------------------------------------
1474# CHECK: rev16.w r1, r2
1475# CHECK: rev16.w r2, r8
1476# CHECK: itt ne
1477# CHECK: rev16ne r1, r2
1478# CHECK: rev16ne.w r1, r8
1479
14800x92 0xfa 0x92 0xf1
14810x98 0xfa 0x98 0xf2
14820x1c 0xbf
14830x51 0xba
14840x98 0xfa 0x98 0xf1
1485
1486
1487#------------------------------------------------------------------------------
1488# REVSH
1489#------------------------------------------------------------------------------
1490# CHECK: revsh.w r1, r2
1491# CHECK: revsh.w r2, r8
1492# CHECK: itt ne
1493# CHECK: revshne r1, r2
1494# CHECK: revshne.w r1, r8
1495
14960x92 0xfa 0xb2 0xf1
14970x98 0xfa 0xb8 0xf2
14980x1c 0xbf
14990xd1 0xba
15000x98 0xfa 0xb8 0xf1
1501
1502
1503#------------------------------------------------------------------------------
1504# ROR (immediate)
1505#------------------------------------------------------------------------------
1506# CHECK: ror.w r2, r3, #12
1507# CHECK: rors.w r8, r3, #31
1508# CHECK: rors.w r2, r3, #1
1509# CHECK: ror.w r2, r3, #4
1510# CHECK: rors.w r2, r12, #15
1511
1512# CHECK: ror.w r3, r3, #19
1513# CHECK: rors.w r8, r8, #2
1514# CHECK: rors.w r7, r7, #5
1515# CHECK: ror.w r12, r12, #21
1516
15170x4f 0xea 0x33 0x32
15180x5f 0xea 0xf3 0x78
15190x5f 0xea 0x73 0x02
15200x4f 0xea 0x33 0x12
15210x5f 0xea 0xfc 0x32
1522
15230x4f 0xea 0xf3 0x43
15240x5f 0xea 0xb8 0x08
15250x5f 0xea 0x77 0x17
15260x4f 0xea 0x7c 0x5c
1527
1528
1529#------------------------------------------------------------------------------
1530# ROR (register)
1531#------------------------------------------------------------------------------
1532# CHECK: ror.w r3, r4, r2
1533# CHECK: ror.w r1, r1, r2
1534# CHECK: rors.w r3, r4, r8
1535
15360x64 0xfa 0x02 0xf3
15370x61 0xfa 0x02 0xf1
15380x74 0xfa 0x08 0xf3
1539
1540
1541#------------------------------------------------------------------------------
1542# RRX
1543#------------------------------------------------------------------------------
1544# CHECK: rrx r1, r2
1545# CHECK: rrxs r1, r2
1546# CHECK: ite lt
1547# CHECK: rrxlt r9, r12
1548# CHECK: rrxsge r8, r3
1549
15500x4f 0xea 0x32 0x01
15510x5f 0xea 0x32 0x01
15520xb4 0xbf
15530x4f 0xea 0x3c 0x09
15540x5f 0xea 0x33 0x08
1555
1556#------------------------------------------------------------------------------
1557# RSB (immediate)
1558#------------------------------------------------------------------------------
1559# CHECK: rsb.w r2, r5, #1044480
1560# CHECK: rsbs.w r3, r12, #15
1561# CHECK: rsb.w r1, r1, #255
1562
15630xc5 0xf5 0x7f 0x22
15640xdc 0xf1 0x0f 0x03
15650xc1 0xf1 0xff 0x01
1566
1567
1568#------------------------------------------------------------------------------
1569# RSB (register)
1570#------------------------------------------------------------------------------
1571# CHECK: rsb r4, r4, r8
1572# CHECK: rsb r4, r9, r8
1573# CHECK: rsb r1, r4, r8, asr #3
1574# CHECK: rsbs r2, r1, r7, lsl #1
1575
15760xc4 0xeb 0x08 0x04
15770xc9 0xeb 0x08 0x04
15780xc4 0xeb 0xe8 0x01
15790xd1 0xeb 0x47 0x02
1580
1581
1582#------------------------------------------------------------------------------
1583# SADD16
1584#------------------------------------------------------------------------------
1585# CHECK: sadd16 r3, r4, r8
1586# CHECK: it ne
1587# CHECK: sadd16ne r3, r4, r8
1588
15890x94 0xfa 0x08 0xf3
15900x18 0xbf
15910x94 0xfa 0x08 0xf3
1592
1593
1594#------------------------------------------------------------------------------
1595# SADD8
1596#------------------------------------------------------------------------------
1597# CHECK: sadd8 r3, r4, r8
1598# CHECK: it ne
1599# CHECK: sadd8ne r3, r4, r8
1600
16010x84 0xfa 0x08 0xf3
16020x18 0xbf
16030x84 0xfa 0x08 0xf3
1604
1605
1606#------------------------------------------------------------------------------
1607# SASX
1608#------------------------------------------------------------------------------
1609# CHECK: sasx r9, r2, r7
1610# CHECK: it ne
1611# CHECK: sasxne r2, r5, r6
1612
16130xa2 0xfa 0x07 0xf9
16140x18 0xbf
16150xa5 0xfa 0x06 0xf2
1616
1617
1618#------------------------------------------------------------------------------
1619# SBC (immediate)
1620#------------------------------------------------------------------------------
1621# CHECK: sbc r0, r1, #4
1622# CHECK: sbcs r0, r1, #0
1623# CHECK: sbc r1, r2, #255
1624# CHECK: sbc r3, r7, #5570645
1625# CHECK: sbc r8, r12, #2852170240
1626# CHECK: sbc r9, r7, #2779096485
1627# CHECK: sbc r5, r3, #2264924160
1628# CHECK: sbc r4, r2, #2139095040
1629# CHECK: sbc r4, r2, #1664
1630
16310x61 0xf1 0x04 0x00
16320x71 0xf1 0x00 0x00
16330x62 0xf1 0xff 0x01
16340x67 0xf1 0x55 0x13
16350x6c 0xf1 0xaa 0x28
16360x67 0xf1 0xa5 0x39
16370x63 0xf1 0x07 0x45
16380x62 0xf1 0xff 0x44
16390x62 0xf5 0xd0 0x64
1640
1641
1642#------------------------------------------------------------------------------
1643# SBC (register)
1644#------------------------------------------------------------------------------
1645# CHECK: sbc.w r4, r5, r6
1646# CHECK: sbcs.w r4, r5, r6
1647# CHECK: sbc.w r9, r1, r3
1648# CHECK: sbcs.w r9, r1, r3
1649# CHECK: sbc.w r0, r1, r3, ror #4
1650# CHECK: sbcs.w r0, r1, r3, lsl #7
1651# CHECK: sbc.w r0, r1, r3, lsr #31
1652# CHECK: sbcs.w r0, r1, r3, asr #32
1653
16540x65 0xeb 0x06 0x04
16550x75 0xeb 0x06 0x04
16560x61 0xeb 0x03 0x09
16570x71 0xeb 0x03 0x09
16580x61 0xeb 0x33 0x10
16590x71 0xeb 0xc3 0x10
16600x61 0xeb 0xd3 0x70
16610x71 0xeb 0x23 0x00
1662
1663
1664#------------------------------------------------------------------------------
1665# SBFX
1666#------------------------------------------------------------------------------
1667# CHECK: sbfx r4, r5, #16, #1
1668# CHECK: it gt
1669# CHECK: sbfxgt r4, r5, #16, #16
1670
16710x45 0xf3 0x00 0x44
16720xc8 0xbf
16730x45 0xf3 0x0f 0x44
1674
1675
1676#------------------------------------------------------------------------------
1677# SEL
1678#------------------------------------------------------------------------------
1679# CHECK: sel r5, r9, r2
1680# CHECK: it le
1681# CHECK: selle r5, r9, r2
1682
16830xa9 0xfa 0x82 0xf5
16840xd8 0xbf
16850xa9 0xfa 0x82 0xf5
1686
1687
1688#------------------------------------------------------------------------------
1689# SEV
1690#------------------------------------------------------------------------------
1691# CHECK: sev.w
1692# CHECK: it eq
1693# CHECK: seveq.w
1694
16950xaf 0xf3 0x04 0x80
16960x08 0xbf
16970xaf 0xf3 0x04 0x80
1698
1699
1700#------------------------------------------------------------------------------
1701# SADD16/SADD8
1702#------------------------------------------------------------------------------
1703# CHECK: sadd16 r1, r2, r3
1704# CHECK: sadd8 r1, r2, r3
1705# CHECK: ite gt
1706# CHECK: sadd16gt r1, r2, r3
1707# CHECK: sadd8le r1, r2, r3
1708
17090x92 0xfa 0x03 0xf1
17100x82 0xfa 0x03 0xf1
17110xcc 0xbf
17120x92 0xfa 0x03 0xf1
17130x82 0xfa 0x03 0xf1
1714
1715
1716#------------------------------------------------------------------------------
1717# SHASX
1718#------------------------------------------------------------------------------
1719# CHECK: shasx r4, r8, r2
1720# CHECK: it gt
1721# CHECK: shasxgt r4, r8, r2
1722
17230xa8 0xfa 0x22 0xf4
17240xc8 0xbf
17250xa8 0xfa 0x22 0xf4
1726
1727
1728#------------------------------------------------------------------------------
1729# SHASX
1730#------------------------------------------------------------------------------
1731# CHECK: shsax r4, r8, r2
1732# CHECK: it gt
1733# CHECK: shsaxgt r4, r8, r2
1734
17350xe8 0xfa 0x22 0xf4
17360xc8 0xbf
17370xe8 0xfa 0x22 0xf4
1738
1739
1740#------------------------------------------------------------------------------
1741# SHSUB16/SHSUB8
1742#------------------------------------------------------------------------------
1743# CHECK: shsub16 r4, r8, r2
1744# CHECK: shsub8 r4, r8, r2
1745# CHECK: itt gt
1746# CHECK: shsub16gt r4, r8, r2
1747# CHECK: shsub8gt r4, r8, r2
1748
17490xd8 0xfa 0x22 0xf4
17500xc8 0xfa 0x22 0xf4
17510xc4 0xbf
17520xd8 0xfa 0x22 0xf4
17530xc8 0xfa 0x22 0xf4
1754
1755
1756#------------------------------------------------------------------------------
1757# SMLABB/SMLABT/SMLATB/SMLATT
1758#------------------------------------------------------------------------------
1759# CHECK: smlabb r3, r1, r9, r0
1760# CHECK: smlabt r5, r6, r4, r1
1761# CHECK: smlatb r4, r2, r3, r2
1762# CHECK: smlatt r8, r3, r8, r4
1763# CHECK: itete gt
1764# CHECK: smlabbgt r3, r1, r9, r0
1765# CHECK: smlabtle r5, r6, r4, r1
1766# CHECK: smlatbgt r4, r2, r3, r2
1767# CHECK: smlattle r8, r3, r8, r4
1768
17690x11 0xfb 0x09 0x03
17700x16 0xfb 0x14 0x15
17710x12 0xfb 0x23 0x24
17720x13 0xfb 0x38 0x48
17730xcb 0xbf
17740x11 0xfb 0x09 0x03
17750x16 0xfb 0x14 0x15
17760x12 0xfb 0x23 0x24
17770x13 0xfb 0x38 0x48
1778
1779
1780#------------------------------------------------------------------------------
1781# SMLAD/SMLADX
1782#------------------------------------------------------------------------------
1783# CHECK: smlad r2, r3, r5, r8
1784# CHECK: smladx r2, r3, r5, r8
1785# CHECK: itt hi
1786# CHECK: smladhi r2, r3, r5, r8
1787# CHECK: smladxhi r2, r3, r5, r8
1788
17890x23 0xfb 0x05 0x82
17900x23 0xfb 0x15 0x82
17910x84 0xbf
17920x23 0xfb 0x05 0x82
17930x23 0xfb 0x15 0x82
1794
1795
1796#------------------------------------------------------------------------------
1797# SMLAL
1798#------------------------------------------------------------------------------
1799# CHECK: smlal r2, r3, r5, r8
1800# CHECK: it eq
1801# CHECK: smlaleq r2, r3, r5, r8
1802
18030xc5 0xfb 0x08 0x23
18040x08 0xbf
18050xc5 0xfb 0x08 0x23
1806
1807
1808#------------------------------------------------------------------------------
1809# SMLALBB/SMLALBT/SMLALTB/SMLALTT
1810#------------------------------------------------------------------------------
1811# CHECK: smlalbb r3, r1, r9, r0
1812# CHECK: smlalbt r5, r6, r4, r1
1813# CHECK: smlaltb r4, r2, r3, r2
1814# CHECK: smlaltt r8, r3, r8, r4
1815# CHECK: iteet ge
1816# CHECK: smlalbbge r3, r1, r9, r0
1817# CHECK: smlalbtlt r5, r6, r4, r1
1818# CHECK: smlaltblt r4, r2, r3, r2
1819# CHECK: smlalttge r8, r3, r8, r4
1820
18210xc9 0xfb 0x80 0x31
18220xc4 0xfb 0x91 0x56
18230xc3 0xfb 0xa2 0x42
18240xc8 0xfb 0xb4 0x83
18250xad 0xbf
18260xc9 0xfb 0x80 0x31
18270xc4 0xfb 0x91 0x56
18280xc3 0xfb 0xa2 0x42
18290xc8 0xfb 0xb4 0x83
1830
1831#------------------------------------------------------------------------------
1832# SMLALD/SMLALDX
1833#------------------------------------------------------------------------------
1834# CHECK: smlald r2, r3, r5, r8
1835# CHECK: smlaldx r2, r3, r5, r8
1836# CHECK: ite eq
1837# CHECK: smlaldeq r2, r3, r5, r8
1838# CHECK: smlaldxne r2, r3, r5, r8
1839
18400xc5 0xfb 0xc8 0x23
18410xc5 0xfb 0xd8 0x23
18420x0c 0xbf
18430xc5 0xfb 0xc8 0x23
18440xc5 0xfb 0xd8 0x23
1845
1846
1847#------------------------------------------------------------------------------
1848# SMLAWB/SMLAWT
1849#------------------------------------------------------------------------------
1850# CHECK: smlawb r2, r3, r10, r8
1851# CHECK: smlawt r8, r3, r5, r9
1852# CHECK: ite eq
1853# CHECK: smlawbeq r2, r7, r5, r8
1854# CHECK: smlawtne r1, r3, r0, r8
1855
18560x33 0xfb 0x0a 0x82
18570x33 0xfb 0x15 0x98
18580x0c 0xbf
18590x37 0xfb 0x05 0x82
18600x33 0xfb 0x10 0x81
1861
1862
1863#------------------------------------------------------------------------------
1864# SMLSD/SMLSDX
1865#------------------------------------------------------------------------------
1866# CHECK: smlsd r2, r3, r5, r8
1867# CHECK: smlsdx r2, r3, r5, r8
1868# CHECK: ite le
1869# CHECK: smlsdle r2, r3, r5, r8
1870# CHECK: smlsdxgt r2, r3, r5, r8
1871
18720x43 0xfb 0x05 0x82
18730x43 0xfb 0x15 0x82
18740xd4 0xbf
18750x43 0xfb 0x05 0x82
18760x43 0xfb 0x15 0x82
1877
1878
1879#------------------------------------------------------------------------------
1880# SMLSLD/SMLSLDX
1881#------------------------------------------------------------------------------
1882# CHECK: smlsld r2, r9, r5, r1
1883# CHECK: smlsldx r4, r11, r2, r8
1884# CHECK: ite ge
1885# CHECK: smlsldge r8, r2, r5, r6
1886# CHECK: smlsldxlt r1, r0, r3, r8
1887
18880xd5 0xfb 0xc1 0x29
18890xd2 0xfb 0xd8 0x4b
18900xac 0xbf
18910xd5 0xfb 0xc6 0x82
18920xd3 0xfb 0xd8 0x10
1893
1894
1895#------------------------------------------------------------------------------
1896# SMMLA/SMMLAR
1897#------------------------------------------------------------------------------
1898# CHECK: smmla r1, r2, r3, r4
1899# CHECK: smmlar r4, r3, r2, r1
1900# CHECK: ite lo
1901# CHECK: smmlalo r1, r2, r3, r4
1902# CHECK: smmlarhs r4, r3, r2, r1
1903
19040x52 0xfb 0x03 0x41
19050x53 0xfb 0x12 0x14
19060x34 0xbf
19070x52 0xfb 0x03 0x41
19080x53 0xfb 0x12 0x14
1909
1910
1911#------------------------------------------------------------------------------
1912# SMMLS/SMMLSR
1913#------------------------------------------------------------------------------
1914# CHECK: smmls r1, r2, r3, r4
1915# CHECK: smmlsr r4, r3, r2, r1
1916# CHECK: ite lo
1917# CHECK: smmlslo r1, r2, r3, r4
1918# CHECK: smmlsrhs r4, r3, r2, r1
1919
19200x62 0xfb 0x03 0x41
19210x63 0xfb 0x12 0x14
19220x34 0xbf
19230x62 0xfb 0x03 0x41
19240x63 0xfb 0x12 0x14
1925
1926#------------------------------------------------------------------------------
1927# SSAT
1928#------------------------------------------------------------------------------
1929# CHECK: ssat r9, #30, r0, asr #2
1930
19310x20 0xf3 0x9d 0x09
1932
1933#------------------------------------------------------------------------------
1934# STR (immediate)
1935#------------------------------------------------------------------------------
1936# CHECK: str r10, [r11], #0
1937
19380x4b 0xf8 0x00 0xab
1939
1940#------------------------------------------------------------------------------
1941# STRD (immediate)
1942#------------------------------------------------------------------------------
1943# CHECK: strd r1, r1, [r0], #0
1944# CHECK: strd r6, r3, [r5], #-8
1945# CHECK: strd r8, r5, [r5], #-0
1946# CHECK: strd r7, r4, [r5], #-4
1947# CHECK: strd r0, r1, [r2, #-0]!
1948# CHECK: strd r0, r1, [r2, #0]!
1949# CHECK: strd r0, r1, [r2, #-0]
1950
19510xe0 0xe8 0x00 0x11
19520x65 0xe8 0x02 0x63
19530x65 0xe8 0x00 0x85
19540x65 0xe8 0x01 0x74
19550x62 0xe9 0x00 0x01
19560xe2 0xe9 0x00 0x01
19570x42 0xe9 0x00 0x01
1958
1959#------------------------------------------------------------------------------
1960# STREX/STREXB/STREXH/STREXD
1961#------------------------------------------------------------------------------
1962# CHECK: strex r1, r8, [r4]
1963# CHECK: strex r8, r2, [r4]
1964# CHECK: strex r2, r12, [sp, #128]
1965# CHECK: strexb r5, r1, [r7]
1966# CHECK: strexh r9, r7, [r12]
1967# CHECK: strexd r9, r3, r6, [r4]
1968
19690x44 0xe8 0x00 0x81
19700x44 0xe8 0x00 0x28
19710x4d 0xe8 0x20 0xc2
19720xc7 0xe8 0x45 0x1f
19730xcc 0xe8 0x59 0x7f
19740xc4 0xe8 0x79 0x36
1975
1976
1977#------------------------------------------------------------------------------
1978# STRH(immediate)
1979#------------------------------------------------------------------------------
1980# CHECK: strh r5, [r5, #-4]
1981# CHECK: strh r5, [r6, #32]
1982# CHECK: strh.w r5, [r6, #33]
1983# CHECK: strh.w r5, [r6, #257]
1984# CHECK: strh.w lr, [r7, #257]
1985# CHECK: strh r5, [r8, #255]!
1986# CHECK: strh r2, [r5, #4]!
1987# CHECK: strh r1, [r4, #-4]!
1988# CHECK: strh r1, [r4, #0]!
1989# CHECK: strh lr, [r3], #255
1990# CHECK: strh r9, [r2], #4
1991# CHECK: strh r3, [sp], #-4
1992
19930x25 0xf8 0x04 0x5c
19940x35 0x84
19950xa6 0xf8 0x21 0x50
19960xa6 0xf8 0x01 0x51
19970xa7 0xf8 0x01 0xe1
19980x28 0xf8 0xff 0x5f
19990x25 0xf8 0x04 0x2f
20000x24 0xf8 0x04 0x1d
20010x24 0xf8 0x00 0x1f
20020x23 0xf8 0xff 0xeb
20030x22 0xf8 0x04 0x9b
20040x2d 0xf8 0x04 0x39
2005
2006
2007#------------------------------------------------------------------------------
2008# STRH(register)
2009#------------------------------------------------------------------------------
2010# CHECK: strh.w r1, [r8, r1]
2011# CHECK: strh.w r4, [r5, r2]
2012# CHECK: strh.w r6, [r0, r2, lsl #3]
2013# CHECK: strh.w r8, [r8, r2, lsl #2]
2014# CHECK: strh.w r7, [sp, r2, lsl #1]
2015# CHECK: strh.w r7, [sp, r2]
2016
20170x28 0xf8 0x01 0x10
20180x25 0xf8 0x02 0x40
20190x20 0xf8 0x32 0x60
20200x28 0xf8 0x22 0x80
20210x2d 0xf8 0x12 0x70
20220x2d 0xf8 0x02 0x70
2023
2024
2025#------------------------------------------------------------------------------
2026# STRHT
2027#------------------------------------------------------------------------------
2028# CHECK: strht r1, [r2]
2029# CHECK: strht r1, [r8]
2030# CHECK: strht r1, [r8, #3]
2031# CHECK: strht r1, [r8, #255]
2032
20330x22 0xf8 0x00 0x1e
20340x28 0xf8 0x00 0x1e
20350x28 0xf8 0x03 0x1e
20360x28 0xf8 0xff 0x1e
2037
2038
2039#------------------------------------------------------------------------------
2040# STRT
2041#------------------------------------------------------------------------------
2042# CHECK: strt r1, [r2]
2043# CHECK: strt r1, [r8]
2044# CHECK: strt r1, [r8, #3]
2045# CHECK: strt r1, [r8, #255]
2046
20470x42 0xf8 0x00 0x1e
20480x48 0xf8 0x00 0x1e
20490x48 0xf8 0x03 0x1e
20500x48 0xf8 0xff 0x1e
2051
2052
2053#------------------------------------------------------------------------------
2054# SUB (immediate)
2055#------------------------------------------------------------------------------
2056# CHECK: itet eq
2057# CHECK: subeq r1, r2, #4
2058# CHECK: subwne r5, r3, #1023
2059# CHECK: subweq r4, r5, #293
2060# CHECK: sub.w r2, sp, #1024
2061# CHECK: sub.w r2, r8, #65280
2062# CHECK: subw r2, r3, #257
2063# CHECK: sub.w r12, r6, #256
2064# CHECK: subw r12, r6, #256
2065# CHECK: subs.w r1, r2, #496
2066# CHECK: subs pc, lr, #4
2067
20680x0a 0xbf
20690x11 0x1f
20700xa3 0xf2 0xff 0x35
20710xa5 0xf2 0x25 0x14
20720xad 0xf5 0x80 0x62
20730xa8 0xf5 0x7f 0x42
20740xa3 0xf2 0x01 0x12
20750xa6 0xf5 0x80 0x7c
20760xa6 0xf2 0x00 0x1c
20770xb2 0xf5 0xf8 0x71
20780xde 0xf3 0x04 0x8f
2079
2080
2081#------------------------------------------------------------------------------
2082# SUB (register)
2083#------------------------------------------------------------------------------
2084# CHECK: sub.w r4, r5, r6
2085# CHECK: sub.w r4, r5, r6, lsl #5
2086# CHECK: sub.w r4, r5, r6, lsr #5
2087# CHECK: sub.w r4, r5, r6, lsr #5
2088# CHECK: sub.w r4, r5, r6, asr #5
2089# CHECK: sub.w r4, r5, r6, ror #5
2090# CHECK: sub.w r5, r2, r12, rrx
2091
20920xa5 0xeb 0x06 0x04
20930xa5 0xeb 0x46 0x14
20940xa5 0xeb 0x56 0x14
20950xa5 0xeb 0x56 0x14
20960xa5 0xeb 0x66 0x14
20970xa5 0xeb 0x76 0x14
20980xa2 0xeb 0x3c 0x05
2099
2100
2101#------------------------------------------------------------------------------
2102# SVC
2103#------------------------------------------------------------------------------
2104# CHECK: svc #0
2105# CHECK: ite eq
2106# CHECK: svceq #255
2107# CHECK: svcne #33
2108
21090x00 0xdf
21100x0c 0xbf
21110xff 0xdf
21120x21 0xdf
2113
2114#------------------------------------------------------------------------------
2115# SXTAB
2116#------------------------------------------------------------------------------
2117# CHECK:  sxtab r2, r3, r4
2118# CHECK:  sxtab r4, r5, r6
2119# CHECK:  it lt
2120# CHECK:  sxtablt r6, r2, r9, ror #8
2121# CHECK:  sxtab r5, r1, r4, ror #16
2122# CHECK:  sxtab r7, r8, r3, ror #24
2123
21240x43 0xfa 0x84 0xf2
21250x45 0xfa 0x86 0xf4
21260xb8 0xbf
21270x42 0xfa 0x99 0xf6
21280x41 0xfa 0xa4 0xf5
21290x48 0xfa 0xb3 0xf7
2130
2131
2132#------------------------------------------------------------------------------
2133# SXTAB16
2134#------------------------------------------------------------------------------
2135# CHECK:  sxtab16 r6, r2, r7
2136# CHECK:  sxtab16 r3, r5, r8, ror #8
2137# CHECK:  sxtab16 r3, r2, r1, ror #16
2138# CHECK:  ite ne
2139# CHECK:  sxtab16ne r0, r1, r4
2140# CHECK:  sxtab16eq r1, r2, r3, ror #24
2141
21420x22 0xfa 0x87 0xf6
21430x25 0xfa 0x98 0xf3
21440x22 0xfa 0xa1 0xf3
21450x14 0xbf
21460x21 0xfa 0x84 0xf0
21470x22 0xfa 0xb3 0xf1
2148
2149
2150#------------------------------------------------------------------------------
2151# SXTAH
2152#------------------------------------------------------------------------------
2153# CHECK:  sxtah r1, r3, r9
2154# CHECK:  sxtah r3, r8, r3, ror #8
2155# CHECK:  sxtah r9, r3, r3, ror #24
2156# CHECK:  ite hi
2157# CHECK:  sxtahhi r6, r1, r6
2158# CHECK:  sxtahls r2, r2, r4, ror #16
2159
21600x03 0xfa 0x89 0xf1
21610x08 0xfa 0x93 0xf3
21620x03 0xfa 0xb3 0xf9
21630x8c 0xbf
21640x01 0xfa 0x86 0xf6
21650x02 0xfa 0xa4 0xf2
2166
2167
2168#------------------------------------------------------------------------------
2169# SXTB
2170#------------------------------------------------------------------------------
2171# CHECK:  sxtb r5, r6
2172# CHECK:  sxtb.w r6, r9, ror #8
2173# CHECK:  sxtb.w r8, r3, ror #24
2174# CHECK:  ite ge
2175# CHECK:  sxtbge r2, r4
2176# CHECK:  sxtblt.w r5, r1, ror #16
2177
21780x75 0xb2
21790x4f 0xfa 0x99 0xf6
21800x4f 0xfa 0xb3 0xf8
21810xac 0xbf
21820x62 0xb2
21830x4f 0xfa 0xa1 0xf5
2184
2185
2186#------------------------------------------------------------------------------
2187# SXTB16
2188#------------------------------------------------------------------------------
2189# CHECK:  sxtb16 r1, r4
2190# CHECK:  sxtb16 r6, r7
2191# CHECK:  sxtb16 r3, r1, ror #16
2192# CHECK:  ite hs
2193# CHECK:  sxtb16hs r3, r5, ror #8
2194# CHECK:  sxtb16lo r2, r3, ror #24
2195
21960x2f 0xfa 0x84 0xf1
21970x2f 0xfa 0x87 0xf6
21980x2f 0xfa 0xa1 0xf3
21990x2c 0xbf
22000x2f 0xfa 0x95 0xf3
22010x2f 0xfa 0xb3 0xf2
2202
2203
2204#------------------------------------------------------------------------------
2205# SXTH
2206#------------------------------------------------------------------------------
2207# CHECK:  sxth r1, r6
2208# CHECK:  sxth.w r3, r8, ror #8
2209# CHECK:  sxth.w r9, r3, ror #24
2210# CHECK:  itt ne
2211# CHECK:  sxthne.w r3, r9
2212# CHECK:  sxthne.w r2, r2, ror #16
2213
22140x31 0xb2
22150x0f 0xfa 0x98 0xf3
22160x0f 0xfa 0xb3 0xf9
22170x1c 0xbf
22180x0f 0xfa 0x89 0xf3
22190x0f 0xfa 0xa2 0xf2
2220
2221
2222#------------------------------------------------------------------------------
2223# SXTB
2224#------------------------------------------------------------------------------
2225# CHECK:  sxtb r5, r6
2226# CHECK:  sxtb.w r6, r9, ror #8
2227# CHECK:  sxtb.w r8, r3, ror #24
2228# CHECK:  ite ge
2229# CHECK:  sxtbge r2, r4
2230# CHECK:  sxtblt.w r5, r1, ror #16
2231
22320x75 0xb2
22330x4f 0xfa 0x99 0xf6
22340x4f 0xfa 0xb3 0xf8
22350xac 0xbf
22360x62 0xb2
22370x4f 0xfa 0xa1 0xf5
2238
2239
2240#------------------------------------------------------------------------------
2241# SXTB16
2242#------------------------------------------------------------------------------
2243# CHECK:  sxtb16 r1, r4
2244# CHECK:  sxtb16 r6, r7
2245# CHECK:  sxtb16 r3, r1, ror #16
2246# CHECK:  ite hs
2247# CHECK:  sxtb16hs r3, r5, ror #8
2248# CHECK:  sxtb16lo r2, r3, ror #24
2249
22500x2f 0xfa 0x84 0xf1
22510x2f 0xfa 0x87 0xf6
22520x2f 0xfa 0xa1 0xf3
22530x2c 0xbf
22540x2f 0xfa 0x95 0xf3
22550x2f 0xfa 0xb3 0xf2
2256
2257
2258#------------------------------------------------------------------------------
2259# SXTH
2260#------------------------------------------------------------------------------
2261# CHECK:  sxth r1, r6
2262# CHECK:  sxth.w r3, r8, ror #8
2263# CHECK:  sxth.w r9, r3, ror #24
2264# CHECK:  itt ne
2265# CHECK:  sxthne.w r3, r9
2266# CHECK:  sxthne.w r2, r2, ror #16
2267
22680x31 0xb2
22690x0f 0xfa 0x98 0xf3
22700x0f 0xfa 0xb3 0xf9
22710x1c 0xbf
22720x0f 0xfa 0x89 0xf3
22730x0f 0xfa 0xa2 0xf2
2274
2275
2276#------------------------------------------------------------------------------
2277# TBB/TBH
2278#------------------------------------------------------------------------------
2279# CHECK:  tbb [r3, r8]
2280# CHECK:  tbh [r3, r8, lsl #1]
2281# CHECK:  it eq
2282# CHECK:  tbbeq [r3, r8]
2283# CHECK:  it hs
2284# CHECK:  tbhhs [r3, r8, lsl #1]
2285
22860xd3 0xe8 0x08 0xf0
22870xd3 0xe8 0x18 0xf0
22880x08 0xbf
22890xd3 0xe8 0x08 0xf0
22900x28 0xbf
22910xd3 0xe8 0x18 0xf0
2292
2293
2294#------------------------------------------------------------------------------
2295# TEQ
2296#------------------------------------------------------------------------------
2297# CHECK:  teq.w r5, #61440
2298# CHECK:  teq.w r4, r5
2299# CHECK:  teq.w r4, r5, lsl #5
2300# CHECK:  teq.w r4, r5, lsr #5
2301# CHECK:  teq.w r4, r5, lsr #5
2302# CHECK:  teq.w r4, r5, asr #5
2303# CHECK:  teq.w r4, r5, ror #5
2304
23050x95 0xf4 0x70 0x4f
23060x94 0xea 0x05 0x0f
23070x94 0xea 0x45 0x1f
23080x94 0xea 0x55 0x1f
23090x94 0xea 0x55 0x1f
23100x94 0xea 0x65 0x1f
23110x94 0xea 0x75 0x1f
2312
2313
2314#------------------------------------------------------------------------------
2315# TST
2316#------------------------------------------------------------------------------
2317# CHECK:  tst.w r5, #61440
2318# CHECK:  tst r2, r5
2319# CHECK:  tst.w r3, r12, lsl #5
2320# CHECK:  tst.w r4, r11, lsr #4
2321# CHECK:  tst.w r5, r10, lsr #12
2322# CHECK:  tst.w r6, r9, asr #30
2323# CHECK:  tst.w r7, r8, ror #2
2324
23250x15 0xf4 0x70 0x4f
23260x2a 0x42
23270x13 0xea 0x4c 0x1f
23280x14 0xea 0x1b 0x1f
23290x15 0xea 0x1a 0x3f
23300x16 0xea 0xa9 0x7f
23310x17 0xea 0xb8 0x0f
2332
2333
2334#------------------------------------------------------------------------------
2335# UADD16/UADD8
2336#------------------------------------------------------------------------------
2337# CHECK:  uadd16 r1, r2, r3
2338# CHECK:  uadd8 r1, r2, r3
2339# CHECK:  ite gt
2340# CHECK:  uadd16gt r1, r2, r3
2341# CHECK:  uadd8le r1, r2, r3
2342
23430x92 0xfa 0x43 0xf1
23440x82 0xfa 0x43 0xf1
23450xcc 0xbf
23460x92 0xfa 0x43 0xf1
23470x82 0xfa 0x43 0xf1
2348
2349
2350#------------------------------------------------------------------------------
2351# UASX
2352#------------------------------------------------------------------------------
2353# CHECK:  uasx r9, r12, r0
2354# CHECK:  it eq
2355# CHECK:  uasxeq r9, r12, r0
2356# CHECK:  uasx r9, r12, r0
2357# CHECK:  it eq
2358# CHECK:  uasxeq r9, r12, r0
2359
23600xac 0xfa 0x40 0xf9
23610x08 0xbf
23620xac 0xfa 0x40 0xf9
23630xac 0xfa 0x40 0xf9
23640x08 0xbf
23650xac 0xfa 0x40 0xf9
2366
2367
2368#------------------------------------------------------------------------------
2369# UBFX
2370#------------------------------------------------------------------------------
2371# CHECK:  ubfx r4, r5, #16, #1
2372# CHECK:  it gt
2373# CHECK:  ubfxgt r4, r5, #16, #16
2374
23750xc5 0xf3 0x00 0x44
23760xc8 0xbf
23770xc5 0xf3 0x0f 0x44
2378
2379
2380#------------------------------------------------------------------------------
2381# UHADD16/UHADD8
2382#------------------------------------------------------------------------------
2383# CHECK:  uhadd16 r4, r8, r2
2384# CHECK:  uhadd8 r4, r8, r2
2385# CHECK:  itt gt
2386# CHECK:  uhadd16gt r4, r8, r2
2387# CHECK:  uhadd8gt r4, r8, r2
2388
23890x98 0xfa 0x62 0xf4
23900x88 0xfa 0x62 0xf4
23910xc4 0xbf
23920x98 0xfa 0x62 0xf4
23930x88 0xfa 0x62 0xf4
2394
2395
2396#------------------------------------------------------------------------------
2397# UHASX/UHSAX
2398#------------------------------------------------------------------------------
2399# CHECK:  uhasx r4, r1, r5
2400# CHECK:  uhsax r5, r6, r6
2401# CHECK:  itt gt
2402# CHECK:  uhasxgt r6, r9, r8
2403# CHECK:  uhsaxgt r7, r8, r12
2404
24050xa1 0xfa 0x65 0xf4
24060xe6 0xfa 0x66 0xf5
24070xc4 0xbf
24080xa9 0xfa 0x68 0xf6
24090xe8 0xfa 0x6c 0xf7
2410
2411#------------------------------------------------------------------------------
2412# UHSUB16/UHSUB8
2413#------------------------------------------------------------------------------
2414# CHECK:  uhsub16 r5, r8, r3
2415# CHECK:  uhsub8 r1, r7, r6
2416# CHECK:  itt lt
2417# CHECK:  uhsub16lt r4, r9, r12
2418# CHECK:  uhsub8lt r3, r1, r5
2419
24200xd8 0xfa 0x63 0xf5
24210xc7 0xfa 0x66 0xf1
24220xbc 0xbf
24230xd9 0xfa 0x6c 0xf4
24240xc1 0xfa 0x65 0xf3
2425
2426
2427#------------------------------------------------------------------------------
2428# UMAAL
2429#------------------------------------------------------------------------------
2430# CHECK:  umaal r3, r4, r5, r6
2431# CHECK:  it lt
2432# CHECK:  umaallt r3, r4, r5, r6
2433
24340xe5 0xfb 0x66 0x34
24350xb8 0xbf
24360xe5 0xfb 0x66 0x34
2437
2438
2439#------------------------------------------------------------------------------
2440# UMLAL
2441#------------------------------------------------------------------------------
2442# CHECK:  umlal r2, r4, r6, r8
2443# CHECK:  it gt
2444# CHECK:  umlalgt r6, r1, r2, r6
2445
24460xe6 0xfb 0x08 0x24
24470xc8 0xbf
24480xe2 0xfb 0x06 0x61
2449
2450
2451#------------------------------------------------------------------------------
2452# UMULL
2453#------------------------------------------------------------------------------
2454# CHECK:  umull r2, r4, r6, r8
2455# CHECK:  it gt
2456# CHECK:  umullgt r6, r1, r2, r6
2457
24580xa6 0xfb 0x08 0x24
24590xc8 0xbf
24600xa2 0xfb 0x06 0x61
2461
2462
2463#------------------------------------------------------------------------------
2464# UQADD16/UQADD8
2465#------------------------------------------------------------------------------
2466# CHECK:  uqadd16 r1, r2, r3
2467# CHECK:  uqadd8 r3, r4, r8
2468# CHECK:  ite gt
2469# CHECK:  uqadd16gt r4, r7, r9
2470# CHECK:  uqadd8le r8, r1, r2
2471
24720x92 0xfa 0x53 0xf1
24730x84 0xfa 0x58 0xf3
24740xcc 0xbf
24750x97 0xfa 0x59 0xf4
24760x81 0xfa 0x52 0xf8
2477
2478
2479#------------------------------------------------------------------------------
2480# UQASX/UQSAX
2481#------------------------------------------------------------------------------
2482# CHECK:  uqasx r1, r2, r3
2483# CHECK:  uqsax r3, r4, r8
2484# CHECK:  ite gt
2485# CHECK:  uqasxgt r4, r7, r9
2486# CHECK:  uqsaxle r8, r1, r2
2487
24880xa2 0xfa 0x53 0xf1
24890xe4 0xfa 0x58 0xf3
24900xcc 0xbf
24910xa7 0xfa 0x59 0xf4
24920xe1 0xfa 0x52 0xf8
2493
2494
2495#------------------------------------------------------------------------------
2496# UQSUB16/UQSUB8
2497#------------------------------------------------------------------------------
2498# CHECK:  uqsub8 r8, r2, r9
2499# CHECK:  uqsub16 r1, r9, r7
2500# CHECK:  ite gt
2501# CHECK:  uqsub8gt r3, r1, r6
2502# CHECK:  uqsub16le r4, r6, r4
2503
25040xc2 0xfa 0x59 0xf8
25050xd9 0xfa 0x57 0xf1
25060xcc 0xbf
25070xc1 0xfa 0x56 0xf3
25080xd6 0xfa 0x54 0xf4
2509
2510
2511#------------------------------------------------------------------------------
2512# UQSUB16/UQSUB8
2513#------------------------------------------------------------------------------
2514# CHECK:  usad8 r1, r9, r7
2515# CHECK:  usada8 r8, r2, r9, r12
2516# CHECK:  ite gt
2517# CHECK:  usada8gt r3, r1, r6, r9
2518# CHECK:  usad8le r4, r6, r4
2519
25200x79 0xfb 0x07 0xf1
25210x72 0xfb 0x09 0xc8
25220xcc 0xbf
25230x71 0xfb 0x06 0x93
25240x76 0xfb 0x04 0xf4
2525
2526
2527#------------------------------------------------------------------------------
2528# USAT
2529#------------------------------------------------------------------------------
2530# CHECK:  usat r8, #1, r10
2531# CHECK:  usat r8, #4, r10
2532# CHECK:  usat r8, #5, r10, lsl #31
2533# CHECK:  usat r8, #16, r10, asr #1
2534
25350x8a 0xf3 0x01 0x08
25360x8a 0xf3 0x04 0x08
25370x8a 0xf3 0xc5 0x78
25380xaa 0xf3 0x50 0x08
2539
2540
2541#------------------------------------------------------------------------------
2542# USAT16
2543#------------------------------------------------------------------------------
2544# CHECK:  usat16	r2, #2, r7
2545# CHECK:  usat16	r3, #15, r5
2546
25470xa7 0xf3 0x02 0x02
25480xa5 0xf3 0x0f 0x03
2549
2550
2551#------------------------------------------------------------------------------
2552# USAX
2553#------------------------------------------------------------------------------
2554# CHECK:  usax r2, r3, r4
2555# CHECK:  it ne
2556# CHECK:  usaxne r6, r1, r9
2557# CHECK:  usax r2, r3, r4
2558# CHECK:  it ne
2559# CHECK:  usaxne r6, r1, r9
2560
25610xe3 0xfa 0x44 0xf2
25620x18 0xbf
25630xe1 0xfa 0x49 0xf6
25640xe3 0xfa 0x44 0xf2
25650x18 0xbf
25660xe1 0xfa 0x49 0xf6
2567
2568
2569#------------------------------------------------------------------------------
2570# USUB16/USUB8
2571#------------------------------------------------------------------------------
2572# CHECK:  usub16 r4, r2, r7
2573# CHECK:  usub8 r1, r8, r5
2574# CHECK:  ite hi
2575# CHECK:  usub16hi r1, r1, r3
2576# CHECK:  usub8ls r9, r2, r3
2577
25780xd2 0xfa 0x47 0xf4
25790xc8 0xfa 0x45 0xf1
25800x8c 0xbf
25810xd1 0xfa 0x43 0xf1
25820xc2 0xfa 0x43 0xf9
2583
2584
2585#------------------------------------------------------------------------------
2586# UXTAB
2587#------------------------------------------------------------------------------
2588# CHECK:  uxtab r2, r3, r4
2589# CHECK:  uxtab r4, r5, r6
2590# CHECK:  it lt
2591# CHECK:  uxtablt r6, r2, r9, ror #8
2592# CHECK:  uxtab r5, r1, r4, ror #16
2593# CHECK:  uxtab r7, r8, r3, ror #24
2594
25950x53 0xfa 0x84 0xf2
25960x55 0xfa 0x86 0xf4
25970xb8 0xbf
25980x52 0xfa 0x99 0xf6
25990x51 0xfa 0xa4 0xf5
26000x58 0xfa 0xb3 0xf7
2601
2602
2603#------------------------------------------------------------------------------
2604# UXTAB16
2605#------------------------------------------------------------------------------
2606# CHECK:  it ge
2607# CHECK:  uxtab16ge r0, r1, r4
2608# CHECK:  uxtab16 r6, r2, r7
2609# CHECK:  uxtab16 r3, r5, r8, ror #8
2610# CHECK:  uxtab16 r3, r2, r1, ror #16
2611# CHECK:  it eq
2612# CHECK:  uxtab16eq r1, r2, r3, ror #24
2613
26140xa8 0xbf
26150x31 0xfa 0x84 0xf0
26160x32 0xfa 0x87 0xf6
26170x35 0xfa 0x98 0xf3
26180x32 0xfa 0xa1 0xf3
26190x08 0xbf
26200x32 0xfa 0xb3 0xf1
2621
2622
2623#------------------------------------------------------------------------------
2624# UXTAH
2625#------------------------------------------------------------------------------
2626# CHECK:  uxtah r1, r3, r9
2627# CHECK:  it hi
2628# CHECK:  uxtahhi r6, r1, r6
2629# CHECK:  uxtah r3, r8, r3, ror #8
2630# CHECK:  it lo
2631# CHECK:  uxtahlo r2, r2, r4, ror #16
2632# CHECK:  uxtah r9, r3, r3, ror #24
2633
26340x13 0xfa 0x89 0xf1
26350x88 0xbf
26360x11 0xfa 0x86 0xf6
26370x18 0xfa 0x93 0xf3
26380x38 0xbf
26390x12 0xfa 0xa4 0xf2
26400x13 0xfa 0xb3 0xf9
2641
2642
2643#------------------------------------------------------------------------------
2644# UXTB
2645#------------------------------------------------------------------------------
2646# CHECK:  it ge
2647# CHECK:  uxtbge r2, r4
2648# CHECK:  uxtb r5, r6
2649# CHECK:  uxtb.w r6, r9, ror #8
2650# CHECK:  it lo
2651# CHECK:  uxtblo.w r5, r1, ror #16
2652# CHECK:  uxtb.w r8, r3, ror #24
2653
26540xa8 0xbf
26550xe2 0xb2
26560xf5 0xb2
26570x5f 0xfa 0x99 0xf6
26580x38 0xbf
26590x5f 0xfa 0xa1 0xf5
26600x5f 0xfa 0xb3 0xf8
2661
2662
2663#------------------------------------------------------------------------------
2664# UXTB16
2665#------------------------------------------------------------------------------
2666# CHECK:  uxtb16 r1, r4
2667# CHECK:  uxtb16 r6, r7
2668# CHECK:  it hs
2669# CHECK:  uxtb16hs r3, r5, ror #8
2670# CHECK:  uxtb16 r3, r1, ror #16
2671# CHECK:  it ge
2672# CHECK:  uxtb16ge r2, r3, ror #24
2673
26740x3f 0xfa 0x84 0xf1
26750x3f 0xfa 0x87 0xf6
26760x28 0xbf
26770x3f 0xfa 0x95 0xf3
26780x3f 0xfa 0xa1 0xf3
26790xa8 0xbf
26800x3f 0xfa 0xb3 0xf2
2681
2682
2683#------------------------------------------------------------------------------
2684# UXTH
2685#------------------------------------------------------------------------------
2686# CHECK:  it ne
2687# CHECK:  uxthne.w r3, r9
2688# CHECK:  uxth r1, r6
2689# CHECK:  uxth.w r3, r8, ror #8
2690# CHECK:  it le
2691# CHECK:  uxthle.w r2, r2, ror #16
2692# CHECK:  uxth.w r9, r3, ror #24
2693
26940x18 0xbf
26950x1f 0xfa 0x89 0xf3
26960xb1 0xb2
26970x1f 0xfa 0x98 0xf3
26980xd8 0xbf
26990x1f 0xfa 0xa2 0xf2
27000x1f 0xfa 0xb3 0xf9
2701
2702
2703#------------------------------------------------------------------------------
2704# WFE/WFI/YIELD
2705#------------------------------------------------------------------------------
2706# CHECK:  wfe
2707# CHECK:  wfi
2708# CHECK:  yield
2709# CHECK:  itet lt
2710# CHECK:  wfelt
2711# CHECK:  wfige
2712# CHECK:  yieldlt
2713
27140x20 0xbf
27150x30 0xbf
27160x10 0xbf
27170xb6 0xbf
27180x20 0xbf
27190x30 0xbf
27200x10 0xbf
2721
2722#------------------------------------------------------------------------------
2723# Unallocated hints (They execute as NOPs, but software must not use them.)
2724#------------------------------------------------------------------------------
2725# CHECK: hint #6
2726# CHECK: hint.w #6
2727# CHECK: hint.w #102
2728
27290x60 0xbf
27300xaf 0xf3 0x06 0x80
27310xaf 0xf3 0x66 0x80
2732
2733