reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp
  648   dbgprintf(insn, "readOpcode()");
  650   insn->opcodeType = ONEBYTE;
  652   if (insn->vectorExtensionType == TYPE_EVEX) {
  653     switch (mmFromEVEX2of4(insn->vectorExtensionPrefix[1])) {
  655       dbgprintf(insn, "Unhandled mm field for instruction (0x%hhx)",
  656                 mmFromEVEX2of4(insn->vectorExtensionPrefix[1]));
  659       insn->opcodeType = TWOBYTE;
  660       return consumeByte(insn, &insn->opcode);
  660       return consumeByte(insn, &insn->opcode);
  662       insn->opcodeType = THREEBYTE_38;
  663       return consumeByte(insn, &insn->opcode);
  663       return consumeByte(insn, &insn->opcode);
  665       insn->opcodeType = THREEBYTE_3A;
  666       return consumeByte(insn, &insn->opcode);
  666       return consumeByte(insn, &insn->opcode);
  668   } else if (insn->vectorExtensionType == TYPE_VEX_3B) {
  669     switch (mmmmmFromVEX2of3(insn->vectorExtensionPrefix[1])) {
  671       dbgprintf(insn, "Unhandled m-mmmm field for instruction (0x%hhx)",
  672                 mmmmmFromVEX2of3(insn->vectorExtensionPrefix[1]));
  675       insn->opcodeType = TWOBYTE;
  676       return consumeByte(insn, &insn->opcode);
  676       return consumeByte(insn, &insn->opcode);
  678       insn->opcodeType = THREEBYTE_38;
  679       return consumeByte(insn, &insn->opcode);
  679       return consumeByte(insn, &insn->opcode);
  681       insn->opcodeType = THREEBYTE_3A;
  682       return consumeByte(insn, &insn->opcode);
  682       return consumeByte(insn, &insn->opcode);
  684   } else if (insn->vectorExtensionType == TYPE_VEX_2B) {
  685     insn->opcodeType = TWOBYTE;
  686     return consumeByte(insn, &insn->opcode);
  686     return consumeByte(insn, &insn->opcode);
  687   } else if (insn->vectorExtensionType == TYPE_XOP) {
  688     switch (mmmmmFromXOP2of3(insn->vectorExtensionPrefix[1])) {
  690       dbgprintf(insn, "Unhandled m-mmmm field for instruction (0x%hhx)",
  691                 mmmmmFromVEX2of3(insn->vectorExtensionPrefix[1]));
  694       insn->opcodeType = XOP8_MAP;
  695       return consumeByte(insn, &insn->opcode);
  695       return consumeByte(insn, &insn->opcode);
  697       insn->opcodeType = XOP9_MAP;
  698       return consumeByte(insn, &insn->opcode);
  698       return consumeByte(insn, &insn->opcode);
  700       insn->opcodeType = XOPA_MAP;
  701       return consumeByte(insn, &insn->opcode);
  701       return consumeByte(insn, &insn->opcode);
  705   if (consumeByte(insn, &current))
  709     dbgprintf(insn, "Found a two-byte escape prefix (0x%hhx)", current);
  711     if (consumeByte(insn, &current))
  715       dbgprintf(insn, "Found a three-byte escape prefix (0x%hhx)", current);
  717       if (consumeByte(insn, &current))
  720       insn->opcodeType = THREEBYTE_38;
  722       dbgprintf(insn, "Found a three-byte escape prefix (0x%hhx)", current);
  724       if (consumeByte(insn, &current))
  727       insn->opcodeType = THREEBYTE_3A;
  729       dbgprintf(insn, "Found a 3dnow escape prefix (0x%hhx)", current);
  732       if (readModRM(insn))
  735       if (consumeByte(insn, &current))
  738       insn->opcodeType = THREEDNOW_MAP;
  740       dbgprintf(insn, "Didn't find a three-byte escape prefix");
  742       insn->opcodeType = TWOBYTE;
  744   } else if (insn->mandatoryPrefix)
  747     insn->mandatoryPrefix = 0;
  754   insn->opcode = current;