Port over more Thumb2 assembly tests to disassembly tests.
authorOwen Anderson <resistor@mac.com>
Fri, 16 Sep 2011 17:22:48 +0000 (17:22 +0000)
committerOwen Anderson <resistor@mac.com>
Fri, 16 Sep 2011 17:22:48 +0000 (17:22 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139912 91177308-0d34-0410-b5e6-96231b3b80d8

test/MC/Disassembler/ARM/thumb2.txt

index d5a224b2b4e7a3783d5a8867a0152215a3290267..07db5c171064957f6e4af55942bd4cfb79c5bb0e 100644 (file)
 
 0xbf 0xf3 0x6f 0x8f
 
+#------------------------------------------------------------------------------
+# IT
+#------------------------------------------------------------------------------
+# Test encodings of a few full IT blocks, not just the IT instruction
+
+# CHECK: iteet eq
+# CHECK: addeq r0, r1, r2
+# CHECK: nopne
+# CHECK: subne r5, r6, r7
+# CHECK: addeq r1, r2, #4
+
+0x0d 0xbf
+0x88 0x18
+0x00 0xbf
+0xf5 0x1b
+0x11 0x1d
+
+# CHECK: ittee ls
+# CHECK: addls r0, r1, r2
+# CHECK: nopls
+# CHECK: subhi r5, r6, r7
+# CHECK: addhi r1, r2, #4
+
+0x99 0xbf
+0x88 0x18
+0x00 0xbf
+0xf5 0x1b
+0x11 0x1d
+
+
 #------------------------------------------------------------------------------
 # LDMIA
 #------------------------------------------------------------------------------
 0x4f 0xf0 0x7f 0x70
 0x5f 0xf0 0x7f 0x70
 
+#------------------------------------------------------------------------------
+# MOVT
+#------------------------------------------------------------------------------
+# CHECK: movt r3, #7
+# CHECK: movt r6, #65535
+# CHECK: it eq
+# CHECK: movteq r4, #4080
+
+0xc0 0xf2 0x07 0x03
+0xcf 0xf6 0xff 0x76
+0x08 0xbf
+0xc0 0xf6 0xf0 0x74
 
 #------------------------------------------------------------------------------
-# IT
+# MRC/MRC2
 #------------------------------------------------------------------------------
-# Test encodings of a few full IT blocks, not just the IT instruction
+# CHECK: mrc  p14, #0, r1, c1, c2, #4
+# CHECK: mrc2  p14, #0, r1, c1, c2, #4
 
-# CHECK: iteet eq
-# CHECK: addeq r0, r1, r2
-# CHECK: nopne
-# CHECK: subne r5, r6, r7
-# CHECK: addeq r1, r2, #4
+0x11 0xee 0x92 0x1e
+0x11 0xfe 0x92 0x1e
 
-0x0d 0xbf
-0x88 0x18
-0x00 0xbf
-0xf5 0x1b
-0x11 0x1d
 
-# CHECK: ittee ls
-# CHECK: addls r0, r1, r2
-# CHECK: nopls
-# CHECK: subhi r5, r6, r7
-# CHECK: addhi r1, r2, #4
+#------------------------------------------------------------------------------
+# MRRC/MRRC2
+#------------------------------------------------------------------------------
+# CHECK: mrrc  p7, #1, r5, r4, c1
+# CHECK: mrrc2  p7, #1, r5, r4, c1
+
+0x54 0xec 0x11 0x57
+0x54 0xfc 0x11 0x57
+
+
+#------------------------------------------------------------------------------
+# MRS
+#------------------------------------------------------------------------------
+# CHECK: mrs  r8, apsr
+# CHECK: mrs  r8, spsr
+
+0xef 0xf3 0x00 0x88
+0xff 0xf3 0x00 0x88
+
+
+#------------------------------------------------------------------------------
+# MSR
+#------------------------------------------------------------------------------
+# CHECK: msr  APSR_nzcvq, r1
+# CHECK: msr  APSR_g, r2
+# CHECK: msr  APSR_nzcvq, r3
+# CHECK: msr  APSR_nzcvq, r4
+# CHECK: msr  APSR_nzcvqg, r5
+# CHECK: msr  CPSR_fc, r6
+# CHECK: msr  CPSR_c, r7
+# CHECK: msr  CPSR_x, r8
+# CHECK: msr  CPSR_fc, r9
+# CHECK: msr  CPSR_fc, r11
+# CHECK: msr  CPSR_fsx, r12
+# CHECK: msr  SPSR_fc, r0
+# CHECK: msr  SPSR_fsxc, r5
+# CHECK: msr  CPSR_fsxc, r8
+
+0x81 0xf3 0x00 0x88
+0x82 0xf3 0x00 0x84
+0x83 0xf3 0x00 0x88
+0x84 0xf3 0x00 0x88
+0x85 0xf3 0x00 0x8c
+0x86 0xf3 0x00 0x89
+0x87 0xf3 0x00 0x81
+0x88 0xf3 0x00 0x82
+0x89 0xf3 0x00 0x89
+0x8b 0xf3 0x00 0x89
+0x8c 0xf3 0x00 0x8e
+0x90 0xf3 0x00 0x89
+0x95 0xf3 0x00 0x8f
+0x88 0xf3 0x00 0x8f
+
+
+#------------------------------------------------------------------------------
+# MUL
+#------------------------------------------------------------------------------
+# CHECK: muls r3, r4, r3
+# CHECK: mul r3, r4, r3
+# CHECK: mul r3, r4, r6
+# CHECK: it eq
+# CHECK: muleq r3, r4, r5
+
+0x63 0x43
+0x04 0xfb 0x03 0xf3
+0x04 0xfb 0x06 0xf3
+0x08 0xbf
+0x04 0xfb 0x05 0xf3
+
+
+#------------------------------------------------------------------------------
+# MVN(immediate)
+#------------------------------------------------------------------------------
+# CHECK: mvns r8, #21
+# CHECK: mvn r0, #66846720
+# CHECK: mvns r0, #66846720
+# CHECK: itte eq
+# CHECK: mvnseq r1, #12
+# CHECK: mvneq r1, #12
+# CHECK: mvnne r1, #12
+
+0x7f 0xf0 0x15 0x08
+0x6f 0xf0 0x7f 0x70
+0x7f 0xf0 0x7f 0x70
+0x06 0xbf
+0x7f 0xf0 0x0c 0x01
+0x6f 0xf0 0x0c 0x01
+0x6f 0xf0 0x0c 0x01
+
+
+#------------------------------------------------------------------------------
+# MVN(register)
+#------------------------------------------------------------------------------
+# CHECK: mvn.w r2, r3
+# CHECK: mvns r2, r3
+# CHECK: mvn.w r5, r6, lsl #19
+# CHECK: mvn.w r5, r6, lsr #9
+# CHECK: mvn.w r5, r6, asr #4
+# CHECK: mvn.w r5, r6, ror #6
+# CHECK: mvn.w r5, r6, rrx
+# CHECK: it eq
+# CHECK: mvneq r2, r3
+
+0x6f 0xea 0x03 0x02
+0xda 0x43
+0x6f 0xea 0xc6 0x45
+0x6f 0xea 0x56 0x25
+0x6f 0xea 0x26 0x15
+0x6f 0xea 0xb6 0x15
+0x6f 0xea 0x36 0x05
+0x08 0xbf
+0xda 0x43
+
+#------------------------------------------------------------------------------
+# NOP
+#------------------------------------------------------------------------------
+# CHECK: nop.w
+
+0xaf 0xf3 0x00 0x80
+
+
+#------------------------------------------------------------------------------
+# ORN
+#------------------------------------------------------------------------------
+# CHECK: orn r4, r5, #61440
+# CHECK: orn r4, r5, r6
+# CHECK: orns r4, r5, r6
+# CHECK: orn r4, r5, r6, lsl #5
+# CHECK: orns r4, r5, r6, lsr #5
+# CHECK: orn r4, r5, r6, lsr #5
+# CHECK: orns r4, r5, r6, asr #5
+# CHECK: orn r4, r5, r6, ror #5
+
+0x65 0xf4 0x70 0x44
+0x65 0xea 0x06 0x04
+0x75 0xea 0x06 0x04
+0x65 0xea 0x46 0x14
+0x75 0xea 0x56 0x14
+0x65 0xea 0x56 0x14
+0x75 0xea 0x66 0x14
+0x65 0xea 0x76 0x14
+
+
+#------------------------------------------------------------------------------
+# ORR
+#------------------------------------------------------------------------------
+# CHECK: orr r4, r5, #61440
+# CHECK: orr.w r4, r5, r6
+# CHECK: orr.w r4, r5, r6, lsl #5
+# CHECK: orrs.w r4, r5, r6, lsr #5
+# CHECK: orr.w r4, r5, r6, lsr #5
+# CHECK: orrs.w r4, r5, r6, asr #5
+# CHECK: orr.w r4, r5, r6, ror #5
+
+0x45 0xf4 0x70 0x44
+0x45 0xea 0x06 0x04
+0x45 0xea 0x46 0x14
+0x55 0xea 0x56 0x14
+0x45 0xea 0x56 0x14
+0x55 0xea 0x66 0x14
+0x45 0xea 0x76 0x14
+
+
+#------------------------------------------------------------------------------
+# PKH
+#------------------------------------------------------------------------------
+# CHECK: pkhbt r2, r2, r3
+# CHECK: pkhbt r2, r2, r3, lsl #31
+# CHECK: pkhbt r2, r2, r3, lsl #15
+
+# CHECK: pkhtb r2, r2, r3, asr #31
+# CHECK: pkhtb r2, r2, r3, asr #15
+
+0xc2 0xea 0x03 0x02
+0xc2 0xea 0xc3 0x72
+0xc2 0xea 0xc3 0x32
+
+0xc2 0xea 0xe3 0x72
+0xc2 0xea 0xe3 0x32
+
+
+#------------------------------------------------------------------------------
+# PLD(immediate)
+#------------------------------------------------------------------------------
+# CHECK: pld [r5, #-4]
+# CHECK: pld [r6, #32]
+# CHECK: pld [r6, #33]
+# CHECK: pld [r6, #257]
+# CHECK: pld [r7, #257]
+
+0x15 0xf8 0x04 0xfc
+0x96 0xf8 0x20 0xf0
+0x96 0xf8 0x21 0xf0
+0x96 0xf8 0x01 0xf1
+0x97 0xf8 0x01 0xf1
+
+#------------------------------------------------------------------------------
+# PLD(register)
+#------------------------------------------------------------------------------
+# CHECK: pld [r8, r1]
+# CHECK: pld [r5, r2]
+# CHECK: pld [r0, r2, lsl #3]
+# CHECK: pld [r8, r2, lsl #2]
+# CHECK: pld [sp, r2, lsl #1]
+# CHECK: pld [sp, r2]
+
+0x18 0xf8 0x01 0xf0
+0x15 0xf8 0x02 0xf0
+0x10 0xf8 0x32 0xf0
+0x18 0xf8 0x22 0xf0
+0x1d 0xf8 0x12 0xf0
+0x1d 0xf8 0x02 0xf0
+
+#------------------------------------------------------------------------------
+# PLI(immediate)
+#------------------------------------------------------------------------------
+# CHECK: pli [r5, #-4]
+# CHECK: pli [r6, #32]
+# CHECK: pli [r6, #33]
+# CHECK: pli [r6, #257]
+# CHECK: pli [r7, #257]
+
+0x15 0xf9 0x04 0xfc
+0x96 0xf9 0x20 0xf0
+0x96 0xf9 0x21 0xf0
+0x96 0xf9 0x01 0xf1
+0x97 0xf9 0x01 0xf1
+
+#------------------------------------------------------------------------------
+# PLI(register)
+#------------------------------------------------------------------------------
+# CHECK: pli [r8, r1]
+# CHECK: pli [r5, r2]
+# CHECK: pli [r0, r2, lsl #3]
+# CHECK: pli [r8, r2, lsl #2]
+# CHECK: pli [sp, r2, lsl #1]
+# CHECK: pli [sp, r2]
+
+0x18 0xf9 0x01 0xf0
+0x15 0xf9 0x02 0xf0
+0x10 0xf9 0x32 0xf0
+0x18 0xf9 0x22 0xf0
+0x1d 0xf9 0x12 0xf0
+0x1d 0xf9 0x02 0xf0
+
+
+#------------------------------------------------------------------------------
+# QADD/QADD16/QADD8
+#------------------------------------------------------------------------------
+# CHECK: qadd r1, r2, r3
+# CHECK: qadd16 r1, r2, r3
+# CHECK: qadd8 r1, r2, r3
+# CHECK: itte gt
+# CHECK: qaddgt r1, r2, r3
+# CHECK: qadd16gt r1, r2, r3
+# CHECK: qadd8le r1, r2, r3
+
+0x83 0xfa 0x82 0xf1
+0x92 0xfa 0x13 0xf1
+0x82 0xfa 0x13 0xf1
+0xc6 0xbf
+0x83 0xfa 0x82 0xf1
+0x92 0xfa 0x13 0xf1
+0x82 0xfa 0x13 0xf1
+
+
+#------------------------------------------------------------------------------
+# QDADD/QDSUB
+#------------------------------------------------------------------------------
+# CHECK: qdadd r6, r7, r8
+# CHECK: qdsub r6, r7, r8
+# CHECK: itt hi
+# CHECK: qdaddhi r6, r7, r8
+# CHECK: qdsubhi r6, r7, r8
+
+0x88 0xfa 0x97 0xf6
+0x88 0xfa 0xb7 0xf6
+0x84 0xbf
+0x88 0xfa 0x97 0xf6
+0x88 0xfa 0xb7 0xf6
+
+
+#------------------------------------------------------------------------------
+# QSAX
+#------------------------------------------------------------------------------
+# CHECK: qsax r9, r12, r0
+# CHECK: it eq
+# CHECK: qsaxeq r9, r12, r0
+
+0xec 0xfa 0x10 0xf9
+0x08 0xbf
+0xec 0xfa 0x10 0xf9
+
+
+#------------------------------------------------------------------------------
+# QSUB/QSUB16/QSUB8
+#------------------------------------------------------------------------------
+# CHECK: qsub r1, r2, r3
+# CHECK: qsub16 r1, r2, r3
+# CHECK: qsub8 r1, r2, r3
+# CHECK: itet le
+# CHECK: qsuble r1, r2, r3
+# CHECK: qsub16gt r1, r2, r3
+# CHECK: qsub8le r1, r2, r3
+
+0x83 0xfa 0xa2 0xf1
+0xd2 0xfa 0x13 0xf1
+0xc2 0xfa 0x13 0xf1
+0xd6 0xbf
+0x83 0xfa 0xa2 0xf1
+0xd2 0xfa 0x13 0xf1
+0xc2 0xfa 0x13 0xf1
+
+
+#------------------------------------------------------------------------------
+# RBIT
+#------------------------------------------------------------------------------
+# CHECK: rbit r1, r2
+# CHECK: it ne
+# CHECK: rbitne r1, r2
+
+0x92 0xfa 0xa2 0xf1
+0x18 0xbf
+0x92 0xfa 0xa2 0xf1
+
+
+#------------------------------------------------------------------------------
+# REV
+#------------------------------------------------------------------------------
+# CHECK: rev.w r1, r2
+# CHECK: rev.w r2, r8
+# CHECK: itt ne
+# CHECK: revne r1, r2
+# CHECK: revne.w r1, r8
+
+0x92 0xfa 0x82 0xf1
+0x98 0xfa 0x88 0xf2
+0x1c 0xbf
+0x11 0xba
+0x98 0xfa 0x88 0xf1
+
+
+#------------------------------------------------------------------------------
+# REV16
+#------------------------------------------------------------------------------
+# CHECK: rev16.w r1, r2
+# CHECK: rev16.w r2, r8
+# CHECK: itt ne
+# CHECK: rev16ne r1, r2
+# CHECK: rev16ne.w r1, r8
+
+0x92 0xfa 0x92 0xf1
+0x98 0xfa 0x98 0xf2
+0x1c 0xbf
+0x51 0xba
+0x98 0xfa 0x98 0xf1
+
+
+#------------------------------------------------------------------------------
+# REVSH
+#------------------------------------------------------------------------------
+# CHECK: revsh.w r1, r2
+# CHECK: revsh.w r2, r8
+# CHECK: itt ne
+# CHECK: revshne r1, r2
+# CHECK: revshne.w r1, r8
+
+0x92 0xfa 0xb2 0xf1
+0x98 0xfa 0xb8 0xf2
+0x1c 0xbf
+0xd1 0xba
+0x98 0xfa 0xb8 0xf1
+
+
+#------------------------------------------------------------------------------
+# ROR (immediate)
+#------------------------------------------------------------------------------
+# CHECK: ror.w r2, r3, #12
+# CHECK: rors.w r8, r3, #31
+# CHECK: rors.w r2, r3, #1
+# CHECK: ror.w r2, r3, #4
+# CHECK: rors.w r2, r12, #15
+
+# CHECK: ror.w r3, r3, #19
+# CHECK: rors.w r8, r8, #2
+# CHECK: rors.w r7, r7, #5
+# CHECK: ror.w r12, r12, #21
+
+0x4f 0xea 0x33 0x32
+0x5f 0xea 0xf3 0x78
+0x5f 0xea 0x73 0x02
+0x4f 0xea 0x33 0x12
+0x5f 0xea 0xfc 0x32
+
+0x4f 0xea 0xf3 0x43
+0x5f 0xea 0xb8 0x08
+0x5f 0xea 0x77 0x17
+0x4f 0xea 0x7c 0x5c
+
+
+#------------------------------------------------------------------------------
+# ROR (register)
+#------------------------------------------------------------------------------
+# CHECK: ror.w r3, r4, r2
+# CHECK: ror.w r1, r1, r2
+# CHECK: rors.w r3, r4, r8
+
+0x64 0xfa 0x02 0xf3
+0x61 0xfa 0x02 0xf1
+0x74 0xfa 0x08 0xf3
+
+
+#------------------------------------------------------------------------------
+# RRX
+#------------------------------------------------------------------------------
+# CHECK: rrx r1, r2
+# CHECK: rrxs r1, r2
+# CHECK: ite lt
+# CHECK: rrxlt r9, r12
+# CHECK: rrxsge r8, r3
+
+0x4f 0xea 0x32 0x01
+0x5f 0xea 0x32 0x01
+0xb4 0xbf
+0x4f 0xea 0x3c 0x09
+0x5f 0xea 0x33 0x08
+
+#------------------------------------------------------------------------------
+# RSB (immediate)
+#------------------------------------------------------------------------------
+# CHECK: rsb.w r2, r5, #1044480
+# CHECK: rsbs.w r3, r12, #15
+# CHECK: rsb.w r1, r1, #255
+
+0xc5 0xf5 0x7f 0x22
+0xdc 0xf1 0x0f 0x03
+0xc1 0xf1 0xff 0x01
+
+
+#------------------------------------------------------------------------------
+# RSB (register)
+#------------------------------------------------------------------------------
+# CHECK: rsb r4, r4, r8
+# CHECK: rsb r4, r9, r8
+# CHECK: rsb r1, r4, r8, asr #3
+# CHECK: rsbs r2, r1, r7, lsl #1
+
+0xc4 0xeb 0x08 0x04
+0xc9 0xeb 0x08 0x04
+0xc4 0xeb 0xe8 0x01
+0xd1 0xeb 0x47 0x02
+
+
+#------------------------------------------------------------------------------
+# SADD16
+#------------------------------------------------------------------------------
+# CHECK: sadd16 r3, r4, r8
+# CHECK: it ne
+# CHECK: sadd16ne r3, r4, r8
+
+0x94 0xfa 0x08 0xf3
+0x18 0xbf
+0x94 0xfa 0x08 0xf3
+
+
+#------------------------------------------------------------------------------
+# SADD8
+#------------------------------------------------------------------------------
+# CHECK: sadd8 r3, r4, r8
+# CHECK: it ne
+# CHECK: sadd8ne r3, r4, r8
+
+0x84 0xfa 0x08 0xf3
+0x18 0xbf
+0x84 0xfa 0x08 0xf3
+
+
+#------------------------------------------------------------------------------
+# SASX
+#------------------------------------------------------------------------------
+# CHECK: sasx r9, r2, r7
+# CHECK: it ne
+# CHECK: sasxne r2, r5, r6
+
+0xa2 0xfa 0x07 0xf9
+0x18 0xbf
+0xa5 0xfa 0x06 0xf2
+
+
+#------------------------------------------------------------------------------
+# SBC (immediate)
+#------------------------------------------------------------------------------
+# CHECK: sbc r0, r1, #4
+# CHECK: sbcs r0, r1, #0
+# CHECK: sbc r1, r2, #255
+# CHECK: sbc r3, r7, #5570645
+# CHECK: sbc r8, r12, #2852170240
+# CHECK: sbc r9, r7, #2779096485
+# CHECK: sbc r5, r3, #2264924160
+# CHECK: sbc r4, r2, #2139095040
+# CHECK: sbc r4, r2, #1664
+
+0x61 0xf1 0x04 0x00
+0x71 0xf1 0x00 0x00
+0x62 0xf1 0xff 0x01
+0x67 0xf1 0x55 0x13
+0x6c 0xf1 0xaa 0x28
+0x67 0xf1 0xa5 0x39
+0x63 0xf1 0x07 0x45
+0x62 0xf1 0xff 0x44
+0x62 0xf5 0xd0 0x64
+
+
+#------------------------------------------------------------------------------
+# SBC (register)
+#------------------------------------------------------------------------------
+# CHECK: sbc.w r4, r5, r6
+# CHECK: sbcs.w r4, r5, r6
+# CHECK: sbc.w r9, r1, r3
+# CHECK: sbcs.w r9, r1, r3
+# CHECK: sbc.w r0, r1, r3, ror #4
+# CHECK: sbcs.w r0, r1, r3, lsl #7
+# CHECK: sbc.w r0, r1, r3, lsr #31
+# CHECK: sbcs.w r0, r1, r3, asr #32
+
+0x65 0xeb 0x06 0x04
+0x75 0xeb 0x06 0x04
+0x61 0xeb 0x03 0x09
+0x71 0xeb 0x03 0x09
+0x61 0xeb 0x33 0x10
+0x71 0xeb 0xc3 0x10
+0x61 0xeb 0xd3 0x70
+0x71 0xeb 0x23 0x00
+
+
+#------------------------------------------------------------------------------
+# SBFX
+#------------------------------------------------------------------------------
+# CHECK: sbfx r4, r5, #16, #1
+# CHECK: it gt
+# CHECK: sbfxgt r4, r5, #16, #16
+
+0x45 0xf3 0x00 0x44
+0xc8 0xbf
+0x45 0xf3 0x0f 0x44
+
+
+#------------------------------------------------------------------------------
+# SEL
+#------------------------------------------------------------------------------
+# CHECK: sel r5, r9, r2
+# CHECK: it le
+# CHECK: selle r5, r9, r2
+
+0xa9 0xfa 0x82 0xf5
+0xd8 0xbf
+0xa9 0xfa 0x82 0xf5
+
+
+#------------------------------------------------------------------------------
+# SEV
+#------------------------------------------------------------------------------
+# CHECK: sev.w
+# CHECK: it eq
+# CHECK: seveq.w
+
+0xaf 0xf3 0x04 0x80
+0x08 0xbf
+0xaf 0xf3 0x04 0x80
+
+
+#------------------------------------------------------------------------------
+# SADD16/SADD8
+#------------------------------------------------------------------------------
+# CHECK: sadd16 r1, r2, r3
+# CHECK: sadd8 r1, r2, r3
+# CHECK: ite gt
+# CHECK: sadd16gt r1, r2, r3
+# CHECK: sadd8le r1, r2, r3
+
+0x92 0xfa 0x03 0xf1
+0x82 0xfa 0x03 0xf1
+0xcc 0xbf
+0x92 0xfa 0x03 0xf1
+0x82 0xfa 0x03 0xf1
+
+
+#------------------------------------------------------------------------------
+# SHASX
+#------------------------------------------------------------------------------
+# CHECK: shasx r4, r8, r2
+# CHECK: it gt
+# CHECK: shasxgt r4, r8, r2
+
+0xa8 0xfa 0x22 0xf4
+0xc8 0xbf
+0xa8 0xfa 0x22 0xf4
+
+
+#------------------------------------------------------------------------------
+# SHASX
+#------------------------------------------------------------------------------
+# CHECK: shsax r4, r8, r2
+# CHECK: it gt
+# CHECK: shsaxgt r4, r8, r2
+
+0xe8 0xfa 0x22 0xf4
+0xc8 0xbf
+0xe8 0xfa 0x22 0xf4
+
+
+#------------------------------------------------------------------------------
+# SHSUB16/SHSUB8
+#------------------------------------------------------------------------------
+# CHECK: shsub16 r4, r8, r2
+# CHECK: shsub8 r4, r8, r2
+# CHECK: itt gt
+# CHECK: shsub16gt r4, r8, r2
+# CHECK: shsub8gt r4, r8, r2
+
+0xd8 0xfa 0x22 0xf4
+0xc8 0xfa 0x22 0xf4
+0xc4 0xbf
+0xd8 0xfa 0x22 0xf4
+0xc8 0xfa 0x22 0xf4
+
+
+#------------------------------------------------------------------------------
+# SMLABB/SMLABT/SMLATB/SMLATT
+#------------------------------------------------------------------------------
+# CHECK: smlabb r3, r1, r9, r0
+# CHECK: smlabt r5, r6, r4, r1
+# CHECK: smlatb r4, r2, r3, r2
+# CHECK: smlatt r8, r3, r8, r4
+# CHECK: itete gt
+# CHECK: smlabbgt r3, r1, r9, r0
+# CHECK: smlabtle r5, r6, r4, r1
+# CHECK: smlatbgt r4, r2, r3, r2
+# CHECK: smlattle r8, r3, r8, r4
+
+0x11 0xfb 0x09 0x03
+0x16 0xfb 0x14 0x15
+0x12 0xfb 0x23 0x24
+0x13 0xfb 0x38 0x48
+0xcb 0xbf
+0x11 0xfb 0x09 0x03
+0x16 0xfb 0x14 0x15
+0x12 0xfb 0x23 0x24
+0x13 0xfb 0x38 0x48
+
+
+#------------------------------------------------------------------------------
+# SMLAD/SMLADX
+#------------------------------------------------------------------------------
+# CHECK: smlad r2, r3, r5, r8
+# CHECK: smladx r2, r3, r5, r8
+# CHECK: itt hi
+# CHECK: smladhi r2, r3, r5, r8
+# CHECK: smladxhi r2, r3, r5, r8
+
+0x23 0xfb 0x05 0x82
+0x23 0xfb 0x15 0x82
+0x84 0xbf
+0x23 0xfb 0x05 0x82
+0x23 0xfb 0x15 0x82
+
+
+#------------------------------------------------------------------------------
+# SMLAL
+#------------------------------------------------------------------------------
+# CHECK: smlal r2, r3, r5, r8
+# CHECK: it eq
+# CHECK: smlaleq r2, r3, r5, r8
+
+0xc5 0xfb 0x08 0x23
+0x08 0xbf
+0xc5 0xfb 0x08 0x23
+
+
+#------------------------------------------------------------------------------
+# SMLALBB/SMLALBT/SMLALTB/SMLALTT
+#------------------------------------------------------------------------------
+# CHECK: smlalbb r3, r1, r9, r0
+# CHECK: smlalbt r5, r6, r4, r1
+# CHECK: smlaltb r4, r2, r3, r2
+# CHECK: smlaltt r8, r3, r8, r4
+# CHECK: iteet ge
+# CHECK: smlalbbge r3, r1, r9, r0
+# CHECK: smlalbtlt r5, r6, r4, r1
+# CHECK: smlaltblt r4, r2, r3, r2
+# CHECK: smlalttge r8, r3, r8, r4
+
+0xc9 0xfb 0x80 0x31
+0xc4 0xfb 0x91 0x56
+0xc3 0xfb 0xa2 0x42
+0xc8 0xfb 0xb4 0x83
+0xad 0xbf
+0xc9 0xfb 0x80 0x31
+0xc4 0xfb 0x91 0x56
+0xc3 0xfb 0xa2 0x42
+0xc8 0xfb 0xb4 0x83
 
-0x99 0xbf
-0x88 0x18
-0x00 0xbf
-0xf5 0x1b
-0x11 0x1d
 
 #------------------------------------------------------------------------------
 # STRD (immediate)