From 56a1afb6b06b63efb85efcfd12f07aa80ca6ab3b Mon Sep 17 00:00:00 2001 From: Johnny Chen Date: Tue, 20 Apr 2010 18:45:24 +0000 Subject: [PATCH] When doing Thumb disassembly, there's no need to consider t2ADDrSPi12/t2SUBrSPi12, as their generic counterparts t2ADDri12/t2SUBri12 should suffice. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101929 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/MC/Disassembler/thumb-tests.txt | 3 +++ utils/TableGen/ARMDecoderEmitter.cpp | 9 ++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/test/MC/Disassembler/thumb-tests.txt b/test/MC/Disassembler/thumb-tests.txt index da166d350e8..bfce44e8b19 100644 --- a/test/MC/Disassembler/thumb-tests.txt +++ b/test/MC/Disassembler/thumb-tests.txt @@ -60,6 +60,9 @@ # CHECK: subw r0, pc, #1 0xaf 0xf2 0x01 0x00 +# CHECK: subw r0, sp, #835 +0xad 0xf2 0x43 0x30 + # CHECK: uqadd16 r3, r4, r5 0x94 0xfa 0x55 0xf3 diff --git a/utils/TableGen/ARMDecoderEmitter.cpp b/utils/TableGen/ARMDecoderEmitter.cpp index 0bb55ce9f3f..c879a54b355 100644 --- a/utils/TableGen/ARMDecoderEmitter.cpp +++ b/utils/TableGen/ARMDecoderEmitter.cpp @@ -1699,8 +1699,12 @@ bool ARMDecoderEmitter::ARMDEBackend::populateInstruction( // Ignore tADDrSP, tADDspr, and tPICADD, prefer the generic tADDhirr. // Ignore t2SUBrSPs, prefer the t2SUB[S]r[r|s]. // Ignore t2ADDrSPs, prefer the t2ADD[S]r[r|s]. + // Ignore t2ADDrSPi/t2SUBrSPi, which have more generic couterparts. + // Ignore t2ADDrSPi12/t2SUBrSPi12, which have more generic couterparts if (Name == "tADDrSP" || Name == "tADDspr" || Name == "tPICADD" || - Name == "t2SUBrSPs" || Name == "t2ADDrSPs") + Name == "t2SUBrSPs" || Name == "t2ADDrSPs" || + Name == "t2ADDrSPi" || Name == "t2SUBrSPi" || + Name == "t2ADDrSPi12" || Name == "t2SUBrSPi12") return false; // Ignore t2LDRDpci, prefer the generic t2LDRDi8, t2LDRD_PRE, t2LDRD_POST. @@ -1723,7 +1727,6 @@ bool ARMDecoderEmitter::ARMDEBackend::populateInstruction( // tLDRcp conflicts with tLDRspi // tRestore conflicts with tLDRspi // t2LEApcrelJT conflicts with t2LEApcrel - // t2ADDrSPi/t2SUBrSPi have more generic couterparts if (Name == "tBfar" || /* Name == "tCMNz" || */ Name == "tCMPzi8" || Name == "tCMPzr" || Name == "tCMPzhir" || /* Name == "t2CMNzrr" || Name == "t2CMNzrs" || @@ -1731,7 +1734,7 @@ bool ARMDecoderEmitter::ARMDEBackend::populateInstruction( Name == "t2CMPzri" || Name == "tPOP_RET" || Name == "t2LDM_RET" || Name == "tMOVCCi" || Name == "tMOVCCr" || Name == "tBR_JTr" || Name == "tSpill" || Name == "tLDRcp" || Name == "tRestore" || - Name == "t2LEApcrelJT" || Name == "t2ADDrSPi" || Name == "t2SUBrSPi") + Name == "t2LEApcrelJT") return false; }