1# RUN: llvm-mc -triple=thumbv7-apple-darwin -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
160x41 0xf1 0x04 0x00
170x51 0xf1 0x00 0x00
180x42 0xf1 0xff 0x01
190x47 0xf1 0x55 0x13
200x4c 0xf1 0xaa 0x28
210x47 0xf1 0xa5 0x39
220x43 0xf1 0x07 0x45
230x42 0xf1 0xff 0x44
240x42 0xf5 0xd0 0x64
25
26#------------------------------------------------------------------------------
27# ADC (register)
28#------------------------------------------------------------------------------
29# CHECK: adc.w r4, r5, r6
30# CHECK: adcs.w r4, r5, r6
31# CHECK: adc.w r9, r1, r3
32# CHECK: adcs.w r9, r1, r3
33# CHECK: adc.w r0, r1, r3, ror #4
34# CHECK: adcs.w  r0, r1, r3, lsl #7
35# CHECK: adc.w r0, r1, r3, lsr #31
36# CHECK: adcs.w  r0, r1, r3, asr #32
37
380x45 0xeb 0x06 0x04
390x55 0xeb 0x06 0x04
400x41 0xeb 0x03 0x09
410x51 0xeb 0x03 0x09
420x41 0xeb 0x33 0x10
430x51 0xeb 0xc3 0x10
440x41 0xeb 0xd3 0x70
450x51 0xeb 0x23 0x00
46
47
48#------------------------------------------------------------------------------
49# ADD (immediate)
50#------------------------------------------------------------------------------
51# CHECK: itet eq
52# CHECK: addeq r1, r2, #4
53# CHECK: addwne r5, r3, #1023
54# CHECK: addweq r4, r5, #293
55# CHECK: add.w r2, sp, #1024
56# CHECK: add.w r2, r8, #65280
57# CHECK: addw r2, r3, #257
58# CHECK: add.w r12, r6, #256
59# CHECK: addw r12, r6, #256
60# CHECK: adds.w r1, r2, #496
61
620x0a 0xbf
630x11 0x1d
640x03 0xf2 0xff 0x35
650x05 0xf2 0x25 0x14
660x0d 0xf5 0x80 0x62
670x08 0xf5 0x7f 0x42
680x03 0xf2 0x01 0x12
690x06 0xf5 0x80 0x7c
700x06 0xf2 0x00 0x1c
710x12 0xf5 0xf8 0x71
72
73
74#------------------------------------------------------------------------------
75# ADD (register)
76#------------------------------------------------------------------------------
77# CHECK: add.w r1, r2, r8
78# CHECK: add.w r5, r9, r2, asr #32
79# CHECK: adds.w r7, r3, r1, lsl #31
80# CHECK: adds.w r0, r3, r6, lsr #25
81# CHECK: add.w r4, r8, r1, ror #12
82
830x02 0xeb 0x08 0x01
840x09 0xeb 0x22 0x05
850x13 0xeb 0xc1 0x77
860x13 0xeb 0x56 0x60
870x08 0xeb 0x31 0x34
88
89
90#------------------------------------------------------------------------------
91# ADR
92#------------------------------------------------------------------------------
93# CHECK: subw r11, pc, #3270
94# CHECK: subw r11, pc, #826
95
960xaf 0xf6 0xc6 0x4b
970xaf 0xf2 0x3a 0x3b
98
99#------------------------------------------------------------------------------
100# AND (immediate)
101#------------------------------------------------------------------------------
102# CHECK: and r2, r5, #1044480
103# CHECK: ands r3, r12, #15
104# CHECK: and r1, r1, #255
105
1060x05 0xf4 0x7f 0x22
1070x1c 0xf0 0x0f 0x03
1080x01 0xf0 0xff 0x01
109
110
111#------------------------------------------------------------------------------
112# AND (register)
113#------------------------------------------------------------------------------
114# CHECK: and.w r4, r9, r8
115# CHECK: and.w r1, r4, r8, asr #3
116# CHECK: ands.w r2, r1, r7, lsl #1
117# CHECK: ands.w r4, r5, r2, lsr #20
118# CHECK: and.w r9, r12, r1, ror #17
119
1200x09 0xea 0x08 0x04
1210x04 0xea 0xe8 0x01
1220x11 0xea 0x47 0x02
1230x15 0xea 0x12 0x54
1240x0c 0xea 0x71 0x49
125
126#------------------------------------------------------------------------------
127# ASR (immediate)
128#------------------------------------------------------------------------------
129# CHECK: asr.w r2, r3, #12
130# CHECK: asrs.w r8, r3, #32
131# CHECK: asrs.w r2, r3, #1
132# CHECK: asr.w r2, r3, #4
133# CHECK: asrs.w r2, r12, #15
134
135# CHECK: asr.w r3, r3, #19
136# CHECK: asrs.w r8, r8, #2
137# CHECK: asrs.w r7, r7, #5
138# CHECK: asr.w r12, r12, #21
139
1400x4f 0xea 0x23 0x32
1410x5f 0xea 0x23 0x08
1420x5f 0xea 0x63 0x02
1430x4f 0xea 0x23 0x12
1440x5f 0xea 0xec 0x32
145
1460x4f 0xea 0xe3 0x43
1470x5f 0xea 0xa8 0x08
1480x5f 0xea 0x67 0x17
1490x4f 0xea 0x6c 0x5c
150
151
152#------------------------------------------------------------------------------
153# ASR (register)
154#------------------------------------------------------------------------------
155# CHECK: asr.w r3, r4, r2
156# CHECK: asr.w r1, r1, r2
157# CHECK: asrs.w r3, r4, r8
158
1590x44 0xfa 0x02 0xf3
1600x41 0xfa 0x02 0xf1
1610x54 0xfa 0x08 0xf3
162
163#------------------------------------------------------------------------------
164# B
165#------------------------------------------------------------------------------
166# CHECK: bmi.w   #-183396
167
1680x13 0xf5 0xce 0xa9
169
170
171#------------------------------------------------------------------------------
172# BFC
173#------------------------------------------------------------------------------
174# CHECK: bfc r5, #3, #17
175# CHECK: it lo
176# CHECK: bfclo r5, #3, #17
177
1780x6f 0xf3 0xd3 0x05
1790x38 0xbf
1800x6f 0xf3 0xd3 0x05
181
182
183#------------------------------------------------------------------------------
184# BFI
185#------------------------------------------------------------------------------
186# CHECK: bfi r5, r2, #3, #17
187# CHECK: it ne
188# CHECK: bfine r5, r2, #3, #17
189# CHECK: bfi r6, r0, #0, #32
190# CHECK: bfi r6, r0, #31, #1
191
1920x62 0xf3 0xd3 0x05
1930x18 0xbf
1940x62 0xf3 0xd3 0x05
1950x60 0xf3 0x1f 0x06
1960x60 0xf3 0xdf 0x76
197
198
199#------------------------------------------------------------------------------
200# BIC
201#------------------------------------------------------------------------------
202# CHECK: bic r10, r1, #15
203# CHECK: bic.w r12, r3, r6
204# CHECK: bic.w r11, r2, r6, lsl #12
205# CHECK: bic.w r8, r4, r1, lsr #11
206# CHECK: bic.w r7, r5, r7, lsr #15
207# CHECK: bic.w r6, r7, r9, asr #32
208# CHECK: bic.w r5, r6, r8, ror #1
209
210# CHECK: bic r1, r1, #15
211# CHECK: bic.w r1, r1, r1
212# CHECK: bic.w r4, r4, r2, lsl #31
213# CHECK: bic.w r6, r6, r3, lsr #12
214# CHECK: bic.w r7, r7, r4, lsr #7
215# CHECK: bic.w r8, r8, r5, asr #15
216# CHECK: bic.w r12, r12, r6, ror #29
217
2180x21 0xf0 0x0f 0x0a
2190x23 0xea 0x06 0x0c
2200x22 0xea 0x06 0x3b
2210x24 0xea 0xd1 0x28
2220x25 0xea 0xd7 0x37
2230x27 0xea 0x29 0x06
2240x26 0xea 0x78 0x05
225
2260x21 0xf0 0x0f 0x01
2270x21 0xea 0x01 0x01
2280x24 0xea 0xc2 0x74
2290x26 0xea 0x13 0x36
2300x27 0xea 0xd4 0x17
2310x28 0xea 0xe5 0x38
2320x2c 0xea 0x76 0x7c
233
234
235#------------------------------------------------------------------------------
236# BXJ
237#------------------------------------------------------------------------------
238# CHECK: bxj r5
239# CHECK: it ne
240# CHECK: bxjne r7
241
2420xc5 0xf3 0x00 0x8f
2430x18 0xbf
2440xc7 0xf3 0x00 0x8f
245
246
247#------------------------------------------------------------------------------
248# CBZ/CBNZ
249#------------------------------------------------------------------------------
250# CHECK: cbnz    r7, #6
251# CHECK: cbnz    r7, #12
252
2530x1f 0xb9
2540x37 0xb9
255
256#------------------------------------------------------------------------------
257# CDP/CDP2
258#------------------------------------------------------------------------------
259# CHECK: cdp  p7, #1, c1, c1, c1, #4
260# CHECK: cdp2  p7, #1, c1, c1, c1, #4
261
2620x11 0xee 0x81 0x17
2630x11 0xfe 0x81 0x17
264
265
266#------------------------------------------------------------------------------
267# CLREX
268#------------------------------------------------------------------------------
269#CHECK: clrex
270#CHECK: it ne
271#CHECK: clrexne
272
2730xbf 0xf3 0x2f 0x8f
2740x18 0xbf
2750xbf 0xf3 0x2f 0x8f
276
277
278#------------------------------------------------------------------------------
279# CLZ
280#------------------------------------------------------------------------------
281#CHECK: clz r1, r2
282#CHECK: it eq
283#CHECK: clzeq r1, r2
284
2850xb2 0xfa 0x82 0xf1
2860x08 0xbf
2870xb2 0xfa 0x82 0xf1
288
289
290#------------------------------------------------------------------------------
291# CMN
292#------------------------------------------------------------------------------
293#CHECK: cmn.w r1, #15
294#CHECK: cmn.w r8, r6
295#CHECK: cmn.w r1, r6, lsl #10
296#CHECK: cmn.w r1, r6, lsr #10
297#CHECK: cmn.w sp, r6, lsr #10
298#CHECK: cmn.w r1, r6, asr #10
299#CHECK: cmn.w r1, r6, ror #10
300
3010x11 0xf1 0x0f 0x0f
3020x18 0xeb 0x06 0x0f
3030x11 0xeb 0x86 0x2f
3040x11 0xeb 0x96 0x2f
3050x1d 0xeb 0x96 0x2f
3060x11 0xeb 0xa6 0x2f
3070x11 0xeb 0xb6 0x2f
308
309
310#------------------------------------------------------------------------------
311# CMP
312#------------------------------------------------------------------------------
313#CHECK: cmp.w r5, #65280
314#CHECK: cmp.w r4, r12
315#CHECK: cmp.w r9, r6, lsl #12
316#CHECK: cmp.w r3, r7, lsr #31
317#CHECK: cmp.w sp, r6, lsr #1
318#CHECK: cmp.w r2, r5, asr #24
319#CHECK: cmp.w r1, r4, ror #15
320
3210xb5 0xf5 0x7f 0x4f
3220xb4 0xeb 0x0c 0x0f
3230xb9 0xeb 0x06 0x3f
3240xb3 0xeb 0xd7 0x7f
3250xbd 0xeb 0x56 0x0f
3260xb2 0xeb 0x25 0x6f
3270xb1 0xeb 0xf4 0x3f
328
329
330#------------------------------------------------------------------------------
331# DBG
332#------------------------------------------------------------------------------
333#CHECK: dbg #5
334#CHECK: dbg #0
335#CHECK: dbg #15
336
3370xaf 0xf3 0xf5 0x80
3380xaf 0xf3 0xf0 0x80
3390xaf 0xf3 0xff 0x80
340
341
342#------------------------------------------------------------------------------
343# DMB
344#------------------------------------------------------------------------------
345#CHECK: dmb sy
346#CHECK: dmb st
347#CHECK: dmb ish
348#CHECK: dmb ishst
349#CHECK: dmb nsh
350#CHECK: dmb nshst
351#CHECK: dmb osh
352#CHECK: dmb oshst
353#CHECK: dmb
354
3550xbf 0xf3 0x5f 0x8f
3560xbf 0xf3 0x5e 0x8f
3570xbf 0xf3 0x5b 0x8f
3580xbf 0xf3 0x5a 0x8f
3590xbf 0xf3 0x57 0x8f
3600xbf 0xf3 0x56 0x8f
3610xbf 0xf3 0x53 0x8f
3620xbf 0xf3 0x52 0x8f
3630xbf 0xf3 0x5f 0x8f
364
365
366#------------------------------------------------------------------------------
367# DSB
368#------------------------------------------------------------------------------
369#CHECK: dsb sy
370#CHECK: dsb st
371#CHECK: dsb ish
372#CHECK: dsb ishst
373#CHECK: dsb nsh
374#CHECK: dsb nshst
375#CHECK: dsb osh
376#CHECK: dsb oshst
377
3780xbf 0xf3 0x4f 0x8f
3790xbf 0xf3 0x4e 0x8f
3800xbf 0xf3 0x4b 0x8f
3810xbf 0xf3 0x4a 0x8f
3820xbf 0xf3 0x47 0x8f
3830xbf 0xf3 0x46 0x8f
3840xbf 0xf3 0x43 0x8f
3850xbf 0xf3 0x42 0x8f
386
387
388#------------------------------------------------------------------------------
389# EOR
390#------------------------------------------------------------------------------
391#CHECK: eor r4, r5, #61440
392#CHECK: eor.w r4, r5, r6
393#CHECK: eor.w r4, r5, r6, lsl #5
394#CHECK: eor.w r4, r5, r6, lsr #5
395#CHECK: eor.w r4, r5, r6, lsr #5
396#CHECK: eor.w r4, r5, r6, asr #5
397#CHECK: eor.w r4, r5, r6, ror #5
398
3990x85 0xf4 0x70 0x44
4000x85 0xea 0x06 0x04
4010x85 0xea 0x46 0x14
4020x85 0xea 0x56 0x14
4030x85 0xea 0x56 0x14
4040x85 0xea 0x66 0x14
4050x85 0xea 0x76 0x14
406
407
408#------------------------------------------------------------------------------
409# ISB
410#------------------------------------------------------------------------------
411#CHECK: isb sy
412
4130xbf 0xf3 0x6f 0x8f
414
415#------------------------------------------------------------------------------
416# IT
417#------------------------------------------------------------------------------
418# Test encodings of a few full IT blocks, not just the IT instruction
419
420# CHECK: iteet eq
421# CHECK: addeq r0, r1, r2
422# CHECK: nopne
423# CHECK: subne r5, r6, r7
424# CHECK: addeq r1, r2, #4
425
4260x0d 0xbf
4270x88 0x18
4280x00 0xbf
4290xf5 0x1b
4300x11 0x1d
431
432# CHECK: ittee ls
433# CHECK: addls r0, r1, r2
434# CHECK: nopls
435# CHECK: subhi r5, r6, r7
436# CHECK: addhi r1, r2, #4
437
4380x99 0xbf
4390x88 0x18
4400x00 0xbf
4410xf5 0x1b
4420x11 0x1d
443
444
445#------------------------------------------------------------------------------
446# LDMIA
447#------------------------------------------------------------------------------
448# CHECK: ldm.w r4, {r4, r5, r8, r9}
449# CHECK: ldm.w r4, {r5, r6}
450# CHECK: ldm.w r5!, {r3, r8}
451# CHECK: ldm.w r4, {r4, r5, r8, r9}
452# CHECK: ldm.w r4, {r5, r6}
453# CHECK: ldm.w r5!, {r3, r8}
454# CHECK: ldm.w r5!, {r1, r2}
455# CHECK: ldm.w r2, {r1, r2}
456
457# CHECK: ldm.w r4, {r4, r5, r8, r9}
458# CHECK: ldm.w r4, {r5, r6}
459# CHECK: ldm.w r5!, {r3, r8}
460# CHECK: ldm.w r4, {r4, r5, r8, r9}
461# CHECK: ldm.w r4, {r5, r6}
462# CHECK: ldm.w r5!, {r3, r8}
463# CHECK: ldm.w r5!, {r3, r8}
464
4650x94 0xe8 0x30 0x03
4660x94 0xe8 0x60 0x00
4670xb5 0xe8 0x08 0x01
4680x94 0xe8 0x30 0x03
4690x94 0xe8 0x60 0x00
4700xb5 0xe8 0x08 0x01
4710xb5 0xe8 0x06 0x00
4720x92 0xe8 0x06 0x00
473
4740x94 0xe8 0x30 0x03
4750x94 0xe8 0x60 0x00
4760xb5 0xe8 0x08 0x01
4770x94 0xe8 0x30 0x03
4780x94 0xe8 0x60 0x00
4790xb5 0xe8 0x08 0x01
4800xb5 0xe8 0x08 0x01
481
482
483#------------------------------------------------------------------------------
484# LDMDB
485#------------------------------------------------------------------------------
486# CHECK: ldmdb r4, {r4, r5, r8, r9}
487# CHECK: ldmdb r4, {r5, r6}
488# CHECK: ldmdb r5!, {r3, r8}
489# CHECK: ldmdb r5!, {r3, r8}
490
4910x14 0xe9 0x30 0x03
4920x14 0xe9 0x60 0x00
4930x35 0xe9 0x08 0x01
4940x35 0xe9 0x08 0x01
495
496
497#------------------------------------------------------------------------------
498# LDR(immediate)
499#------------------------------------------------------------------------------
500# CHECK: ldr r5, [r5, #-4]
501# CHECK: ldr r5, [r6, #32]
502# CHECK: ldr.w r5, [r6, #33]
503# CHECK: ldr.w r5, [r6, #257]
504# CHECK: ldr.w pc, [r7, #257]
505
5060x55 0xf8 0x04 0x5c
5070x35 0x6a
5080xd6 0xf8 0x21 0x50
5090xd6 0xf8 0x01 0x51
5100xd7 0xf8 0x01 0xf1
511
512
513#------------------------------------------------------------------------------
514# LDR(register)
515#------------------------------------------------------------------------------
516# CHECK: ldr.w r1, [r8, r1]
517# CHECK: ldr.w r4, [r5, r2]
518# CHECK: ldr.w r6, [r0, r2, lsl #3]
519# CHECK: ldr.w r8, [r8, r2, lsl #2]
520# CHECK: ldr.w r7, [sp, r2, lsl #1]
521# CHECK: ldr.w r7, [sp, r2]
522# CHECK: ldr r2, [r4, #255]!
523# CHECK: ldr r8, [sp, #4]!
524# CHECK: ldr lr, [sp, #-4]!
525# CHECK: ldr r2, [r4], #255
526# CHECK: ldr r8, [sp], #4
527# CHECK: ldr lr, [sp], #-4
528
5290x58 0xf8 0x01 0x10
5300x55 0xf8 0x02 0x40
5310x50 0xf8 0x32 0x60
5320x58 0xf8 0x22 0x80
5330x5d 0xf8 0x12 0x70
5340x5d 0xf8 0x02 0x70
5350x54 0xf8 0xff 0x2f
5360x5d 0xf8 0x04 0x8f
5370x5d 0xf8 0x04 0xed
5380x54 0xf8 0xff 0x2b
5390x5d 0xf8 0x04 0x8b
5400x5d 0xf8 0x04 0xe9
541
542
543#------------------------------------------------------------------------------
544# LDRB(immediate)
545#------------------------------------------------------------------------------
546# CHECK: ldrb r5, [r5, #-4]
547# CHECK: ldrb.w r5, [r6, #32]
548# CHECK: ldrb.w r5, [r6, #33]
549# CHECK: ldrb.w r5, [r6, #257]
550# CHECK: ldrb.w lr, [r7, #257]
551
5520x15 0xf8 0x04 0x5c
5530x96 0xf8 0x20 0x50
5540x96 0xf8 0x21 0x50
5550x96 0xf8 0x01 0x51
5560x97 0xf8 0x01 0xe1
557
558
559#------------------------------------------------------------------------------
560# LDRB(register)
561#------------------------------------------------------------------------------
562# CHECK: ldrb.w r1, [r8, r1]
563# CHECK: ldrb.w r4, [r5, r2]
564# CHECK: ldrb.w r6, [r0, r2, lsl #3]
565# CHECK: ldrb.w r8, [r8, r2, lsl #2]
566# CHECK: ldrb.w r7, [sp, r2, lsl #1]
567# CHECK: ldrb.w r7, [sp, r2]
568# CHECK: ldrb r5, [r8, #255]!
569# CHECK: ldrb r2, [r5, #4]!
570# CHECK: ldrb r1, [r4, #-4]!
571# CHECK: ldrb lr, [r3], #255
572# CHECK: ldrb r9, [r2], #4
573# CHECK: ldrb r3, [sp], #-4
574
5750x18 0xf8 0x01 0x10
5760x15 0xf8 0x02 0x40
5770x10 0xf8 0x32 0x60
5780x18 0xf8 0x22 0x80
5790x1d 0xf8 0x12 0x70
5800x1d 0xf8 0x02 0x70
5810x18 0xf8 0xff 0x5f
5820x15 0xf8 0x04 0x2f
5830x14 0xf8 0x04 0x1d
5840x13 0xf8 0xff 0xeb
5850x12 0xf8 0x04 0x9b
5860x1d 0xf8 0x04 0x39
587
588
589#------------------------------------------------------------------------------
590# LDRBT
591#------------------------------------------------------------------------------
592# CHECK: ldrbt r1, [r2]
593# CHECK: ldrbt r1, [r8]
594# CHECK: ldrbt r1, [r8, #3]
595# CHECK: ldrbt r1, [r8, #255]
596
5970x12 0xf8 0x00 0x1e
5980x18 0xf8 0x00 0x1e
5990x18 0xf8 0x03 0x1e
6000x18 0xf8 0xff 0x1e
601
602
603#------------------------------------------------------------------------------
604# LDRD(immediate)
605#------------------------------------------------------------------------------
606# CHECK: ldrd r3, r5, [r6, #24]
607# CHECK: ldrd r3, r5, [r6, #24]!
608# CHECK: ldrd r3, r5, [r6], #4
609# CHECK: ldrd r3, r5, [r6], #-8
610# CHECK: ldrd r3, r5, [r6]
611# CHECK: ldrd r8, r1, [r3]
612
6130xd6 0xe9 0x06 0x35
6140xf6 0xe9 0x06 0x35
6150xf6 0xe8 0x01 0x35
6160x76 0xe8 0x02 0x35
6170xd6 0xe9 0x00 0x35
6180xd3 0xe9 0x00 0x81
619
620
621#------------------------------------------------------------------------------
622# FIXME: LDRD(literal)
623#------------------------------------------------------------------------------
624
625
626#------------------------------------------------------------------------------
627# LDREX/LDREXB/LDREXH/LDREXD
628#------------------------------------------------------------------------------
629# CHECK: ldrex r1, [r4]
630# CHECK: ldrex r8, [r4]
631# CHECK: ldrex r2, [sp, #128]
632# CHECK: ldrexb r5, [r7]
633# CHECK: ldrexh r9, [r12]
634# CHECK: ldrexd r9, r3, [r4]
635
6360x54 0xe8 0x00 0x1f
6370x54 0xe8 0x00 0x8f
6380x5d 0xe8 0x20 0x2f
6390xd7 0xe8 0x4f 0x5f
6400xdc 0xe8 0x5f 0x9f
6410xd4 0xe8 0x7f 0x93
642
643
644#------------------------------------------------------------------------------
645# LDRH(immediate)
646#------------------------------------------------------------------------------
647# CHECK: ldrh r5, [r5, #-4]
648# CHECK: ldrh r5, [r6, #32]
649# CHECK: ldrh.w r5, [r6, #33]
650# CHECK: ldrh.w r5, [r6, #257]
651# CHECK: ldrh.w lr, [r7, #257]
652# CHECK: ldrh.w r0, [pc, #-21]
653
6540x35 0xf8 0x04 0x5c
6550x35 0x8c
6560xb6 0xf8 0x21 0x50
6570xb6 0xf8 0x01 0x51
6580xb7 0xf8 0x01 0xe1
6590x3f 0xf8 0x15 0x00
660
661
662#------------------------------------------------------------------------------
663# LDRH(register)
664#------------------------------------------------------------------------------
665# CHECK: ldrh.w r1, [r8, r1]
666# CHECK: ldrh.w r4, [r5, r2]
667# CHECK: ldrh.w r6, [r0, r2, lsl #3]
668# CHECK: ldrh.w r8, [r8, r2, lsl #2]
669# CHECK: ldrh.w r7, [sp, r2, lsl #1]
670# CHECK: ldrh.w r7, [sp, r2]
671# CHECK: ldrh r5, [r8, #255]!
672# CHECK: ldrh r2, [r5, #4]!
673# CHECK: ldrh r1, [r4, #-4]!
674# CHECK: ldrh lr, [r3], #255
675# CHECK: ldrh r9, [r2], #4
676# CHECK: ldrh r3, [sp], #-4
677
6780x38 0xf8 0x01 0x10
6790x35 0xf8 0x02 0x40
6800x30 0xf8 0x32 0x60
6810x38 0xf8 0x22 0x80
6820x3d 0xf8 0x12 0x70
6830x3d 0xf8 0x02 0x70
6840x38 0xf8 0xff 0x5f
6850x35 0xf8 0x04 0x2f
6860x34 0xf8 0x04 0x1d
6870x33 0xf8 0xff 0xeb
6880x32 0xf8 0x04 0x9b
6890x3d 0xf8 0x04 0x39
690
691
692#------------------------------------------------------------------------------
693# LDRSB(immediate)
694#------------------------------------------------------------------------------
695# CHECK: ldrsb r5, [r5, #-4]
696# CHECK: ldrsb.w r5, [r6, #32]
697# CHECK: ldrsb.w r5, [r6, #33]
698# CHECK: ldrsb.w r5, [r6, #257]
699# CHECK: ldrsb.w lr, [r7, #257]
700
7010x15 0xf9 0x04 0x5c
7020x96 0xf9 0x20 0x50
7030x96 0xf9 0x21 0x50
7040x96 0xf9 0x01 0x51
7050x97 0xf9 0x01 0xe1
706
707
708#------------------------------------------------------------------------------
709# LDRSB(register)
710#------------------------------------------------------------------------------
711# CHECK: ldrsb.w r1, [r8, r1]
712# CHECK: ldrsb.w r4, [r5, r2]
713# CHECK: ldrsb.w r6, [r0, r2, lsl #3]
714# CHECK: ldrsb.w r8, [r8, r2, lsl #2]
715# CHECK: ldrsb.w r7, [sp, r2, lsl #1]
716# CHECK: ldrsb.w r7, [sp, r2]
717# CHECK: ldrsb r5, [r8, #255]!
718# CHECK: ldrsb r2, [r5, #4]!
719# CHECK: ldrsb r1, [r4, #-4]!
720# CHECK: ldrsb lr, [r3], #255
721# CHECK: ldrsb r9, [r2], #4
722# CHECK: ldrsb r3, [sp], #-4
723
7240x18 0xf9 0x01 0x10
7250x15 0xf9 0x02 0x40
7260x10 0xf9 0x32 0x60
7270x18 0xf9 0x22 0x80
7280x1d 0xf9 0x12 0x70
7290x1d 0xf9 0x02 0x70
7300x18 0xf9 0xff 0x5f
7310x15 0xf9 0x04 0x2f
7320x14 0xf9 0x04 0x1d
7330x13 0xf9 0xff 0xeb
7340x12 0xf9 0x04 0x9b
7350x1d 0xf9 0x04 0x39
736
737
738#------------------------------------------------------------------------------
739# LDRSBT
740#------------------------------------------------------------------------------
741# CHECK: ldrsbt r1, [r2]
742# CHECK: ldrsbt r1, [r8]
743# CHECK: ldrsbt r1, [r8, #3]
744# CHECK: ldrsbt r1, [r8, #255]
745
7460x12 0xf9 0x00 0x1e
7470x18 0xf9 0x00 0x1e
7480x18 0xf9 0x03 0x1e
7490x18 0xf9 0xff 0x1e
750
751
752#------------------------------------------------------------------------------
753# LDRSH(immediate)
754#------------------------------------------------------------------------------
755# CHECK: ldrsh r5, [r5, #-4]
756# CHECK: ldrsh.w r5, [r6, #32]
757# CHECK: ldrsh.w r5, [r6, #33]
758# CHECK: ldrsh.w r5, [r6, #257]
759# CHECK: ldrsh.w lr, [r7, #257]
760# CHECK: ldrsh r10, [r5, #-0]
761
7620x35 0xf9 0x04 0x5c
7630xb6 0xf9 0x20 0x50
7640xb6 0xf9 0x21 0x50
7650xb6 0xf9 0x01 0x51
7660xb7 0xf9 0x01 0xe1
7670x35 0xf9 0x00 0xac
768
769#------------------------------------------------------------------------------
770# LDRSH(register)
771#------------------------------------------------------------------------------
772# CHECK: ldrsh.w r1, [r8, r1]
773# CHECK: ldrsh.w r4, [r5, r2]
774# CHECK: ldrsh.w r6, [r0, r2, lsl #3]
775# CHECK: ldrsh.w r8, [r8, r2, lsl #2]
776# CHECK: ldrsh.w r7, [sp, r2, lsl #1]
777# CHECK: ldrsh.w r7, [sp, r2]
778# CHECK: ldrsh r5, [r8, #255]!
779# CHECK: ldrsh r2, [r5, #4]!
780# CHECK: ldrsh r1, [r4, #-4]!
781# CHECK: ldrsh lr, [r3], #255
782# CHECK: ldrsh r9, [r2], #4
783# CHECK: ldrsh r3, [sp], #-4
784
7850x38 0xf9 0x01 0x10
7860x35 0xf9 0x02 0x40
7870x30 0xf9 0x32 0x60
7880x38 0xf9 0x22 0x80
7890x3d 0xf9 0x12 0x70
7900x3d 0xf9 0x02 0x70
7910x38 0xf9 0xff 0x5f
7920x35 0xf9 0x04 0x2f
7930x34 0xf9 0x04 0x1d
7940x33 0xf9 0xff 0xeb
7950x32 0xf9 0x04 0x9b
7960x3d 0xf9 0x04 0x39
797
798
799#------------------------------------------------------------------------------
800# LDRSHT
801#------------------------------------------------------------------------------
802# CHECK: ldrsht r1, [r2]
803# CHECK: ldrsht r1, [r8]
804# CHECK: ldrsht r1, [r8, #3]
805# CHECK: ldrsht r1, [r8, #255]
806
8070x32 0xf9 0x00 0x1e
8080x38 0xf9 0x00 0x1e
8090x38 0xf9 0x03 0x1e
8100x38 0xf9 0xff 0x1e
811
812
813#------------------------------------------------------------------------------
814# LDRT
815#------------------------------------------------------------------------------
816# CHECK: ldrt r1, [r2]
817# CHECK: ldrt r2, [r6]
818# CHECK: ldrt r3, [r7, #3]
819# CHECK: ldrt r4, [r9, #255]
820
8210x52 0xf8 0x00 0x1e
8220x56 0xf8 0x00 0x2e
8230x57 0xf8 0x03 0x3e
8240x59 0xf8 0xff 0x4e
825
826
827#------------------------------------------------------------------------------
828# LSL (immediate)
829#------------------------------------------------------------------------------
830# CHECK: lsl.w r2, r3, #12
831# CHECK: lsls.w r8, r3, #31
832# CHECK: lsls.w r2, r3, #1
833# CHECK: lsl.w r2, r3, #4
834# CHECK: lsls.w r2, r12, #15
835
836# CHECK: lsl.w r3, r3, #19
837# CHECK: lsls.w r8, r8, #2
838# CHECK: lsls.w r7, r7, #5
839# CHECK: lsl.w r12, r12, #21
840
8410x4f 0xea 0x03 0x32
8420x5f 0xea 0xc3 0x78
8430x5f 0xea 0x43 0x02
8440x4f 0xea 0x03 0x12
8450x5f 0xea 0xcc 0x32
846
8470x4f 0xea 0xc3 0x43
8480x5f 0xea 0x88 0x08
8490x5f 0xea 0x47 0x17
8500x4f 0xea 0x4c 0x5c
851
852
853#------------------------------------------------------------------------------
854# LSL (register)
855#------------------------------------------------------------------------------
856# CHECK: lsl.w r3, r4, r2
857# CHECK: lsl.w r1, r1, r2
858# CHECK: lsls.w r3, r4, r8
859
8600x04 0xfa 0x02 0xf3
8610x01 0xfa 0x02 0xf1
8620x14 0xfa 0x08 0xf3
863
864
865#------------------------------------------------------------------------------
866# LSR (immediate)
867#------------------------------------------------------------------------------
868# CHECK: lsr.w r2, r3, #12
869# CHECK: lsrs.w r8, r3, #32
870# CHECK: lsrs.w r2, r3, #1
871# CHECK: lsr.w r2, r3, #4
872# CHECK: lsrs.w r2, r12, #15
873
874# CHECK: lsr.w r3, r3, #19
875# CHECK: lsrs.w r8, r8, #2
876# CHECK: lsrs.w r7, r7, #5
877# CHECK: lsr.w r12, r12, #21
878
8790x4f 0xea 0x13 0x32
8800x5f 0xea 0x13 0x08
8810x5f 0xea 0x53 0x02
8820x4f 0xea 0x13 0x12
8830x5f 0xea 0xdc 0x32
884
8850x4f 0xea 0xd3 0x43
8860x5f 0xea 0x98 0x08
8870x5f 0xea 0x57 0x17
8880x4f 0xea 0x5c 0x5c
889
890
891#------------------------------------------------------------------------------
892# LSR (register)
893#------------------------------------------------------------------------------
894# CHECK: lsr.w r3, r4, r2
895# CHECK: lsr.w r1, r1, r2
896# CHECK: lsrs.w r3, r4, r8
897
8980x24 0xfa 0x02 0xf3
8990x21 0xfa 0x02 0xf1
9000x34 0xfa 0x08 0xf3
901
902#------------------------------------------------------------------------------
903# MCR/MCR2
904#------------------------------------------------------------------------------
905# CHECK: mcr  p7, #1, r5, c1, c1, #4
906# CHECK: mcr2  p7, #1, r5, c1, c1, #4
907
9080x21 0xee 0x91 0x57
9090x21 0xfe 0x91 0x57
910
911
912#------------------------------------------------------------------------------
913# MCRR/MCRR2
914#------------------------------------------------------------------------------
915# CHECK: mcrr  p7, #15, r5, r4, c1
916# CHECK: mcrr2  p7, #15, r5, r4, c1
917
9180x44 0xec 0xf1 0x57
9190x44 0xfc 0xf1 0x57
920
921
922#------------------------------------------------------------------------------
923# MLA/MLS
924#------------------------------------------------------------------------------
925# CHECK: mla  r1, r2, r3, r4
926# CHECK: mls  r1, r2, r3, r4
927
9280x02 0xfb 0x03 0x41
9290x02 0xfb 0x13 0x41
930
931
932#------------------------------------------------------------------------------
933# MOV(immediate)
934#------------------------------------------------------------------------------
935# CHECK: movs r1, #21
936# CHECK: movs.w r1, #21
937# CHECK: movs.w r8, #21
938# CHECK: movw r0, #65535
939# CHECK: movw r1, #43777
940# CHECK: movw r1, #43792
941# CHECK: mov.w r0, #66846720
942# CHECK: mov.w r0, #66846720
943# CHECK: movs.w r0, #66846720
944
9450x15 0x21
9460x5f 0xf0 0x15 0x01
9470x5f 0xf0 0x15 0x08
9480x4f 0xf6 0xff 0x70
9490x4a 0xf6 0x01 0x31
9500x4a 0xf6 0x10 0x31
9510x4f 0xf0 0x7f 0x70
9520x4f 0xf0 0x7f 0x70
9530x5f 0xf0 0x7f 0x70
954
955#------------------------------------------------------------------------------
956# MOVT
957#------------------------------------------------------------------------------
958# CHECK: movt r3, #7
959# CHECK: movt r6, #65535
960# CHECK: it eq
961# CHECK: movteq r4, #4080
962
9630xc0 0xf2 0x07 0x03
9640xcf 0xf6 0xff 0x76
9650x08 0xbf
9660xc0 0xf6 0xf0 0x74
967
968#------------------------------------------------------------------------------
969# MRC/MRC2
970#------------------------------------------------------------------------------
971# CHECK: mrc  p14, #0, r1, c1, c2, #4
972# CHECK: mrc2  p14, #0, r1, c1, c2, #4
973
9740x11 0xee 0x92 0x1e
9750x11 0xfe 0x92 0x1e
976
977
978#------------------------------------------------------------------------------
979# MRRC/MRRC2
980#------------------------------------------------------------------------------
981# CHECK: mrrc  p7, #1, r5, r4, c1
982# CHECK: mrrc2  p7, #1, r5, r4, c1
983
9840x54 0xec 0x11 0x57
9850x54 0xfc 0x11 0x57
986
987
988#------------------------------------------------------------------------------
989# MRS
990#------------------------------------------------------------------------------
991# CHECK: mrs  r8, apsr
992# CHECK: mrs  r8, spsr
993
9940xef 0xf3 0x00 0x88
9950xff 0xf3 0x00 0x88
996
997
998#------------------------------------------------------------------------------
999# MSR
1000#------------------------------------------------------------------------------
1001# CHECK: msr  APSR_nzcvq, r1
1002# CHECK: msr  APSR_g, r2
1003# CHECK: msr  APSR_nzcvq, r3
1004# CHECK: msr  APSR_nzcvq, r4
1005# CHECK: msr  APSR_nzcvqg, r5
1006# CHECK: msr  CPSR_fc, r6
1007# CHECK: msr  CPSR_c, r7
1008# CHECK: msr  CPSR_x, r8
1009# CHECK: msr  CPSR_fc, r9
1010# CHECK: msr  CPSR_fc, r11
1011# CHECK: msr  CPSR_fsx, r12
1012# CHECK: msr  SPSR_fc, r0
1013# CHECK: msr  SPSR_fsxc, r5
1014# CHECK: msr  CPSR_fsxc, r8
1015
10160x81 0xf3 0x00 0x88
10170x82 0xf3 0x00 0x84
10180x83 0xf3 0x00 0x88
10190x84 0xf3 0x00 0x88
10200x85 0xf3 0x00 0x8c
10210x86 0xf3 0x00 0x89
10220x87 0xf3 0x00 0x81
10230x88 0xf3 0x00 0x82
10240x89 0xf3 0x00 0x89
10250x8b 0xf3 0x00 0x89
10260x8c 0xf3 0x00 0x8e
10270x90 0xf3 0x00 0x89
10280x95 0xf3 0x00 0x8f
10290x88 0xf3 0x00 0x8f
1030
1031
1032#------------------------------------------------------------------------------
1033# MUL
1034#------------------------------------------------------------------------------
1035# CHECK: muls r3, r4, r3
1036# CHECK: mul r3, r4, r3
1037# CHECK: mul r3, r4, r6
1038# CHECK: it eq
1039# CHECK: muleq r3, r4, r5
1040
10410x63 0x43
10420x04 0xfb 0x03 0xf3
10430x04 0xfb 0x06 0xf3
10440x08 0xbf
10450x04 0xfb 0x05 0xf3
1046
1047
1048#------------------------------------------------------------------------------
1049# MVN(immediate)
1050#------------------------------------------------------------------------------
1051# CHECK: mvns r8, #21
1052# CHECK: mvn r0, #66846720
1053# CHECK: mvns r0, #66846720
1054# CHECK: itte eq
1055# CHECK: mvnseq r1, #12
1056# CHECK: mvneq r1, #12
1057# CHECK: mvnne r1, #12
1058
10590x7f 0xf0 0x15 0x08
10600x6f 0xf0 0x7f 0x70
10610x7f 0xf0 0x7f 0x70
10620x06 0xbf
10630x7f 0xf0 0x0c 0x01
10640x6f 0xf0 0x0c 0x01
10650x6f 0xf0 0x0c 0x01
1066
1067
1068#------------------------------------------------------------------------------
1069# MVN(register)
1070#------------------------------------------------------------------------------
1071# CHECK: mvn.w r2, r3
1072# CHECK: mvns r2, r3
1073# CHECK: mvn.w r5, r6, lsl #19
1074# CHECK: mvn.w r5, r6, lsr #9
1075# CHECK: mvn.w r5, r6, asr #4
1076# CHECK: mvn.w r5, r6, ror #6
1077# CHECK: mvn.w r5, r6, rrx
1078# CHECK: it eq
1079# CHECK: mvneq r2, r3
1080
10810x6f 0xea 0x03 0x02
10820xda 0x43
10830x6f 0xea 0xc6 0x45
10840x6f 0xea 0x56 0x25
10850x6f 0xea 0x26 0x15
10860x6f 0xea 0xb6 0x15
10870x6f 0xea 0x36 0x05
10880x08 0xbf
10890xda 0x43
1090
1091#------------------------------------------------------------------------------
1092# NOP
1093#------------------------------------------------------------------------------
1094# CHECK: nop.w
1095
10960xaf 0xf3 0x00 0x80
1097
1098
1099#------------------------------------------------------------------------------
1100# ORN
1101#------------------------------------------------------------------------------
1102# CHECK: orn r4, r5, #61440
1103# CHECK: orn r4, r5, r6
1104# CHECK: orns r4, r5, r6
1105# CHECK: orn r4, r5, r6, lsl #5
1106# CHECK: orns r4, r5, r6, lsr #5
1107# CHECK: orn r4, r5, r6, lsr #5
1108# CHECK: orns r4, r5, r6, asr #5
1109# CHECK: orn r4, r5, r6, ror #5
1110
11110x65 0xf4 0x70 0x44
11120x65 0xea 0x06 0x04
11130x75 0xea 0x06 0x04
11140x65 0xea 0x46 0x14
11150x75 0xea 0x56 0x14
11160x65 0xea 0x56 0x14
11170x75 0xea 0x66 0x14
11180x65 0xea 0x76 0x14
1119
1120
1121#------------------------------------------------------------------------------
1122# ORR
1123#------------------------------------------------------------------------------
1124# CHECK: orr r4, r5, #61440
1125# CHECK: orr.w r4, r5, r6
1126# CHECK: orr.w r4, r5, r6, lsl #5
1127# CHECK: orrs.w r4, r5, r6, lsr #5
1128# CHECK: orr.w r4, r5, r6, lsr #5
1129# CHECK: orrs.w r4, r5, r6, asr #5
1130# CHECK: orr.w r4, r5, r6, ror #5
1131
11320x45 0xf4 0x70 0x44
11330x45 0xea 0x06 0x04
11340x45 0xea 0x46 0x14
11350x55 0xea 0x56 0x14
11360x45 0xea 0x56 0x14
11370x55 0xea 0x66 0x14
11380x45 0xea 0x76 0x14
1139
1140
1141#------------------------------------------------------------------------------
1142# PKH
1143#------------------------------------------------------------------------------
1144# CHECK: pkhbt r2, r2, r3
1145# CHECK: pkhbt r2, r2, r3, lsl #31
1146# CHECK: pkhbt r2, r2, r3, lsl #15
1147
1148# CHECK: pkhtb r2, r2, r3, asr #31
1149# CHECK: pkhtb r2, r2, r3, asr #15
1150
11510xc2 0xea 0x03 0x02
11520xc2 0xea 0xc3 0x72
11530xc2 0xea 0xc3 0x32
1154
11550xc2 0xea 0xe3 0x72
11560xc2 0xea 0xe3 0x32
1157
1158
1159#------------------------------------------------------------------------------
1160# PLD(immediate)
1161#------------------------------------------------------------------------------
1162# CHECK: pld [r5, #-4]
1163# CHECK: pld [r6, #32]
1164# CHECK: pld [r6, #33]
1165# CHECK: pld [r6, #257]
1166# CHECK: pld [r7, #257]
1167
11680x15 0xf8 0x04 0xfc
11690x96 0xf8 0x20 0xf0
11700x96 0xf8 0x21 0xf0
11710x96 0xf8 0x01 0xf1
11720x97 0xf8 0x01 0xf1
1173
1174#------------------------------------------------------------------------------
1175# PLD(register)
1176#------------------------------------------------------------------------------
1177# CHECK: pld [r8, r1]
1178# CHECK: pld [r5, r2]
1179# CHECK: pld [r0, r2, lsl #3]
1180# CHECK: pld [r8, r2, lsl #2]
1181# CHECK: pld [sp, r2, lsl #1]
1182# CHECK: pld [sp, r2]
1183
11840x18 0xf8 0x01 0xf0
11850x15 0xf8 0x02 0xf0
11860x10 0xf8 0x32 0xf0
11870x18 0xf8 0x22 0xf0
11880x1d 0xf8 0x12 0xf0
11890x1d 0xf8 0x02 0xf0
1190
1191#------------------------------------------------------------------------------
1192# PLI(immediate)
1193#------------------------------------------------------------------------------
1194# CHECK: pli [r5, #-4]
1195# CHECK: pli [r6, #32]
1196# CHECK: pli [r6, #33]
1197# CHECK: pli [r6, #257]
1198# CHECK: pli [r7, #257]
1199
12000x15 0xf9 0x04 0xfc
12010x96 0xf9 0x20 0xf0
12020x96 0xf9 0x21 0xf0
12030x96 0xf9 0x01 0xf1
12040x97 0xf9 0x01 0xf1
1205
1206#------------------------------------------------------------------------------
1207# PLI(register)
1208#------------------------------------------------------------------------------
1209# CHECK: pli [r8, r1]
1210# CHECK: pli [r5, r2]
1211# CHECK: pli [r0, r2, lsl #3]
1212# CHECK: pli [r8, r2, lsl #2]
1213# CHECK: pli [sp, r2, lsl #1]
1214# CHECK: pli [sp, r2]
1215
12160x18 0xf9 0x01 0xf0
12170x15 0xf9 0x02 0xf0
12180x10 0xf9 0x32 0xf0
12190x18 0xf9 0x22 0xf0
12200x1d 0xf9 0x12 0xf0
12210x1d 0xf9 0x02 0xf0
1222
1223
1224#------------------------------------------------------------------------------
1225# QADD/QADD16/QADD8
1226#------------------------------------------------------------------------------
1227# CHECK: qadd r1, r2, r3
1228# CHECK: qadd16 r1, r2, r3
1229# CHECK: qadd8 r1, r2, r3
1230# CHECK: itte gt
1231# CHECK: qaddgt r1, r2, r3
1232# CHECK: qadd16gt r1, r2, r3
1233# CHECK: qadd8le r1, r2, r3
1234
12350x83 0xfa 0x82 0xf1
12360x92 0xfa 0x13 0xf1
12370x82 0xfa 0x13 0xf1
12380xc6 0xbf
12390x83 0xfa 0x82 0xf1
12400x92 0xfa 0x13 0xf1
12410x82 0xfa 0x13 0xf1
1242
1243
1244#------------------------------------------------------------------------------
1245# QDADD/QDSUB
1246#------------------------------------------------------------------------------
1247# CHECK: qdadd r6, r7, r8
1248# CHECK: qdsub r6, r7, r8
1249# CHECK: itt hi
1250# CHECK: qdaddhi r6, r7, r8
1251# CHECK: qdsubhi r6, r7, r8
1252
12530x88 0xfa 0x97 0xf6
12540x88 0xfa 0xb7 0xf6
12550x84 0xbf
12560x88 0xfa 0x97 0xf6
12570x88 0xfa 0xb7 0xf6
1258
1259
1260#------------------------------------------------------------------------------
1261# QSAX
1262#------------------------------------------------------------------------------
1263# CHECK: qsax r9, r12, r0
1264# CHECK: it eq
1265# CHECK: qsaxeq r9, r12, r0
1266
12670xec 0xfa 0x10 0xf9
12680x08 0xbf
12690xec 0xfa 0x10 0xf9
1270
1271
1272#------------------------------------------------------------------------------
1273# QSUB/QSUB16/QSUB8
1274#------------------------------------------------------------------------------
1275# CHECK: qsub r1, r2, r3
1276# CHECK: qsub16 r1, r2, r3
1277# CHECK: qsub8 r1, r2, r3
1278# CHECK: itet le
1279# CHECK: qsuble r1, r2, r3
1280# CHECK: qsub16gt r1, r2, r3
1281# CHECK: qsub8le r1, r2, r3
1282
12830x83 0xfa 0xa2 0xf1
12840xd2 0xfa 0x13 0xf1
12850xc2 0xfa 0x13 0xf1
12860xd6 0xbf
12870x83 0xfa 0xa2 0xf1
12880xd2 0xfa 0x13 0xf1
12890xc2 0xfa 0x13 0xf1
1290
1291
1292#------------------------------------------------------------------------------
1293# RBIT
1294#------------------------------------------------------------------------------
1295# CHECK: rbit r1, r2
1296# CHECK: it ne
1297# CHECK: rbitne r1, r2
1298
12990x92 0xfa 0xa2 0xf1
13000x18 0xbf
13010x92 0xfa 0xa2 0xf1
1302
1303
1304#------------------------------------------------------------------------------
1305# REV
1306#------------------------------------------------------------------------------
1307# CHECK: rev.w r1, r2
1308# CHECK: rev.w r2, r8
1309# CHECK: itt ne
1310# CHECK: revne r1, r2
1311# CHECK: revne.w r1, r8
1312
13130x92 0xfa 0x82 0xf1
13140x98 0xfa 0x88 0xf2
13150x1c 0xbf
13160x11 0xba
13170x98 0xfa 0x88 0xf1
1318
1319
1320#------------------------------------------------------------------------------
1321# REV16
1322#------------------------------------------------------------------------------
1323# CHECK: rev16.w r1, r2
1324# CHECK: rev16.w r2, r8
1325# CHECK: itt ne
1326# CHECK: rev16ne r1, r2
1327# CHECK: rev16ne.w r1, r8
1328
13290x92 0xfa 0x92 0xf1
13300x98 0xfa 0x98 0xf2
13310x1c 0xbf
13320x51 0xba
13330x98 0xfa 0x98 0xf1
1334
1335
1336#------------------------------------------------------------------------------
1337# REVSH
1338#------------------------------------------------------------------------------
1339# CHECK: revsh.w r1, r2
1340# CHECK: revsh.w r2, r8
1341# CHECK: itt ne
1342# CHECK: revshne r1, r2
1343# CHECK: revshne.w r1, r8
1344
13450x92 0xfa 0xb2 0xf1
13460x98 0xfa 0xb8 0xf2
13470x1c 0xbf
13480xd1 0xba
13490x98 0xfa 0xb8 0xf1
1350
1351
1352#------------------------------------------------------------------------------
1353# ROR (immediate)
1354#------------------------------------------------------------------------------
1355# CHECK: ror.w r2, r3, #12
1356# CHECK: rors.w r8, r3, #31
1357# CHECK: rors.w r2, r3, #1
1358# CHECK: ror.w r2, r3, #4
1359# CHECK: rors.w r2, r12, #15
1360
1361# CHECK: ror.w r3, r3, #19
1362# CHECK: rors.w r8, r8, #2
1363# CHECK: rors.w r7, r7, #5
1364# CHECK: ror.w r12, r12, #21
1365
13660x4f 0xea 0x33 0x32
13670x5f 0xea 0xf3 0x78
13680x5f 0xea 0x73 0x02
13690x4f 0xea 0x33 0x12
13700x5f 0xea 0xfc 0x32
1371
13720x4f 0xea 0xf3 0x43
13730x5f 0xea 0xb8 0x08
13740x5f 0xea 0x77 0x17
13750x4f 0xea 0x7c 0x5c
1376
1377
1378#------------------------------------------------------------------------------
1379# ROR (register)
1380#------------------------------------------------------------------------------
1381# CHECK: ror.w r3, r4, r2
1382# CHECK: ror.w r1, r1, r2
1383# CHECK: rors.w r3, r4, r8
1384
13850x64 0xfa 0x02 0xf3
13860x61 0xfa 0x02 0xf1
13870x74 0xfa 0x08 0xf3
1388
1389
1390#------------------------------------------------------------------------------
1391# RRX
1392#------------------------------------------------------------------------------
1393# CHECK: rrx r1, r2
1394# CHECK: rrxs r1, r2
1395# CHECK: ite lt
1396# CHECK: rrxlt r9, r12
1397# CHECK: rrxsge r8, r3
1398
13990x4f 0xea 0x32 0x01
14000x5f 0xea 0x32 0x01
14010xb4 0xbf
14020x4f 0xea 0x3c 0x09
14030x5f 0xea 0x33 0x08
1404
1405#------------------------------------------------------------------------------
1406# RSB (immediate)
1407#------------------------------------------------------------------------------
1408# CHECK: rsb.w r2, r5, #1044480
1409# CHECK: rsbs.w r3, r12, #15
1410# CHECK: rsb.w r1, r1, #255
1411
14120xc5 0xf5 0x7f 0x22
14130xdc 0xf1 0x0f 0x03
14140xc1 0xf1 0xff 0x01
1415
1416
1417#------------------------------------------------------------------------------
1418# RSB (register)
1419#------------------------------------------------------------------------------
1420# CHECK: rsb r4, r4, r8
1421# CHECK: rsb r4, r9, r8
1422# CHECK: rsb r1, r4, r8, asr #3
1423# CHECK: rsbs r2, r1, r7, lsl #1
1424
14250xc4 0xeb 0x08 0x04
14260xc9 0xeb 0x08 0x04
14270xc4 0xeb 0xe8 0x01
14280xd1 0xeb 0x47 0x02
1429
1430
1431#------------------------------------------------------------------------------
1432# SADD16
1433#------------------------------------------------------------------------------
1434# CHECK: sadd16 r3, r4, r8
1435# CHECK: it ne
1436# CHECK: sadd16ne r3, r4, r8
1437
14380x94 0xfa 0x08 0xf3
14390x18 0xbf
14400x94 0xfa 0x08 0xf3
1441
1442
1443#------------------------------------------------------------------------------
1444# SADD8
1445#------------------------------------------------------------------------------
1446# CHECK: sadd8 r3, r4, r8
1447# CHECK: it ne
1448# CHECK: sadd8ne r3, r4, r8
1449
14500x84 0xfa 0x08 0xf3
14510x18 0xbf
14520x84 0xfa 0x08 0xf3
1453
1454
1455#------------------------------------------------------------------------------
1456# SASX
1457#------------------------------------------------------------------------------
1458# CHECK: sasx r9, r2, r7
1459# CHECK: it ne
1460# CHECK: sasxne r2, r5, r6
1461
14620xa2 0xfa 0x07 0xf9
14630x18 0xbf
14640xa5 0xfa 0x06 0xf2
1465
1466
1467#------------------------------------------------------------------------------
1468# SBC (immediate)
1469#------------------------------------------------------------------------------
1470# CHECK: sbc r0, r1, #4
1471# CHECK: sbcs r0, r1, #0
1472# CHECK: sbc r1, r2, #255
1473# CHECK: sbc r3, r7, #5570645
1474# CHECK: sbc r8, r12, #2852170240
1475# CHECK: sbc r9, r7, #2779096485
1476# CHECK: sbc r5, r3, #2264924160
1477# CHECK: sbc r4, r2, #2139095040
1478# CHECK: sbc r4, r2, #1664
1479
14800x61 0xf1 0x04 0x00
14810x71 0xf1 0x00 0x00
14820x62 0xf1 0xff 0x01
14830x67 0xf1 0x55 0x13
14840x6c 0xf1 0xaa 0x28
14850x67 0xf1 0xa5 0x39
14860x63 0xf1 0x07 0x45
14870x62 0xf1 0xff 0x44
14880x62 0xf5 0xd0 0x64
1489
1490
1491#------------------------------------------------------------------------------
1492# SBC (register)
1493#------------------------------------------------------------------------------
1494# CHECK: sbc.w r4, r5, r6
1495# CHECK: sbcs.w r4, r5, r6
1496# CHECK: sbc.w r9, r1, r3
1497# CHECK: sbcs.w r9, r1, r3
1498# CHECK: sbc.w r0, r1, r3, ror #4
1499# CHECK: sbcs.w r0, r1, r3, lsl #7
1500# CHECK: sbc.w r0, r1, r3, lsr #31
1501# CHECK: sbcs.w r0, r1, r3, asr #32
1502
15030x65 0xeb 0x06 0x04
15040x75 0xeb 0x06 0x04
15050x61 0xeb 0x03 0x09
15060x71 0xeb 0x03 0x09
15070x61 0xeb 0x33 0x10
15080x71 0xeb 0xc3 0x10
15090x61 0xeb 0xd3 0x70
15100x71 0xeb 0x23 0x00
1511
1512
1513#------------------------------------------------------------------------------
1514# SBFX
1515#------------------------------------------------------------------------------
1516# CHECK: sbfx r4, r5, #16, #1
1517# CHECK: it gt
1518# CHECK: sbfxgt r4, r5, #16, #16
1519
15200x45 0xf3 0x00 0x44
15210xc8 0xbf
15220x45 0xf3 0x0f 0x44
1523
1524
1525#------------------------------------------------------------------------------
1526# SEL
1527#------------------------------------------------------------------------------
1528# CHECK: sel r5, r9, r2
1529# CHECK: it le
1530# CHECK: selle r5, r9, r2
1531
15320xa9 0xfa 0x82 0xf5
15330xd8 0xbf
15340xa9 0xfa 0x82 0xf5
1535
1536
1537#------------------------------------------------------------------------------
1538# SEV
1539#------------------------------------------------------------------------------
1540# CHECK: sev.w
1541# CHECK: it eq
1542# CHECK: seveq.w
1543
15440xaf 0xf3 0x04 0x80
15450x08 0xbf
15460xaf 0xf3 0x04 0x80
1547
1548
1549#------------------------------------------------------------------------------
1550# SADD16/SADD8
1551#------------------------------------------------------------------------------
1552# CHECK: sadd16 r1, r2, r3
1553# CHECK: sadd8 r1, r2, r3
1554# CHECK: ite gt
1555# CHECK: sadd16gt r1, r2, r3
1556# CHECK: sadd8le r1, r2, r3
1557
15580x92 0xfa 0x03 0xf1
15590x82 0xfa 0x03 0xf1
15600xcc 0xbf
15610x92 0xfa 0x03 0xf1
15620x82 0xfa 0x03 0xf1
1563
1564
1565#------------------------------------------------------------------------------
1566# SHASX
1567#------------------------------------------------------------------------------
1568# CHECK: shasx r4, r8, r2
1569# CHECK: it gt
1570# CHECK: shasxgt r4, r8, r2
1571
15720xa8 0xfa 0x22 0xf4
15730xc8 0xbf
15740xa8 0xfa 0x22 0xf4
1575
1576
1577#------------------------------------------------------------------------------
1578# SHASX
1579#------------------------------------------------------------------------------
1580# CHECK: shsax r4, r8, r2
1581# CHECK: it gt
1582# CHECK: shsaxgt r4, r8, r2
1583
15840xe8 0xfa 0x22 0xf4
15850xc8 0xbf
15860xe8 0xfa 0x22 0xf4
1587
1588
1589#------------------------------------------------------------------------------
1590# SHSUB16/SHSUB8
1591#------------------------------------------------------------------------------
1592# CHECK: shsub16 r4, r8, r2
1593# CHECK: shsub8 r4, r8, r2
1594# CHECK: itt gt
1595# CHECK: shsub16gt r4, r8, r2
1596# CHECK: shsub8gt r4, r8, r2
1597
15980xd8 0xfa 0x22 0xf4
15990xc8 0xfa 0x22 0xf4
16000xc4 0xbf
16010xd8 0xfa 0x22 0xf4
16020xc8 0xfa 0x22 0xf4
1603
1604
1605#------------------------------------------------------------------------------
1606# SMLABB/SMLABT/SMLATB/SMLATT
1607#------------------------------------------------------------------------------
1608# CHECK: smlabb r3, r1, r9, r0
1609# CHECK: smlabt r5, r6, r4, r1
1610# CHECK: smlatb r4, r2, r3, r2
1611# CHECK: smlatt r8, r3, r8, r4
1612# CHECK: itete gt
1613# CHECK: smlabbgt r3, r1, r9, r0
1614# CHECK: smlabtle r5, r6, r4, r1
1615# CHECK: smlatbgt r4, r2, r3, r2
1616# CHECK: smlattle r8, r3, r8, r4
1617
16180x11 0xfb 0x09 0x03
16190x16 0xfb 0x14 0x15
16200x12 0xfb 0x23 0x24
16210x13 0xfb 0x38 0x48
16220xcb 0xbf
16230x11 0xfb 0x09 0x03
16240x16 0xfb 0x14 0x15
16250x12 0xfb 0x23 0x24
16260x13 0xfb 0x38 0x48
1627
1628
1629#------------------------------------------------------------------------------
1630# SMLAD/SMLADX
1631#------------------------------------------------------------------------------
1632# CHECK: smlad r2, r3, r5, r8
1633# CHECK: smladx r2, r3, r5, r8
1634# CHECK: itt hi
1635# CHECK: smladhi r2, r3, r5, r8
1636# CHECK: smladxhi r2, r3, r5, r8
1637
16380x23 0xfb 0x05 0x82
16390x23 0xfb 0x15 0x82
16400x84 0xbf
16410x23 0xfb 0x05 0x82
16420x23 0xfb 0x15 0x82
1643
1644
1645#------------------------------------------------------------------------------
1646# SMLAL
1647#------------------------------------------------------------------------------
1648# CHECK: smlal r2, r3, r5, r8
1649# CHECK: it eq
1650# CHECK: smlaleq r2, r3, r5, r8
1651
16520xc5 0xfb 0x08 0x23
16530x08 0xbf
16540xc5 0xfb 0x08 0x23
1655
1656
1657#------------------------------------------------------------------------------
1658# SMLALBB/SMLALBT/SMLALTB/SMLALTT
1659#------------------------------------------------------------------------------
1660# CHECK: smlalbb r3, r1, r9, r0
1661# CHECK: smlalbt r5, r6, r4, r1
1662# CHECK: smlaltb r4, r2, r3, r2
1663# CHECK: smlaltt r8, r3, r8, r4
1664# CHECK: iteet ge
1665# CHECK: smlalbbge r3, r1, r9, r0
1666# CHECK: smlalbtlt r5, r6, r4, r1
1667# CHECK: smlaltblt r4, r2, r3, r2
1668# CHECK: smlalttge r8, r3, r8, r4
1669
16700xc9 0xfb 0x80 0x31
16710xc4 0xfb 0x91 0x56
16720xc3 0xfb 0xa2 0x42
16730xc8 0xfb 0xb4 0x83
16740xad 0xbf
16750xc9 0xfb 0x80 0x31
16760xc4 0xfb 0x91 0x56
16770xc3 0xfb 0xa2 0x42
16780xc8 0xfb 0xb4 0x83
1679
1680#------------------------------------------------------------------------------
1681# SMLALD/SMLALDX
1682#------------------------------------------------------------------------------
1683# CHECK: smlald r2, r3, r5, r8
1684# CHECK: smlaldx r2, r3, r5, r8
1685# CHECK: ite eq
1686# CHECK: smlaldeq r2, r3, r5, r8
1687# CHECK: smlaldxne r2, r3, r5, r8
1688
16890xc5 0xfb 0xc8 0x23
16900xc5 0xfb 0xd8 0x23
16910x0c 0xbf
16920xc5 0xfb 0xc8 0x23
16930xc5 0xfb 0xd8 0x23
1694
1695
1696#------------------------------------------------------------------------------
1697# SMLAWB/SMLAWT
1698#------------------------------------------------------------------------------
1699# CHECK: smlawb r2, r3, r10, r8
1700# CHECK: smlawt r8, r3, r5, r9
1701# CHECK: ite eq
1702# CHECK: smlawbeq r2, r7, r5, r8
1703# CHECK: smlawtne r1, r3, r0, r8
1704
17050x33 0xfb 0x0a 0x82
17060x33 0xfb 0x15 0x98
17070x0c 0xbf
17080x37 0xfb 0x05 0x82
17090x33 0xfb 0x10 0x81
1710
1711
1712#------------------------------------------------------------------------------
1713# SMLSD/SMLSDX
1714#------------------------------------------------------------------------------
1715# CHECK: smlsd r2, r3, r5, r8
1716# CHECK: smlsdx r2, r3, r5, r8
1717# CHECK: ite le
1718# CHECK: smlsdle r2, r3, r5, r8
1719# CHECK: smlsdxgt r2, r3, r5, r8
1720
17210x43 0xfb 0x05 0x82
17220x43 0xfb 0x15 0x82
17230xd4 0xbf
17240x43 0xfb 0x05 0x82
17250x43 0xfb 0x15 0x82
1726
1727
1728#------------------------------------------------------------------------------
1729# SMLSLD/SMLSLDX
1730#------------------------------------------------------------------------------
1731# CHECK: smlsld r2, r9, r5, r1
1732# CHECK: smlsldx r4, r11, r2, r8
1733# CHECK: ite ge
1734# CHECK: smlsldge r8, r2, r5, r6
1735# CHECK: smlsldxlt r1, r0, r3, r8
1736
17370xd5 0xfb 0xc1 0x29
17380xd2 0xfb 0xd8 0x4b
17390xac 0xbf
17400xd5 0xfb 0xc6 0x82
17410xd3 0xfb 0xd8 0x10
1742
1743
1744#------------------------------------------------------------------------------
1745# SMMLA/SMMLAR
1746#------------------------------------------------------------------------------
1747# CHECK: smmla r1, r2, r3, r4
1748# CHECK: smmlar r4, r3, r2, r1
1749# CHECK: ite lo
1750# CHECK: smmlalo r1, r2, r3, r4
1751# CHECK: smmlarhs r4, r3, r2, r1
1752
17530x52 0xfb 0x03 0x41
17540x53 0xfb 0x12 0x14
17550x34 0xbf
17560x52 0xfb 0x03 0x41
17570x53 0xfb 0x12 0x14
1758
1759
1760#------------------------------------------------------------------------------
1761# SMMLS/SMMLSR
1762#------------------------------------------------------------------------------
1763# CHECK: smmls r1, r2, r3, r4
1764# CHECK: smmlsr r4, r3, r2, r1
1765# CHECK: ite lo
1766# CHECK: smmlslo r1, r2, r3, r4
1767# CHECK: smmlsrhs r4, r3, r2, r1
1768
17690x62 0xfb 0x03 0x41
17700x63 0xfb 0x12 0x14
17710x34 0xbf
17720x62 0xfb 0x03 0x41
17730x63 0xfb 0x12 0x14
1774
1775#------------------------------------------------------------------------------
1776# SSAT
1777#------------------------------------------------------------------------------
1778# CHECK: ssat r9, #30, r0, asr #2
1779
17800x20 0xf3 0x9d 0x09
1781
1782#------------------------------------------------------------------------------
1783# STR (immediate)
1784#------------------------------------------------------------------------------
1785# CHECK: str r10, [r11], #0
1786
17870x4b 0xf8 0x00 0xab
1788
1789#------------------------------------------------------------------------------
1790# STRD (immediate)
1791#------------------------------------------------------------------------------
1792# CHECK: strd r6, r3, [r5], #-8
1793# CHECK: strd r8, r5, [r5]{{$}}
1794# CHECK: strd r7, r4, [r5], #-4
1795
17960x65 0xe8 0x02 0x63
17970x65 0xe8 0x00 0x85
17980x65 0xe8 0x01 0x74
1799
1800#------------------------------------------------------------------------------
1801# STREX/STREXB/STREXH/STREXD
1802#------------------------------------------------------------------------------
1803# CHECK: strex r1, r8, [r4]
1804# CHECK: strex r8, r2, [r4]
1805# CHECK: strex r2, r12, [sp, #128]
1806# CHECK: strexb r5, r1, [r7]
1807# CHECK: strexh r9, r7, [r12]
1808# CHECK: strexd r9, r3, r6, [r4]
1809
18100x44 0xe8 0x00 0x81
18110x44 0xe8 0x00 0x28
18120x4d 0xe8 0x20 0xc2
18130xc7 0xe8 0x45 0x1f
18140xcc 0xe8 0x59 0x7f
18150xc4 0xe8 0x79 0x36
1816
1817
1818#------------------------------------------------------------------------------
1819# STRH(immediate)
1820#------------------------------------------------------------------------------
1821# CHECK: strh r5, [r5, #-4]
1822# CHECK: strh r5, [r6, #32]
1823# CHECK: strh.w r5, [r6, #33]
1824# CHECK: strh.w r5, [r6, #257]
1825# CHECK: strh.w lr, [r7, #257]
1826# CHECK: strh r5, [r8, #255]!
1827# CHECK: strh r2, [r5, #4]!
1828# CHECK: strh r1, [r4, #-4]!
1829# CHECK: strh lr, [r3], #255
1830# CHECK: strh r9, [r2], #4
1831# CHECK: strh r3, [sp], #-4
1832
18330x25 0xf8 0x04 0x5c
18340x35 0x84
18350xa6 0xf8 0x21 0x50
18360xa6 0xf8 0x01 0x51
18370xa7 0xf8 0x01 0xe1
18380x28 0xf8 0xff 0x5f
18390x25 0xf8 0x04 0x2f
18400x24 0xf8 0x04 0x1d
18410x23 0xf8 0xff 0xeb
18420x22 0xf8 0x04 0x9b
18430x2d 0xf8 0x04 0x39
1844
1845
1846#------------------------------------------------------------------------------
1847# STRH(register)
1848#------------------------------------------------------------------------------
1849# CHECK: strh.w r1, [r8, r1]
1850# CHECK: strh.w r4, [r5, r2]
1851# CHECK: strh.w r6, [r0, r2, lsl #3]
1852# CHECK: strh.w r8, [r8, r2, lsl #2]
1853# CHECK: strh.w r7, [sp, r2, lsl #1]
1854# CHECK: strh.w r7, [sp, r2]
1855
18560x28 0xf8 0x01 0x10
18570x25 0xf8 0x02 0x40
18580x20 0xf8 0x32 0x60
18590x28 0xf8 0x22 0x80
18600x2d 0xf8 0x12 0x70
18610x2d 0xf8 0x02 0x70
1862
1863
1864#------------------------------------------------------------------------------
1865# STRHT
1866#------------------------------------------------------------------------------
1867# CHECK: strht r1, [r2]
1868# CHECK: strht r1, [r8]
1869# CHECK: strht r1, [r8, #3]
1870# CHECK: strht r1, [r8, #255]
1871
18720x22 0xf8 0x00 0x1e
18730x28 0xf8 0x00 0x1e
18740x28 0xf8 0x03 0x1e
18750x28 0xf8 0xff 0x1e
1876
1877
1878#------------------------------------------------------------------------------
1879# STRT
1880#------------------------------------------------------------------------------
1881# CHECK: strt r1, [r2]
1882# CHECK: strt r1, [r8]
1883# CHECK: strt r1, [r8, #3]
1884# CHECK: strt r1, [r8, #255]
1885
18860x42 0xf8 0x00 0x1e
18870x48 0xf8 0x00 0x1e
18880x48 0xf8 0x03 0x1e
18890x48 0xf8 0xff 0x1e
1890
1891
1892#------------------------------------------------------------------------------
1893# SUB (immediate)
1894#------------------------------------------------------------------------------
1895# CHECK: itet eq
1896# CHECK: subeq r1, r2, #4
1897# CHECK: subwne r5, r3, #1023
1898# CHECK: subweq r4, r5, #293
1899# CHECK: sub.w r2, sp, #1024
1900# CHECK: sub.w r2, r8, #65280
1901# CHECK: subw r2, r3, #257
1902# CHECK: sub.w r12, r6, #256
1903# CHECK: subw r12, r6, #256
1904# CHECK: subs.w r1, r2, #496
1905
19060x0a 0xbf
19070x11 0x1f
19080xa3 0xf2 0xff 0x35
19090xa5 0xf2 0x25 0x14
19100xad 0xf5 0x80 0x62
19110xa8 0xf5 0x7f 0x42
19120xa3 0xf2 0x01 0x12
19130xa6 0xf5 0x80 0x7c
19140xa6 0xf2 0x00 0x1c
19150xb2 0xf5 0xf8 0x71
1916
1917
1918#------------------------------------------------------------------------------
1919# SUB (register)
1920#------------------------------------------------------------------------------
1921# CHECK: sub.w r4, r5, r6
1922# CHECK: sub.w r4, r5, r6, lsl #5
1923# CHECK: sub.w r4, r5, r6, lsr #5
1924# CHECK: sub.w r4, r5, r6, lsr #5
1925# CHECK: sub.w r4, r5, r6, asr #5
1926# CHECK: sub.w r4, r5, r6, ror #5
1927# CHECK: sub.w r5, r2, r12, rrx
1928
19290xa5 0xeb 0x06 0x04
19300xa5 0xeb 0x46 0x14
19310xa5 0xeb 0x56 0x14
19320xa5 0xeb 0x56 0x14
19330xa5 0xeb 0x66 0x14
19340xa5 0xeb 0x76 0x14
19350xa2 0xeb 0x3c 0x05
1936
1937
1938#------------------------------------------------------------------------------
1939# SVC
1940#------------------------------------------------------------------------------
1941# CHECK: svc #0
1942# CHECK: ite eq
1943# CHECK: svceq #255
1944# CHECK: svcne #33
1945
19460x00 0xdf
19470x0c 0xbf
19480xff 0xdf
19490x21 0xdf
1950
1951#------------------------------------------------------------------------------
1952# SXTAB
1953#------------------------------------------------------------------------------
1954# CHECK:  sxtab r2, r3, r4
1955# CHECK:  sxtab r4, r5, r6
1956# CHECK:  it lt
1957# CHECK:  sxtablt r6, r2, r9, ror #8
1958# CHECK:  sxtab r5, r1, r4, ror #16
1959# CHECK:  sxtab r7, r8, r3, ror #24
1960
19610x43 0xfa 0x84 0xf2
19620x45 0xfa 0x86 0xf4
19630xb8 0xbf
19640x42 0xfa 0x99 0xf6
19650x41 0xfa 0xa4 0xf5
19660x48 0xfa 0xb3 0xf7
1967
1968
1969#------------------------------------------------------------------------------
1970# SXTAB16
1971#------------------------------------------------------------------------------
1972# CHECK:  sxtab16 r6, r2, r7
1973# CHECK:  sxtab16 r3, r5, r8, ror #8
1974# CHECK:  sxtab16 r3, r2, r1, ror #16
1975# CHECK:  ite ne
1976# CHECK:  sxtab16ne r0, r1, r4
1977# CHECK:  sxtab16eq r1, r2, r3, ror #24
1978
19790x22 0xfa 0x87 0xf6
19800x25 0xfa 0x98 0xf3
19810x22 0xfa 0xa1 0xf3
19820x14 0xbf
19830x21 0xfa 0x84 0xf0
19840x22 0xfa 0xb3 0xf1
1985
1986
1987#------------------------------------------------------------------------------
1988# SXTAH
1989#------------------------------------------------------------------------------
1990# CHECK:  sxtah r1, r3, r9
1991# CHECK:  sxtah r3, r8, r3, ror #8
1992# CHECK:  sxtah r9, r3, r3, ror #24
1993# CHECK:  ite hi
1994# CHECK:  sxtahhi r6, r1, r6
1995# CHECK:  sxtahls r2, r2, r4, ror #16
1996
19970x03 0xfa 0x89 0xf1
19980x08 0xfa 0x93 0xf3
19990x03 0xfa 0xb3 0xf9
20000x8c 0xbf
20010x01 0xfa 0x86 0xf6
20020x02 0xfa 0xa4 0xf2
2003
2004
2005#------------------------------------------------------------------------------
2006# SXTB
2007#------------------------------------------------------------------------------
2008# CHECK:  sxtb r5, r6
2009# CHECK:  sxtb.w r6, r9, ror #8
2010# CHECK:  sxtb.w r8, r3, ror #24
2011# CHECK:  ite ge
2012# CHECK:  sxtbge r2, r4
2013# CHECK:  sxtblt.w r5, r1, ror #16
2014
20150x75 0xb2
20160x4f 0xfa 0x99 0xf6
20170x4f 0xfa 0xb3 0xf8
20180xac 0xbf
20190x62 0xb2
20200x4f 0xfa 0xa1 0xf5
2021
2022
2023#------------------------------------------------------------------------------
2024# SXTB16
2025#------------------------------------------------------------------------------
2026# CHECK:  sxtb16 r1, r4
2027# CHECK:  sxtb16 r6, r7
2028# CHECK:  sxtb16 r3, r1, ror #16
2029# CHECK:  ite hs
2030# CHECK:  sxtb16hs r3, r5, ror #8
2031# CHECK:  sxtb16lo r2, r3, ror #24
2032
20330x2f 0xfa 0x84 0xf1
20340x2f 0xfa 0x87 0xf6
20350x2f 0xfa 0xa1 0xf3
20360x2c 0xbf
20370x2f 0xfa 0x95 0xf3
20380x2f 0xfa 0xb3 0xf2
2039
2040
2041#------------------------------------------------------------------------------
2042# SXTH
2043#------------------------------------------------------------------------------
2044# CHECK:  sxth r1, r6
2045# CHECK:  sxth.w r3, r8, ror #8
2046# CHECK:  sxth.w r9, r3, ror #24
2047# CHECK:  itt ne
2048# CHECK:  sxthne.w r3, r9
2049# CHECK:  sxthne.w r2, r2, ror #16
2050
20510x31 0xb2
20520x0f 0xfa 0x98 0xf3
20530x0f 0xfa 0xb3 0xf9
20540x1c 0xbf
20550x0f 0xfa 0x89 0xf3
20560x0f 0xfa 0xa2 0xf2
2057
2058
2059#------------------------------------------------------------------------------
2060# SXTB
2061#------------------------------------------------------------------------------
2062# CHECK:  sxtb r5, r6
2063# CHECK:  sxtb.w r6, r9, ror #8
2064# CHECK:  sxtb.w r8, r3, ror #24
2065# CHECK:  ite ge
2066# CHECK:  sxtbge r2, r4
2067# CHECK:  sxtblt.w r5, r1, ror #16
2068
20690x75 0xb2
20700x4f 0xfa 0x99 0xf6
20710x4f 0xfa 0xb3 0xf8
20720xac 0xbf
20730x62 0xb2
20740x4f 0xfa 0xa1 0xf5
2075
2076
2077#------------------------------------------------------------------------------
2078# SXTB16
2079#------------------------------------------------------------------------------
2080# CHECK:  sxtb16 r1, r4
2081# CHECK:  sxtb16 r6, r7
2082# CHECK:  sxtb16 r3, r1, ror #16
2083# CHECK:  ite hs
2084# CHECK:  sxtb16hs r3, r5, ror #8
2085# CHECK:  sxtb16lo r2, r3, ror #24
2086
20870x2f 0xfa 0x84 0xf1
20880x2f 0xfa 0x87 0xf6
20890x2f 0xfa 0xa1 0xf3
20900x2c 0xbf
20910x2f 0xfa 0x95 0xf3
20920x2f 0xfa 0xb3 0xf2
2093
2094
2095#------------------------------------------------------------------------------
2096# SXTH
2097#------------------------------------------------------------------------------
2098# CHECK:  sxth r1, r6
2099# CHECK:  sxth.w r3, r8, ror #8
2100# CHECK:  sxth.w r9, r3, ror #24
2101# CHECK:  itt ne
2102# CHECK:  sxthne.w r3, r9
2103# CHECK:  sxthne.w r2, r2, ror #16
2104
21050x31 0xb2
21060x0f 0xfa 0x98 0xf3
21070x0f 0xfa 0xb3 0xf9
21080x1c 0xbf
21090x0f 0xfa 0x89 0xf3
21100x0f 0xfa 0xa2 0xf2
2111
2112
2113#------------------------------------------------------------------------------
2114# TBB/TBH
2115#------------------------------------------------------------------------------
2116# CHECK:  tbb [r3, r8]
2117# CHECK:  tbh [r3, r8, lsl #1]
2118# CHECK:  it eq
2119# CHECK:  tbbeq [r3, r8]
2120# CHECK:  it hs
2121# CHECK:  tbhhs [r3, r8, lsl #1]
2122
21230xd3 0xe8 0x08 0xf0
21240xd3 0xe8 0x18 0xf0
21250x08 0xbf
21260xd3 0xe8 0x08 0xf0
21270x28 0xbf
21280xd3 0xe8 0x18 0xf0
2129
2130
2131#------------------------------------------------------------------------------
2132# TEQ
2133#------------------------------------------------------------------------------
2134# CHECK:  teq.w r5, #61440
2135# CHECK:  teq.w r4, r5
2136# CHECK:  teq.w r4, r5, lsl #5
2137# CHECK:  teq.w r4, r5, lsr #5
2138# CHECK:  teq.w r4, r5, lsr #5
2139# CHECK:  teq.w r4, r5, asr #5
2140# CHECK:  teq.w r4, r5, ror #5
2141
21420x95 0xf4 0x70 0x4f
21430x94 0xea 0x05 0x0f
21440x94 0xea 0x45 0x1f
21450x94 0xea 0x55 0x1f
21460x94 0xea 0x55 0x1f
21470x94 0xea 0x65 0x1f
21480x94 0xea 0x75 0x1f
2149
2150
2151#------------------------------------------------------------------------------
2152# TST
2153#------------------------------------------------------------------------------
2154# CHECK:  tst.w r5, #61440
2155# CHECK:  tst r2, r5
2156# CHECK:  tst.w r3, r12, lsl #5
2157# CHECK:  tst.w r4, r11, lsr #4
2158# CHECK:  tst.w r5, r10, lsr #12
2159# CHECK:  tst.w r6, r9, asr #30
2160# CHECK:  tst.w r7, r8, ror #2
2161
21620x15 0xf4 0x70 0x4f
21630x2a 0x42
21640x13 0xea 0x4c 0x1f
21650x14 0xea 0x1b 0x1f
21660x15 0xea 0x1a 0x3f
21670x16 0xea 0xa9 0x7f
21680x17 0xea 0xb8 0x0f
2169
2170
2171#------------------------------------------------------------------------------
2172# UADD16/UADD8
2173#------------------------------------------------------------------------------
2174# CHECK:  uadd16 r1, r2, r3
2175# CHECK:  uadd8 r1, r2, r3
2176# CHECK:  ite gt
2177# CHECK:  uadd16gt r1, r2, r3
2178# CHECK:  uadd8le r1, r2, r3
2179
21800x92 0xfa 0x43 0xf1
21810x82 0xfa 0x43 0xf1
21820xcc 0xbf
21830x92 0xfa 0x43 0xf1
21840x82 0xfa 0x43 0xf1
2185
2186
2187#------------------------------------------------------------------------------
2188# UASX
2189#------------------------------------------------------------------------------
2190# CHECK:  uasx r9, r12, r0
2191# CHECK:  it eq
2192# CHECK:  uasxeq r9, r12, r0
2193# CHECK:  uasx r9, r12, r0
2194# CHECK:  it eq
2195# CHECK:  uasxeq r9, r12, r0
2196
21970xac 0xfa 0x40 0xf9
21980x08 0xbf
21990xac 0xfa 0x40 0xf9
22000xac 0xfa 0x40 0xf9
22010x08 0xbf
22020xac 0xfa 0x40 0xf9
2203
2204
2205#------------------------------------------------------------------------------
2206# UBFX
2207#------------------------------------------------------------------------------
2208# CHECK:  ubfx r4, r5, #16, #1
2209# CHECK:  it gt
2210# CHECK:  ubfxgt r4, r5, #16, #16
2211
22120xc5 0xf3 0x00 0x44
22130xc8 0xbf
22140xc5 0xf3 0x0f 0x44
2215
2216
2217#------------------------------------------------------------------------------
2218# UHADD16/UHADD8
2219#------------------------------------------------------------------------------
2220# CHECK:  uhadd16 r4, r8, r2
2221# CHECK:  uhadd8 r4, r8, r2
2222# CHECK:  itt gt
2223# CHECK:  uhadd16gt r4, r8, r2
2224# CHECK:  uhadd8gt r4, r8, r2
2225
22260x98 0xfa 0x62 0xf4
22270x88 0xfa 0x62 0xf4
22280xc4 0xbf
22290x98 0xfa 0x62 0xf4
22300x88 0xfa 0x62 0xf4
2231
2232
2233#------------------------------------------------------------------------------
2234# UHASX/UHSAX
2235#------------------------------------------------------------------------------
2236# CHECK:  uhasx r4, r1, r5
2237# CHECK:  uhsax r5, r6, r6
2238# CHECK:  itt gt
2239# CHECK:  uhasxgt r6, r9, r8
2240# CHECK:  uhsaxgt r7, r8, r12
2241
22420xa1 0xfa 0x65 0xf4
22430xe6 0xfa 0x66 0xf5
22440xc4 0xbf
22450xa9 0xfa 0x68 0xf6
22460xe8 0xfa 0x6c 0xf7
2247
2248#------------------------------------------------------------------------------
2249# UHSUB16/UHSUB8
2250#------------------------------------------------------------------------------
2251# CHECK:  uhsub16 r5, r8, r3
2252# CHECK:  uhsub8 r1, r7, r6
2253# CHECK:  itt lt
2254# CHECK:  uhsub16lt r4, r9, r12
2255# CHECK:  uhsub8lt r3, r1, r5
2256
22570xd8 0xfa 0x63 0xf5
22580xc7 0xfa 0x66 0xf1
22590xbc 0xbf
22600xd9 0xfa 0x6c 0xf4
22610xc1 0xfa 0x65 0xf3
2262
2263
2264#------------------------------------------------------------------------------
2265# UMAAL
2266#------------------------------------------------------------------------------
2267# CHECK:  umaal r3, r4, r5, r6
2268# CHECK:  it lt
2269# CHECK:  umaallt r3, r4, r5, r6
2270
22710xe5 0xfb 0x66 0x34
22720xb8 0xbf
22730xe5 0xfb 0x66 0x34
2274
2275
2276#------------------------------------------------------------------------------
2277# UMLAL
2278#------------------------------------------------------------------------------
2279# CHECK:  umlal r2, r4, r6, r8
2280# CHECK:  it gt
2281# CHECK:  umlalgt r6, r1, r2, r6
2282
22830xe6 0xfb 0x08 0x24
22840xc8 0xbf
22850xe2 0xfb 0x06 0x61
2286
2287
2288#------------------------------------------------------------------------------
2289# UMULL
2290#------------------------------------------------------------------------------
2291# CHECK:  umull r2, r4, r6, r8
2292# CHECK:  it gt
2293# CHECK:  umullgt r6, r1, r2, r6
2294
22950xa6 0xfb 0x08 0x24
22960xc8 0xbf
22970xa2 0xfb 0x06 0x61
2298
2299
2300#------------------------------------------------------------------------------
2301# UQADD16/UQADD8
2302#------------------------------------------------------------------------------
2303# CHECK:  uqadd16 r1, r2, r3
2304# CHECK:  uqadd8 r3, r4, r8
2305# CHECK:  ite gt
2306# CHECK:  uqadd16gt r4, r7, r9
2307# CHECK:  uqadd8le r8, r1, r2
2308
23090x92 0xfa 0x53 0xf1
23100x84 0xfa 0x58 0xf3
23110xcc 0xbf
23120x97 0xfa 0x59 0xf4
23130x81 0xfa 0x52 0xf8
2314
2315
2316#------------------------------------------------------------------------------
2317# UQASX/UQSAX
2318#------------------------------------------------------------------------------
2319# CHECK:  uqasx r1, r2, r3
2320# CHECK:  uqsax r3, r4, r8
2321# CHECK:  ite gt
2322# CHECK:  uqasxgt r4, r7, r9
2323# CHECK:  uqsaxle r8, r1, r2
2324
23250xa2 0xfa 0x53 0xf1
23260xe4 0xfa 0x58 0xf3
23270xcc 0xbf
23280xa7 0xfa 0x59 0xf4
23290xe1 0xfa 0x52 0xf8
2330
2331
2332#------------------------------------------------------------------------------
2333# UQSUB16/UQSUB8
2334#------------------------------------------------------------------------------
2335# CHECK:  uqsub8 r8, r2, r9
2336# CHECK:  uqsub16 r1, r9, r7
2337# CHECK:  ite gt
2338# CHECK:  uqsub8gt r3, r1, r6
2339# CHECK:  uqsub16le r4, r6, r4
2340
23410xc2 0xfa 0x59 0xf8
23420xd9 0xfa 0x57 0xf1
23430xcc 0xbf
23440xc1 0xfa 0x56 0xf3
23450xd6 0xfa 0x54 0xf4
2346
2347
2348#------------------------------------------------------------------------------
2349# UQSUB16/UQSUB8
2350#------------------------------------------------------------------------------
2351# CHECK:  usad8 r1, r9, r7
2352# CHECK:  usada8 r8, r2, r9, r12
2353# CHECK:  ite gt
2354# CHECK:  usada8gt r3, r1, r6, r9
2355# CHECK:  usad8le r4, r6, r4
2356
23570x79 0xfb 0x07 0xf1
23580x72 0xfb 0x09 0xc8
23590xcc 0xbf
23600x71 0xfb 0x06 0x93
23610x76 0xfb 0x04 0xf4
2362
2363
2364#------------------------------------------------------------------------------
2365# USAT
2366#------------------------------------------------------------------------------
2367# CHECK:  usat r8, #1, r10
2368# CHECK:  usat r8, #4, r10
2369# CHECK:  usat r8, #5, r10, lsl #31
2370# CHECK:  usat r8, #16, r10, asr #1
2371
23720x8a 0xf3 0x01 0x08
23730x8a 0xf3 0x04 0x08
23740x8a 0xf3 0xc5 0x78
23750xaa 0xf3 0x50 0x08
2376
2377
2378#------------------------------------------------------------------------------
2379# USAT16
2380#------------------------------------------------------------------------------
2381# CHECK:  usat16	r2, #2, r7
2382# CHECK:  usat16	r3, #15, r5
2383
23840xa7 0xf3 0x02 0x02
23850xa5 0xf3 0x0f 0x03
2386
2387
2388#------------------------------------------------------------------------------
2389# USAX
2390#------------------------------------------------------------------------------
2391# CHECK:  usax r2, r3, r4
2392# CHECK:  it ne
2393# CHECK:  usaxne r6, r1, r9
2394# CHECK:  usax r2, r3, r4
2395# CHECK:  it ne
2396# CHECK:  usaxne r6, r1, r9
2397
23980xe3 0xfa 0x44 0xf2
23990x18 0xbf
24000xe1 0xfa 0x49 0xf6
24010xe3 0xfa 0x44 0xf2
24020x18 0xbf
24030xe1 0xfa 0x49 0xf6
2404
2405
2406#------------------------------------------------------------------------------
2407# USUB16/USUB8
2408#------------------------------------------------------------------------------
2409# CHECK:  usub16 r4, r2, r7
2410# CHECK:  usub8 r1, r8, r5
2411# CHECK:  ite hi
2412# CHECK:  usub16hi r1, r1, r3
2413# CHECK:  usub8ls r9, r2, r3
2414
24150xd2 0xfa 0x47 0xf4
24160xc8 0xfa 0x45 0xf1
24170x8c 0xbf
24180xd1 0xfa 0x43 0xf1
24190xc2 0xfa 0x43 0xf9
2420
2421
2422#------------------------------------------------------------------------------
2423# UXTAB
2424#------------------------------------------------------------------------------
2425# CHECK:  uxtab r2, r3, r4
2426# CHECK:  uxtab r4, r5, r6
2427# CHECK:  it lt
2428# CHECK:  uxtablt r6, r2, r9, ror #8
2429# CHECK:  uxtab r5, r1, r4, ror #16
2430# CHECK:  uxtab r7, r8, r3, ror #24
2431
24320x53 0xfa 0x84 0xf2
24330x55 0xfa 0x86 0xf4
24340xb8 0xbf
24350x52 0xfa 0x99 0xf6
24360x51 0xfa 0xa4 0xf5
24370x58 0xfa 0xb3 0xf7
2438
2439
2440#------------------------------------------------------------------------------
2441# UXTAB16
2442#------------------------------------------------------------------------------
2443# CHECK:  it ge
2444# CHECK:  uxtab16ge r0, r1, r4
2445# CHECK:  uxtab16 r6, r2, r7
2446# CHECK:  uxtab16 r3, r5, r8, ror #8
2447# CHECK:  uxtab16 r3, r2, r1, ror #16
2448# CHECK:  it eq
2449# CHECK:  uxtab16eq r1, r2, r3, ror #24
2450
24510xa8 0xbf
24520x31 0xfa 0x84 0xf0
24530x32 0xfa 0x87 0xf6
24540x35 0xfa 0x98 0xf3
24550x32 0xfa 0xa1 0xf3
24560x08 0xbf
24570x32 0xfa 0xb3 0xf1
2458
2459
2460#------------------------------------------------------------------------------
2461# UXTAH
2462#------------------------------------------------------------------------------
2463# CHECK:  uxtah r1, r3, r9
2464# CHECK:  it hi
2465# CHECK:  uxtahhi r6, r1, r6
2466# CHECK:  uxtah r3, r8, r3, ror #8
2467# CHECK:  it lo
2468# CHECK:  uxtahlo r2, r2, r4, ror #16
2469# CHECK:  uxtah r9, r3, r3, ror #24
2470
24710x13 0xfa 0x89 0xf1
24720x88 0xbf
24730x11 0xfa 0x86 0xf6
24740x18 0xfa 0x93 0xf3
24750x38 0xbf
24760x12 0xfa 0xa4 0xf2
24770x13 0xfa 0xb3 0xf9
2478
2479
2480#------------------------------------------------------------------------------
2481# UXTB
2482#------------------------------------------------------------------------------
2483# CHECK:  it ge
2484# CHECK:  uxtbge r2, r4
2485# CHECK:  uxtb r5, r6
2486# CHECK:  uxtb.w r6, r9, ror #8
2487# CHECK:  it lo
2488# CHECK:  uxtblo.w r5, r1, ror #16
2489# CHECK:  uxtb.w r8, r3, ror #24
2490
24910xa8 0xbf
24920xe2 0xb2
24930xf5 0xb2
24940x5f 0xfa 0x99 0xf6
24950x38 0xbf
24960x5f 0xfa 0xa1 0xf5
24970x5f 0xfa 0xb3 0xf8
2498
2499
2500#------------------------------------------------------------------------------
2501# UXTB16
2502#------------------------------------------------------------------------------
2503# CHECK:  uxtb16 r1, r4
2504# CHECK:  uxtb16 r6, r7
2505# CHECK:  it hs
2506# CHECK:  uxtb16hs r3, r5, ror #8
2507# CHECK:  uxtb16 r3, r1, ror #16
2508# CHECK:  it ge
2509# CHECK:  uxtb16ge r2, r3, ror #24
2510
25110x3f 0xfa 0x84 0xf1
25120x3f 0xfa 0x87 0xf6
25130x28 0xbf
25140x3f 0xfa 0x95 0xf3
25150x3f 0xfa 0xa1 0xf3
25160xa8 0xbf
25170x3f 0xfa 0xb3 0xf2
2518
2519
2520#------------------------------------------------------------------------------
2521# UXTH
2522#------------------------------------------------------------------------------
2523# CHECK:  it ne
2524# CHECK:  uxthne.w r3, r9
2525# CHECK:  uxth r1, r6
2526# CHECK:  uxth.w r3, r8, ror #8
2527# CHECK:  it le
2528# CHECK:  uxthle.w r2, r2, ror #16
2529# CHECK:  uxth.w r9, r3, ror #24
2530
25310x18 0xbf
25320x1f 0xfa 0x89 0xf3
25330xb1 0xb2
25340x1f 0xfa 0x98 0xf3
25350xd8 0xbf
25360x1f 0xfa 0xa2 0xf2
25370x1f 0xfa 0xb3 0xf9
2538
2539
2540#------------------------------------------------------------------------------
2541# WFE/WFI/YIELD
2542#------------------------------------------------------------------------------
2543# CHECK:  wfe
2544# CHECK:  wfi
2545# CHECK:  yield
2546# CHECK:  itet lt
2547# CHECK:  wfelt
2548# CHECK:  wfige
2549# CHECK:  yieldlt
2550
25510x20 0xbf
25520x30 0xbf
25530x10 0xbf
25540xb6 0xbf
25550x20 0xbf
25560x30 0xbf
25570x10 0xbf
2558
2559