38#ifndef __ARCH_X86_TYPES_HH__
39#define __ARCH_X86_TYPES_HH__
161static inline const char *
171 case ThreeByte0F38Opcode:
172 return "three byte 0f38";
173 case ThreeByte0F3AOpcode:
174 return "three byte 0f3a";
176 return "unrecognized!";
214 void reset() { memset(
static_cast<void *
>(
this), 0,
sizeof(*
this)); }
248inline static std::ostream &
251 ccprintf(
os,
"\n{\n\tleg = %#x,\n\trex = %#x,\n\t"
253 "op = {\n\t\ttype = %s,\n\t\top = %#x,\n\t\t},\n\t"
254 "modRM = %#x,\n\tsib = %#x,\n\t"
255 "immediate = %#x,\n\tdisplacement = %#x\n\t"
260 (uint8_t)emi.
modRM, (uint8_t)emi.
sib,
305 const X86ISA::ExtMachInst &machInst);
307void paramIn(CheckpointIn &cp,
const std::string &
name,
308 X86ISA::ExtMachInst &machInst);
316struct hash<
gem5::X86ISA::ExtMachInst>
321 return (((uint64_t)emi.
legacy << 48) |
322 ((uint64_t)emi.
rex << 40) |
323 ((uint64_t)emi.
vex << 32) |
324 ((uint64_t)emi.
modRM << 24) |
325 ((uint64_t)emi.
sib << 16) |
#define EndBitUnion(name)
This closes off the class and union started by the above macro.
static std::ostream & operator<<(std::ostream &os, const ExtMachInst &emi)
static bool operator==(const ExtMachInst &emi1, const ExtMachInst &emi2)
static const char * opcodeTypeToStr(OpcodeType type)
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
std::ostream CheckpointOut
void paramOut(CheckpointOut &cp, const std::string &name, ExtMachInst const &machInst)
void paramIn(CheckpointIn &cp, const std::string &name, ExtMachInst &machInst)
void ccprintf(cp::Print &print)
Overload hash function for BasicBlockRange type.
struct gem5::X86ISA::ExtMachInst::@42 opcode
LegacyPrefixVector legacy
size_t operator()(const gem5::X86ISA::ExtMachInst &emi) const
const std::string & name()