1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00

Use uint8_t instead of enums to store values in X86 disassembler table. Shaves 150k off the size of X86DisassemblerDecoder.o

llvm-svn: 151995
This commit is contained in:
Craig Topper 2012-03-04 02:16:41 +00:00
parent 6f40ab7172
commit 231243e781
3 changed files with 12 additions and 12 deletions

View File

@ -320,7 +320,7 @@ static void translateImmediate(MCInst &mcInst, uint64_t immediate,
const MCDisassembler *Dis) {
// Sign-extend the immediate if necessary.
OperandType type = operand.type;
OperandType type = (OperandType)operand.type;
if (type == TYPE_RELv) {
switch (insn.displacementSize) {

View File

@ -343,8 +343,8 @@ typedef enum {
* operand.
*/
struct OperandSpecifier {
OperandEncoding encoding;
OperandType type;
uint8_t encoding;
uint8_t type;
};
/*
@ -371,7 +371,7 @@ typedef enum {
* its operands.
*/
struct InstructionSpecifier {
ModifierType modifierType;
uint8_t modifierType;
uint8_t modifierBase;
struct OperandSpecifier operands[X86_MAX_OPERANDS];

View File

@ -457,11 +457,11 @@ void DisassemblerTables::emitInstructionInfo(raw_ostream &o, uint32_t &i)
for (index = 0; index < numInstructions; ++index) {
o.indent(i * 2) << "{ /* " << index << " */" << "\n";
i++;
o.indent(i * 2) <<
stringForModifierType(InstructionSpecifiers[index].modifierType);
o.indent(i * 2) << stringForModifierType(
(ModifierType)InstructionSpecifiers[index].modifierType);
o << "," << "\n";
o.indent(i * 2) << "0x";
o << format("%02hhx", (uint16_t)InstructionSpecifiers[index].modifierBase);
o << "," << "\n";
@ -471,11 +471,11 @@ void DisassemblerTables::emitInstructionInfo(raw_ostream &o, uint32_t &i)
for (operandIndex = 0; operandIndex < X86_MAX_OPERANDS; ++operandIndex) {
o.indent(i * 2) << "{ ";
o << stringForOperandEncoding(InstructionSpecifiers[index]
.operands[operandIndex]
.encoding);
o <<stringForOperandEncoding((OperandEncoding)InstructionSpecifiers[index]
.operands[operandIndex]
.encoding);
o << ", ";
o << stringForOperandType(InstructionSpecifiers[index]
o << stringForOperandType((OperandType)InstructionSpecifiers[index]
.operands[operandIndex]
.type);
o << " }";