From 1070278efa2f196f49b9ff6794f76e151e9d06c9 Mon Sep 17 00:00:00 2001 From: Owen Anderson Date: Fri, 16 Sep 2011 17:22:48 +0000 Subject: [PATCH] Port over more Thumb2 assembly tests to disassembly tests. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139912 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/MC/Disassembler/ARM/thumb2.txt | 770 +++++++++++++++++++++++++++- 1 file changed, 748 insertions(+), 22 deletions(-) diff --git a/test/MC/Disassembler/ARM/thumb2.txt b/test/MC/Disassembler/ARM/thumb2.txt index d5a224b2b4e..07db5c17106 100644 --- a/test/MC/Disassembler/ARM/thumb2.txt +++ b/test/MC/Disassembler/ARM/thumb2.txt @@ -408,6 +408,36 @@ 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 #------------------------------------------------------------------------------ @@ -915,35 +945,731 @@ 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)