aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2012-08-01 07:39:18 +0000
committerCraig Topper <craig.topper@gmail.com>2012-08-01 07:39:18 +0000
commitb8aec0881901d33a7bc7d4d93255127e655cf253 (patch)
tree13ae30cd45010d3fbc53ee645014ff74681b74cb /llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
parent13a39c6f549f36391e583c53a654bfaa089e1933 (diff)
downloadllvm-b8aec0881901d33a7bc7d4d93255127e655cf253.zip
llvm-b8aec0881901d33a7bc7d4d93255127e655cf253.tar.gz
llvm-b8aec0881901d33a7bc7d4d93255127e655cf253.tar.bz2
Add more indirection to the disassembler tables to reduce amount of space used to store the operand types and encodings. Store only the unique combinations in a separate table and store indices in the instruction table. Saves about 32K of static data.
llvm-svn: 161101
Diffstat (limited to 'llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h')
-rw-r--r--llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h b/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
index a36eef3..797703f 100644
--- a/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
+++ b/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
@@ -20,7 +20,8 @@
extern "C" {
#endif
-#define INSTRUCTION_SPECIFIER_FIELDS
+#define INSTRUCTION_SPECIFIER_FIELDS \
+ uint16_t operands;
#define INSTRUCTION_IDS \
unsigned instructionIDs;
@@ -538,6 +539,8 @@ struct InternalInstruction {
SIBIndex sibIndex;
uint8_t sibScale;
SIBBase sibBase;
+
+ const struct OperandSpecifier *operands;
};
/* decodeInstruction - Decode one instruction and store the decoding results in