gem5
|
#include <decl.hh>
Public Member Functions | |
void | calcAddr (Wavefront *w, GPUDynInstPtr m) |
void | generateDisassembly () |
bool | isPseudoOp () |
void | execPseudoInst (Wavefront *w, GPUDynInstPtr gpuDynInst) |
void | MagicPrintLane (Wavefront *w) |
void | MagicPrintLane64 (Wavefront *w) |
void | MagicPrintWF32 (Wavefront *w) |
void | MagicPrintWF64 (Wavefront *w) |
void | MagicPrintWFFloat (Wavefront *w) |
void | MagicSimBreak (Wavefront *w) |
void | MagicPrefixSum (Wavefront *w) |
void | MagicReduction (Wavefront *w) |
void | MagicMaskLower (Wavefront *w) |
void | MagicMaskUpper (Wavefront *w) |
void | MagicJoinWFBar (Wavefront *w) |
void | MagicWaitWFBar (Wavefront *w) |
void | MagicPanic (Wavefront *w) |
void | MagicAtomicNRAddGlobalU32Reg (Wavefront *w, GPUDynInstPtr gpuDynInst) |
void | MagicAtomicNRAddGroupU32Reg (Wavefront *w, GPUDynInstPtr gpuDynInst) |
void | MagicLoadGlobalU32Reg (Wavefront *w, GPUDynInstPtr gpuDynInst) |
void | MagicXactCasLd (Wavefront *w) |
void | MagicMostSigThread (Wavefront *w) |
void | MagicMostSigBroadcast (Wavefront *w) |
void | MagicPrintWF32ID (Wavefront *w) |
void | MagicPrintWFID64 (Wavefront *w) |
Call (const Brig::BrigInstBase *ib, const BrigObject *obj) | |
bool | isVectorRegister (int operandIndex) |
bool | isCondRegister (int operandIndex) |
bool | isScalarRegister (int operandIndex) |
bool | isSrcOperand (int operandIndex) |
bool | isDstOperand (int operandIndex) |
int | getOperandSize (int operandIndex) |
int | getRegisterIndex (int operandIndex, GPUDynInstPtr gpuDynInst) |
void | execute (GPUDynInstPtr gpuDynInst) |
int | numSrcRegOperands () |
int | numDstRegOperands () |
int | getNumOperands () |
Public Member Functions inherited from HsailISA::HsailGPUStaticInst | |
HsailGPUStaticInst (const BrigObject *obj, const std::string &opcode) | |
void | generateDisassembly () override |
int | instSize () const override |
bool | isValid () const override |
Public Member Functions inherited from GPUStaticInst | |
GPUStaticInst (const std::string &opcode) | |
void | instAddr (int inst_addr) |
int | instAddr () const |
int | nextInstAddr () const |
void | instNum (int num) |
int | instNum () |
void | ipdInstNum (int num) |
int | ipdInstNum () const |
const std::string & | disassemble () |
bool | isALU () const |
bool | isBranch () const |
bool | isNop () const |
bool | isReturn () const |
bool | isUnconditionalJump () const |
bool | isSpecialOp () const |
bool | isWaitcnt () const |
bool | isBarrier () const |
bool | isMemFence () const |
bool | isMemRef () const |
bool | isFlat () const |
bool | isLoad () const |
bool | isStore () const |
bool | isAtomic () const |
bool | isAtomicNoRet () const |
bool | isAtomicRet () const |
bool | isScalar () const |
bool | readsSCC () const |
bool | writesSCC () const |
bool | readsVCC () const |
bool | writesVCC () const |
bool | isAtomicAnd () const |
bool | isAtomicOr () const |
bool | isAtomicXor () const |
bool | isAtomicCAS () const |
bool | isAtomicExch () const |
bool | isAtomicAdd () const |
bool | isAtomicSub () const |
bool | isAtomicInc () const |
bool | isAtomicDec () const |
bool | isAtomicMax () const |
bool | isAtomicMin () const |
bool | isArgLoad () const |
bool | isGlobalMem () const |
bool | isLocalMem () const |
bool | isArgSeg () const |
bool | isGlobalSeg () const |
bool | isGroupSeg () const |
bool | isKernArgSeg () const |
bool | isPrivateSeg () const |
bool | isReadOnlySeg () const |
bool | isSpillSeg () const |
bool | isWorkitemScope () const |
bool | isWavefrontScope () const |
bool | isWorkgroupScope () const |
bool | isDeviceScope () const |
bool | isSystemScope () const |
bool | isNoScope () const |
bool | isRelaxedOrder () const |
bool | isAcquire () const |
bool | isRelease () const |
bool | isAcquireRelease () const |
bool | isNoOrder () const |
bool | isGloballyCoherent () const |
Coherence domain of a memory instruction. More... | |
bool | isSystemCoherent () const |
virtual void | initiateAcc (GPUDynInstPtr gpuDynInst) |
virtual void | completeAcc (GPUDynInstPtr gpuDynInst) |
virtual uint32_t | getTargetPc () |
void | setFlag (Flags flag) |
virtual void | execLdAcq (GPUDynInstPtr gpuDynInst) |
virtual void | execSt (GPUDynInstPtr gpuDynInst) |
virtual void | execAtomic (GPUDynInstPtr gpuDynInst) |
virtual void | execAtomicAcq (GPUDynInstPtr gpuDynInst) |
Public Attributes | |
ListOperand | dest |
FunctionRefOperand | src0 |
ListOperand | src1 |
HsailCode * | func_ptr |
Public Attributes inherited from GPUStaticInst | |
Enums::StorageClassType | executed_as |
Additional Inherited Members | |
Static Public Attributes inherited from GPUStaticInst | |
static uint64_t | dynamic_id_count |
Protected Attributes inherited from HsailISA::HsailGPUStaticInst | |
HsailCode * | hsailCode |
Protected Attributes inherited from GPUStaticInst | |
const std::string | opcode |
std::string | disassembly |
int | _instNum |
int | _instAddr |
int | _ipdInstNum |
Identifier of the immediate post-dominator instruction. More... | |
std::bitset< Num_Flags > | _flags |
|
inline |
Definition at line 1219 of file decl.hh.
References dest, FunctionRefOperand::disassemble(), fatal, func_ptr, BrigObject::getOperandPtr(), ListOperand::init(), FunctionRefOperand::init(), isPseudoOp(), Brig::BrigInstBase::operands, GPUStaticInst::setFlag(), src0, and src1.
void HsailISA::Call::calcAddr | ( | Wavefront * | w, |
GPUDynInstPtr | m | ||
) |
Definition at line 606 of file pseudo_inst.cc.
References addr, Wavefront::computeUnit, ListOperand::get(), src1, MipsISA::w, and ComputeUnit::wfSize().
Referenced by MagicAtomicNRAddGlobalU32Reg(), MagicAtomicNRAddGroupU32Reg(), and MagicLoadGlobalU32Reg().
void HsailISA::Call::execPseudoInst | ( | Wavefront * | w, |
GPUDynInstPtr | gpuDynInst | ||
) |
Definition at line 80 of file pseudo_inst.cc.
References Wavefront::computeUnit, fatal, ListOperand::get(), Wavefront::getPred(), HsailISA::MAGIC_ATOMIC_NR_ADD_GLOBAL_U32_REG, HsailISA::MAGIC_ATOMIC_NR_ADD_GROUP_U32_REG, HsailISA::MAGIC_JOIN_WF_BAR, HsailISA::MAGIC_LOAD_GLOBAL_U32_REG, HsailISA::MAGIC_MASKLANE_LOWER, HsailISA::MAGIC_MASKLANE_UPPER, HsailISA::MAGIC_MOST_SIG_BROADCAST, HsailISA::MAGIC_MOST_SIG_THD, HsailISA::MAGIC_PANIC, HsailISA::MAGIC_PREF_SUM, HsailISA::MAGIC_PRINT_LANE, HsailISA::MAGIC_PRINT_LANE_64, HsailISA::MAGIC_PRINT_WF_32, HsailISA::MAGIC_PRINT_WF_64, HsailISA::MAGIC_PRINT_WF_FLOAT, HsailISA::MAGIC_PRINT_WFID_32, HsailISA::MAGIC_PRINT_WFID_64, HsailISA::MAGIC_REDUCTION, HsailISA::MAGIC_SIM_BREAK, HsailISA::MAGIC_WAIT_WF_BAR, HsailISA::MAGIC_XACT_CAS_LD, MagicAtomicNRAddGlobalU32Reg(), MagicAtomicNRAddGroupU32Reg(), MagicJoinWFBar(), MagicLoadGlobalU32Reg(), MagicMaskLower(), MagicMaskUpper(), MagicMostSigBroadcast(), MagicMostSigThread(), MagicPanic(), MagicPrefixSum(), MagicPrintLane(), MagicPrintLane64(), MagicPrintWF32(), MagicPrintWF32ID(), MagicPrintWF64(), MagicPrintWFFloat(), MagicPrintWFID64(), MagicReduction(), MagicSimBreak(), MagicWaitWFBar(), MagicXactCasLd(), ArmISA::mask, X86ISA::op, src1, MipsISA::w, and ComputeUnit::wfSize().
Referenced by execute().
|
inlinevirtual |
Implements GPUStaticInst.
Definition at line 1256 of file decl.hh.
References FunctionRefOperand::disassemble(), execPseudoInst(), fatal, isPseudoOp(), and src0.
|
inlinevirtual |
Implements GPUStaticInst.
Definition at line 1158 of file decl.hh.
References csprintf(), dest, ListOperand::disassemble(), FunctionRefOperand::disassemble(), GPUStaticInst::disassembly, GPUStaticInst::opcode, src0, and src1.
|
inlinevirtual |
Implements GPUStaticInst.
|
inlinevirtual |
Implements GPUStaticInst.
|
inlinevirtual |
Implements GPUStaticInst.
|
inlinevirtual |
Implements GPUStaticInst.
|
inlinevirtual |
Implements GPUStaticInst.
|
inline |
|
inlinevirtual |
Implements GPUStaticInst.
|
inlinevirtual |
Implements GPUStaticInst.
|
inlinevirtual |
Implements GPUStaticInst.
void HsailISA::Call::MagicAtomicNRAddGlobalU32Reg | ( | Wavefront * | w, |
GPUDynInstPtr | gpuDynInst | ||
) |
Definition at line 620 of file pseudo_inst.cc.
References calcAddr(), Wavefront::computeUnit, Wavefront::execMask(), ListOperand::get(), GLBMEM_PIPE, ComputeUnit::globalMemoryPipe, GlobalMemPipeline::issueRequest(), ArmISA::m, Wavefront::memReqsInPipe, HsailISA::HsailDataType< _OperandType, _CType, _memType, _vgprType, IsBits >::memType, Wavefront::outstandingReqs, Wavefront::outstandingReqsRdGm, Wavefront::outstandingReqsWrGm, Wavefront::rdGmReqsInPipe, GPUStaticInst::setFlag(), ComputeUnit::shader, Wavefront::simdId, src1, Shader::tick_cnt, Shader::ticks(), HsailISA::HsailDataType< _OperandType, _CType, _memType, _vgprType, IsBits >::vgprType, MipsISA::w, Wavefront::wfDynId, ComputeUnit::wfSize(), Wavefront::wfSlotId, and Wavefront::wrGmReqsInPipe.
Referenced by execPseudoInst().
void HsailISA::Call::MagicAtomicNRAddGroupU32Reg | ( | Wavefront * | w, |
GPUDynInstPtr | gpuDynInst | ||
) |
Definition at line 661 of file pseudo_inst.cc.
References calcAddr(), Wavefront::computeUnit, Wavefront::execMask(), ListOperand::get(), GLBMEM_PIPE, ComputeUnit::globalMemoryPipe, GlobalMemPipeline::issueRequest(), ArmISA::m, Wavefront::memReqsInPipe, HsailISA::HsailDataType< _OperandType, _CType, _memType, _vgprType, IsBits >::memType, Wavefront::outstandingReqs, Wavefront::outstandingReqsRdGm, Wavefront::outstandingReqsWrGm, Wavefront::rdGmReqsInPipe, GPUStaticInst::setFlag(), ComputeUnit::shader, Wavefront::simdId, src1, Shader::tick_cnt, Shader::ticks(), HsailISA::HsailDataType< _OperandType, _CType, _memType, _vgprType, IsBits >::vgprType, MipsISA::w, Wavefront::wfDynId, ComputeUnit::wfSize(), Wavefront::wfSlotId, and Wavefront::wrGmReqsInPipe.
Referenced by execPseudoInst().
void HsailISA::Call::MagicJoinWFBar | ( | Wavefront * | w | ) |
Definition at line 545 of file pseudo_inst.cc.
References Wavefront::barCnt, Wavefront::computeUnit, Wavefront::getPred(), ArmISA::mask, Wavefront::maxBarCnt, and ComputeUnit::wfSize().
Referenced by execPseudoInst().
void HsailISA::Call::MagicLoadGlobalU32Reg | ( | Wavefront * | w, |
GPUDynInstPtr | gpuDynInst | ||
) |
Definition at line 701 of file pseudo_inst.cc.
References calcAddr(), Wavefront::computeUnit, Wavefront::execMask(), GLBMEM_PIPE, ComputeUnit::globalMemoryPipe, GlobalMemPipeline::issueRequest(), ArmISA::m, Wavefront::memReqsInPipe, HsailISA::HsailDataType< _OperandType, _CType, _memType, _vgprType, IsBits >::memType, Wavefront::outstandingReqs, Wavefront::outstandingReqsRdGm, Wavefront::rdGmReqsInPipe, GPUStaticInst::setFlag(), ComputeUnit::shader, Wavefront::simdId, Shader::tick_cnt, Shader::ticks(), HsailISA::HsailDataType< _OperandType, _CType, _memType, _vgprType, IsBits >::vgprType, Wavefront::wfDynId, and Wavefront::wfSlotId.
Referenced by execPseudoInst().
void HsailISA::Call::MagicMaskLower | ( | Wavefront * | w | ) |
Definition at line 495 of file pseudo_inst.cc.
References Wavefront::computeUnit, dest, ListOperand::get(), Wavefront::getPred(), ArmISA::mask, ListOperand::set(), src1, MipsISA::w, and ComputeUnit::wfSize().
Referenced by execPseudoInst().
void HsailISA::Call::MagicMaskUpper | ( | Wavefront * | w | ) |
Definition at line 520 of file pseudo_inst.cc.
References Wavefront::computeUnit, dest, ListOperand::get(), Wavefront::getPred(), ArmISA::mask, ListOperand::set(), src1, MipsISA::w, and ComputeUnit::wfSize().
Referenced by execPseudoInst().
void HsailISA::Call::MagicMostSigBroadcast | ( | Wavefront * | w | ) |
Definition at line 774 of file pseudo_inst.cc.
References Wavefront::computeUnit, dest, ListOperand::get(), Wavefront::getPred(), ArmISA::mask, ListOperand::set(), src1, MipsISA::w, and ComputeUnit::wfSize().
Referenced by execPseudoInst().
void HsailISA::Call::MagicMostSigThread | ( | Wavefront * | w | ) |
Definition at line 760 of file pseudo_inst.cc.
References Wavefront::computeUnit, dest, Wavefront::getPred(), ArmISA::mask, ListOperand::set(), MipsISA::w, and ComputeUnit::wfSize().
Referenced by execPseudoInst().
void HsailISA::Call::MagicPanic | ( | Wavefront * | w | ) |
Definition at line 592 of file pseudo_inst.cc.
References Wavefront::computeUnit, ListOperand::get(), Wavefront::getPred(), ArmISA::mask, panic, src1, MipsISA::w, and ComputeUnit::wfSize().
Referenced by execPseudoInst().
void HsailISA::Call::MagicPrefixSum | ( | Wavefront * | w | ) |
Definition at line 456 of file pseudo_inst.cc.
References Wavefront::computeUnit, dest, ListOperand::get(), Wavefront::getPred(), ArmISA::mask, ListOperand::set(), src1, MipsISA::w, and ComputeUnit::wfSize().
Referenced by execPseudoInst().
void HsailISA::Call::MagicPrintLane | ( | Wavefront * | w | ) |
Definition at line 181 of file pseudo_inst.cc.
References Wavefront::computeUnit, GPUStaticInst::disassemble(), DPRINTFN, ListOperand::get(), Wavefront::getPred(), ArmISA::mask, src1, MipsISA::w, and ComputeUnit::wfSize().
Referenced by execPseudoInst().
void HsailISA::Call::MagicPrintLane64 | ( | Wavefront * | w | ) |
Definition at line 204 of file pseudo_inst.cc.
References Wavefront::computeUnit, GPUStaticInst::disassemble(), DPRINTFN, ListOperand::get(), Wavefront::getPred(), ArmISA::mask, src1, MipsISA::w, and ComputeUnit::wfSize().
Referenced by execPseudoInst().
void HsailISA::Call::MagicPrintWF32 | ( | Wavefront * | w | ) |
Definition at line 227 of file pseudo_inst.cc.
References Wavefront::computeUnit, csprintf(), GPUStaticInst::disassemble(), DPRINTFN, ListOperand::get(), Wavefront::getPred(), ArmISA::mask, src1, MipsISA::w, Wavefront::wfDynId, and ComputeUnit::wfSize().
Referenced by execPseudoInst().
void HsailISA::Call::MagicPrintWF32ID | ( | Wavefront * | w | ) |
Definition at line 265 of file pseudo_inst.cc.
References Wavefront::computeUnit, csprintf(), GPUStaticInst::disassemble(), DPRINTFN, ListOperand::get(), Wavefront::getPred(), ArmISA::mask, src1, MipsISA::w, Wavefront::wfDynId, and ComputeUnit::wfSize().
Referenced by execPseudoInst().
void HsailISA::Call::MagicPrintWF64 | ( | Wavefront * | w | ) |
Definition at line 307 of file pseudo_inst.cc.
References Wavefront::computeUnit, csprintf(), GPUStaticInst::disassemble(), DPRINTFN, ListOperand::get(), Wavefront::getPred(), ArmISA::mask, src1, MipsISA::w, Wavefront::wfDynId, and ComputeUnit::wfSize().
Referenced by execPseudoInst().
void HsailISA::Call::MagicPrintWFFloat | ( | Wavefront * | w | ) |
Definition at line 387 of file pseudo_inst.cc.
References Wavefront::computeUnit, csprintf(), GPUStaticInst::disassemble(), DPRINTFN, ListOperand::get(), Wavefront::getPred(), ArmISA::mask, src1, MipsISA::w, Wavefront::wfDynId, and ComputeUnit::wfSize().
Referenced by execPseudoInst().
void HsailISA::Call::MagicPrintWFID64 | ( | Wavefront * | w | ) |
Definition at line 345 of file pseudo_inst.cc.
References Wavefront::computeUnit, csprintf(), GPUStaticInst::disassemble(), DPRINTFN, ListOperand::get(), Wavefront::getPred(), ArmISA::mask, src1, MipsISA::w, Wavefront::wfDynId, and ComputeUnit::wfSize().
Referenced by execPseudoInst().
void HsailISA::Call::MagicReduction | ( | Wavefront * | w | ) |
Definition at line 471 of file pseudo_inst.cc.
References Wavefront::computeUnit, dest, ListOperand::get(), Wavefront::getPred(), ArmISA::mask, ListOperand::set(), src1, MipsISA::w, and ComputeUnit::wfSize().
Referenced by execPseudoInst().
void HsailISA::Call::MagicSimBreak | ( | Wavefront * | w | ) |
Definition at line 421 of file pseudo_inst.cc.
References Wavefront::computeUnit, csprintf(), ComputeUnit::cu_id, DPRINTFN, Wavefront::execMask(), ArmISA::i, Wavefront::kernId, Wavefront::simdId, ComputeUnit::wfSize(), and Wavefront::wfSlotId.
Referenced by execPseudoInst().
void HsailISA::Call::MagicWaitWFBar | ( | Wavefront * | w | ) |
Definition at line 566 of file pseudo_inst.cc.
References Wavefront::barCnt, Wavefront::computeUnit, Wavefront::dropFetch, Wavefront::getPred(), Wavefront::instructionBuffer, ArmISA::mask, Wavefront::maxBarCnt, Wavefront::pendingFetch, and ComputeUnit::wfSize().
Referenced by execPseudoInst().
void HsailISA::Call::MagicXactCasLd | ( | Wavefront * | w | ) |
Definition at line 738 of file pseudo_inst.cc.
References Wavefront::computeUnit, ListOperand::get(), Wavefront::getPred(), ArmISA::mask, Wavefront::simdId, src1, MipsISA::w, ComputeUnit::wfSize(), Wavefront::wfSlotId, and ComputeUnit::xactCasLoadMap.
Referenced by execPseudoInst().
|
inlinevirtual |
Implements GPUStaticInst.
|
inlinevirtual |
Implements GPUStaticInst.
ListOperand HsailISA::Call::dest |
Definition at line 1181 of file decl.hh.
Referenced by Call(), generateDisassembly(), MagicMaskLower(), MagicMaskUpper(), MagicMostSigBroadcast(), MagicMostSigThread(), MagicPrefixSum(), and MagicReduction().
FunctionRefOperand HsailISA::Call::src0 |
Definition at line 1182 of file decl.hh.
Referenced by Call(), execute(), generateDisassembly(), and isPseudoOp().
ListOperand HsailISA::Call::src1 |
Definition at line 1183 of file decl.hh.
Referenced by calcAddr(), Call(), execPseudoInst(), generateDisassembly(), MagicAtomicNRAddGlobalU32Reg(), MagicAtomicNRAddGroupU32Reg(), MagicMaskLower(), MagicMaskUpper(), MagicMostSigBroadcast(), MagicPanic(), MagicPrefixSum(), MagicPrintLane(), MagicPrintLane64(), MagicPrintWF32(), MagicPrintWF32ID(), MagicPrintWF64(), MagicPrintWFFloat(), MagicPrintWFID64(), MagicReduction(), and MagicXactCasLd().