diff options
author | Craig Topper <craig.topper@gmail.com> | 2014-12-31 07:07:11 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2014-12-31 07:07:11 +0000 |
commit | 6e518776e3f0506ecb2dbb63c34ec561eb81f075 (patch) | |
tree | 1ec298d95503e54b6f2432422482d7888ade64b3 /llvm/lib | |
parent | f89dc3edc9387f17616789c28f9e897615b6e427 (diff) | |
download | bcm5719-llvm-6e518776e3f0506ecb2dbb63c34ec561eb81f075.tar.gz bcm5719-llvm-6e518776e3f0506ecb2dbb63c34ec561eb81f075.zip |
[x86] Simplify detection of jcxz/jecxz/jrcxz in disassembler.
llvm-svn: 225035
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp b/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp index 606001d988a..a5fcf1513f7 100644 --- a/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp +++ b/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp @@ -975,27 +975,16 @@ static int getID(struct InternalInstruction* insn, const void *miiArg) { if (insn->rexPrefix & 0x08) attrMask |= ATTR_REXW; - if (getIDWithAttrMask(&instructionID, insn, attrMask)) - return -1; - /* * JCXZ/JECXZ need special handling for 16-bit mode because the meaning * of the AdSize prefix is inverted w.r.t. 32-bit mode. */ - if (insn->mode == MODE_16BIT && insn->opcode == 0xE3) { - const struct InstructionSpecifier *spec; - spec = specifierForUID(instructionID); + if (insn->mode == MODE_16BIT && insn->opcodeType == ONEBYTE && + insn->opcode == 0xE3) + attrMask ^= ATTR_ADSIZE; - /* - * Check for Ii8PCRel instructions. We could alternatively do a - * string-compare on the names, but this is probably cheaper. - */ - if (x86OperandSets[spec->operands][0].type == TYPE_REL8) { - attrMask ^= ATTR_ADSIZE; - if (getIDWithAttrMask(&instructionID, insn, attrMask)) - return -1; - } - } + if (getIDWithAttrMask(&instructionID, insn, attrMask)) + return -1; /* The following clauses compensate for limitations of the tables. */ |