diff options
author | Craig Topper <craig.topper@gmail.com> | 2012-09-13 05:45:42 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2012-09-13 05:45:42 +0000 |
commit | 963305b4508265ff96a7c2e15ccdfdd2884c39cd (patch) | |
tree | ac2379fba80b0962ee3c14d6720cc0cb1a9976fe /llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoderCommon.h | |
parent | f453907a6d4cec0f70d1c12d20f89d765f5d2eb5 (diff) | |
download | bcm5719-llvm-963305b4508265ff96a7c2e15ccdfdd2884c39cd.tar.gz bcm5719-llvm-963305b4508265ff96a7c2e15ccdfdd2884c39cd.zip |
Add a new compression type to ModRM table that detects when the memory modRM byte represent 8 instructions and the reg modRM byte represents up to 64 instructions. Reduces modRM table from 43k entreis to 25k entries. Based on a patch from Manman Ren.
llvm-svn: 163774
Diffstat (limited to 'llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoderCommon.h')
-rw-r--r-- | llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoderCommon.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoderCommon.h b/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoderCommon.h index b0a0e1e78ef..23dfe4b5b5f 100644 --- a/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoderCommon.h +++ b/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoderCommon.h @@ -160,6 +160,10 @@ typedef uint16_t InstrUID; * MODRM_SPLITRM - If the ModR/M byte is between 0x00 and 0xbf, the opcode * corresponds to one instruction; otherwise, it corresponds to * a different instruction. + * MODRM_SPLITMISC- If the ModR/M byte is between 0x00 and 0xbf, ModR/M byte + * divided by 8 is used to select instruction; otherwise, each + * value of the ModR/M byte could correspond to a different + * instruction. * MODRM_SPLITREG - ModR/M byte divided by 8 is used to select instruction. This corresponds to instructions that use reg field as opcode * MODRM_FULL - Potentially, each value of the ModR/M byte could correspond @@ -169,6 +173,7 @@ typedef uint16_t InstrUID; #define MODRMTYPES \ ENUM_ENTRY(MODRM_ONEENTRY) \ ENUM_ENTRY(MODRM_SPLITRM) \ + ENUM_ENTRY(MODRM_SPLITMISC) \ ENUM_ENTRY(MODRM_SPLITREG) \ ENUM_ENTRY(MODRM_FULL) |