gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Public Attributes | Protected Member Functions | List of all members
AddrOperandBase Class Referenceabstract

#include <operand.hh>

Inheritance diagram for AddrOperandBase:
BaseOperand NoRegAddrOperand RegAddrOperand< RegOperandType >

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
 
StorageElementstorageElement
 
- 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 ()
 

Detailed Description

Definition at line 580 of file operand.hh.

Member Function Documentation

virtual uint64_t AddrOperandBase::calcLane ( Wavefront w,
int  lane = 0 
)
pure virtual
uint64_t AddrOperandBase::calcUniformBase ( )
protected

Definition at line 380 of file operand.cc.

References ArmISA::offset.

Referenced by NoRegAddrOperand::calcUniform(), and NoRegAddrOperand::calcVector().

virtual void AddrOperandBase::calcVector ( Wavefront w,
std::vector< Addr > &  addrVec 
)
pure virtual
std::string AddrOperandBase::disassemble ( std::string  reg_disassembly)
protected
void AddrOperandBase::parseAddr ( const Brig::BrigOperandAddress op,
const BrigObject obj 
)
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.

Member Data Documentation

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.


The documentation for this class was generated from the following files:

Generated on Fri Jun 9 2017 13:04:00 for gem5 by doxygen 1.8.6