aboutsummaryrefslogtreecommitdiffstats
path: root/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
commit5a2c607153993fb7f7e04f9482520b64dffe5757 (patch)
treef14464b140bcf52862a0fb65db6dde5b76d17fc7 /lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
parentadfe2637b839efe041165f27c9ad57e3befb2be0 (diff)
downloadexternal_llvm-5a2c607153993fb7f7e04f9482520b64dffe5757.tar.gz
external_llvm-5a2c607153993fb7f7e04f9482520b64dffe5757.tar.bz2
external_llvm-5a2c607153993fb7f7e04f9482520b64dffe5757.zip
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161101 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/Disassembler/X86DisassemblerDecoder.h')
-rw-r--r--lib/Target/X86/Disassembler/X86DisassemblerDecoder.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h b/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
index a36eef3564..797703f803 100644
--- a/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
+++ b/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