Go to the documentation of this file.
28 #ifndef __ARCH_X86_INSTS_MICROOP_ARGS_HH__
29 #define __ARCH_X86_INSTS_MICROOP_ARGS_HH__
106 template <
class Base>
111 template <
class InstType>
122 template <
class Base>
127 template <
class InstType>
140 template <
class Base>
145 template <
class InstType>
155 template <
class Base>
160 template <
class InstType>
171 template <
class Base>
176 template <
class InstType>
186 template <
class Base>
191 template <
class InstType>
202 template <
class Base>
207 template <
class InstType>
249 template <
class InstType>
265 template <
class InstType>
281 template <
class InstType>
297 template <
class InstType>
325 template <
class InstType>
330 size(inst->addressSize)
343 template <
typename Base,
typename ...Operands>
347 using ArgTuple = std::tuple<
typename Operands::ArgType...>;
349 template <std::size_t ...I,
typename ...CTorArgs>
351 const char *mnem,
const char *inst_mnem, uint64_t set_flags,
352 OpClass op_class, GEM5_VAR_USED
ArgTuple args,
353 CTorArgs... ctor_args) :
354 Base(mach_inst, mnem, inst_mnem, set_flags, op_class, ctor_args...),
355 Operands(this,
std::get<I>(args))...
359 template <
typename ...CTorArgs>
361 const char *inst_mnem, uint64_t set_flags, OpClass op_class,
362 ArgTuple args, CTorArgs... ctor_args) :
364 mach_inst, mnem, inst_mnem, set_flags, op_class,
365 std::move(args), ctor_args...)
372 std::stringstream response;
373 Base::printMnemonic(response, this->instMnem, this->mnemonic);
375 GEM5_FOR_EACH_IN_PACK(
ccprintf(response,
count++ ?
", " :
""),
376 Operands::print(response));
377 return response.str();
384 #endif //__ARCH_X86_INSTS_MICROOP_ARGS_HH__
UpcOp(InstType *inst, ArgType _target)
void print(std::ostream &os) const
FloatOp(InstType *inst, ArgType idx)
void print(std::ostream &os) const
FaultOp(InstType *inst, ArgType _fault)
Src1Op(RegIndex _src1, size_t _size)
FoldedOp(InstType *inst, ArgType idx)
Imm8Op(InstType *inst, ArgType _imm8)
Classes for register indices passed to instruction constructors.
void print(std::ostream &os) const
void print(std::ostream &os) const
DestOp(RegIndex _dest, size_t _size)
void print(std::ostream &os) const
Src2Op(RegIndex _src2, size_t _size)
Imm64Op(InstType *inst, ArgType _imm64)
@ FloatRegClass
Floating-point register.
DataLowOp(RegIndex data_low, size_t _size)
@ MiscRegClass
Control (misc) register.
InstOperands(ExtMachInst mach_inst, const char *mnem, const char *inst_mnem, uint64_t set_flags, OpClass op_class, ArgTuple args, CTorArgs... ctor_args)
static void printMem(std::ostream &os, uint8_t segment, uint8_t scale, RegIndex index, RegIndex base, uint64_t disp, uint8_t addressSize, bool rip)
static IntRegIndex INTREG_FOLDED(int index, int foldBit)
void print(std::ostream &os) const
CrOp(InstType *inst, ArgType idx)
void ccprintf(cp::Print &print)
void print(std::ostream &os) const
std::shared_ptr< FaultBase > Fault
void print(std::ostream &os) const
SegOp(InstType *inst, ArgType idx)
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
AddrOp(InstType *inst, const ArgType &args)
DataOp(RegIndex _data, size_t _size)
static void printReg(std::ostream &os, RegId reg, int size)
void print(std::ostream &os) const
DataHiOp(RegIndex data_hi, size_t _size)
void print(std::ostream &os) const
DbgOp(InstType *inst, ArgType idx)
Overload hash function for BasicBlockRange type.
static void printSegment(std::ostream &os, int segment)
void print(std::ostream &os) const
InstOperands(std::index_sequence< I... >, ExtMachInst mach_inst, const char *mnem, const char *inst_mnem, uint64_t set_flags, OpClass op_class, GEM5_VAR_USED ArgTuple args, CTorArgs... ctor_args)
IntOp(InstType *inst, ArgType idx)
MiscOp(InstType *inst, ArgType idx)
void print(std::ostream &os) const
@ IntRegClass
Integer register.
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
std::tuple< typename Operands::ArgType... > ArgTuple
Register ID: describe an architectural register with its class and index.
Generated on Tue Sep 21 2021 12:24:51 for gem5 by doxygen 1.8.17