gem5
|
#include <operand.hh>
Public Member Functions | |
virtual void | calcVector (Wavefront *w, std::vector< Addr > &addrVec)=0 |
virtual uint64_t | calcLane (Wavefront *w, int lane=0)=0 |
Public Member Functions inherited from BaseOperand | |
BaseOperand () | |
bool | isVectorRegister () |
bool | isScalarRegister () |
bool | isCondRegister () |
unsigned int | regIndex () |
uint32_t | opSize () |
virtual | ~BaseOperand () |
Public Attributes | |
int64_t | offset |
const char * | name = nullptr |
StorageElement * | storageElement |
Public Attributes inherited from BaseOperand | |
Enums::RegisterType | registerType |
uint32_t | regOperandSize |
Protected Member Functions | |
void | parseAddr (const Brig::BrigOperandAddress *op, const BrigObject *obj) |
std::string | disassemble (std::string reg_disassembly) |
uint64_t | calcUniformBase () |
Definition at line 580 of file operand.hh.
|
pure virtual |
Implemented in NoRegAddrOperand, and RegAddrOperand< RegOperandType >.
|
protected |
Definition at line 380 of file operand.cc.
References ArmISA::offset.
Referenced by NoRegAddrOperand::calcUniform(), and NoRegAddrOperand::calcVector().
|
pure virtual |
Implemented in NoRegAddrOperand, and RegAddrOperand< RegOperandType >.
|
protected |
Definition at line 394 of file operand.cc.
References csprintf(), name(), and ArmISA::offset.
Referenced by RegAddrOperand< RegOperandType >::disassemble(), and NoRegAddrOperand::disassemble().
|
protected |
HSAIL does not properly handle immediate offsets for instruction types that utilize them. It currently only supports instructions that use variables instead. Again, these pop up in code that is never executed (i.e. the HCC AMP codes) so we just hack it here to let us pass through the HSAIL object initialization. If such code is ever called, we would have to implement this properly.
Definition at line 313 of file operand.cc.
References Brig::BrigOperandAddress::base, Brig::BRIG_KIND_DIRECTIVE_VARIABLE, Brig::BRIG_KIND_OPERAND_ADDRESS, Brig::BRIG_SEGMENT_ARG, BrigObject::currentCode, ArmISA::d, StorageMap::findSymbol(), HsailCode::findSymbol(), BrigObject::getCodeSectionEntry(), BrigObject::getString(), Brig::BrigBase::kind, name(), Brig::BrigDirectiveVariable::name, ArmISA::offset, Brig::BrigDirectiveVariable::segment, HsailCode::storageMap, Brig::BrigOperandAddress::symbol, and warn.
const char* AddrOperandBase::name = nullptr |
Definition at line 595 of file operand.hh.
int64_t AddrOperandBase::offset |
Definition at line 594 of file operand.hh.
StorageElement* AddrOperandBase::storageElement |
Definition at line 596 of file operand.hh.