CLRX  1
An unofficial OpenCL extensions designed for Radeon GPUs
Classes | Namespaces | Typedefs | Enumerations
AsmDefs.h File Reference

an assembler for Radeon GPU's More...

#include <CLRX/Config.h>
#include <cstdint>
#include <vector>
#include <utility>
#include <list>
#include <unordered_map>
#include <CLRX/utils/Utilities.h>
#include <CLRX/amdasm/Commons.h>
#include <CLRX/amdasm/AsmSource.h>
#include <CLRX/amdasm/AsmFormats.h>

Go to the source code of this file.

Classes

class  CLRX::AsmException
 Assembler exception class. More...
 
struct  CLRX::AsmExprSymbolOccurrence
 assembler symbol occurrence in expression More...
 
struct  CLRX::AsmSymbol
 assembler symbol structure More...
 
struct  CLRX::AsmExprTarget
 target for assembler expression More...
 
struct  CLRX::AsmRelocation
 assembler relocation More...
 
class  CLRX::AsmExpression
 assembler expression class More...
 
union  CLRX::AsmExprArg
 assembler expression argument More...
 
struct  CLRX::AsmRegVar
 Regvar info structure. More...
 
struct  CLRX::AsmSingleVReg
 single regvar id More...
 
struct  CLRX::AsmRegVarUsage
 regvar usage in code More...
 
struct  CLRX::AsmRegVarUsageInt
 regvar usage (internal) More...
 
struct  CLRX::AsmRegUsageInt
 internal structure for regusage More...
 
struct  CLRX::AsmRegUsage2Int
 internal structure for regusage More...
 
struct  CLRX::AsmCodeFlowEntry
 code flow entry More...
 
struct  CLRX::AsmScope
 assembler scope for symbol, macros, regvars More...
 
struct  CLRX::AsmSection
 assembler section More...
 
struct  CLRX::AsmKernel
 kernel entry structure More...
 
struct  std::hash< CLRX::AsmSingleVReg >
 std::hash specialization for CLRX CString More...
 

Namespaces

 CLRX
 main namespace
 

Typedefs

typedef cxbyte CLRX::AsmExprTargetType
 expression target type (one byte)
 
typedef std::unordered_map< CString, AsmSymbol > CLRX::AsmSymbolMap
 assembler symbol map
 
typedef AsmSymbolMap::value_type CLRX::AsmSymbolEntry
 assembler symbol entry
 
typedef cxbyte CLRX::AsmRegField
 type of register field
 
typedef std::unordered_map< CString, AsmRegVar > CLRX::AsmRegVarMap
 regvar map
 
typedef AsmRegVarMap::value_type CLRX::AsmRegVarEntry
 regvar entry
 
typedef std::unordered_map< CString, RefPtr< const AsmMacro > > CLRX::AsmMacroMap
 assembler macro map
 
typedef std::unordered_map< CString, AsmScope * > CLRX::AsmScopeMap
 type definition of scope's map
 

Enumerations

enum  : cxbyte { WS_UNSIGNED = 0, WS_BOTH = 1 }
 
enum  : AsmExprTargetType {
  CLRX::ASMXTGT_SYMBOL = 0, CLRX::ASMXTGT_DATA8, CLRX::ASMXTGT_DATA16, CLRX::ASMXTGT_DATA32,
  CLRX::ASMXTGT_DATA64, CLRX::ASMXTGT_CODEFLOW, GCNTGT_LITIMM = 16, GCNTGT_SOPKSIMM16,
  GCNTGT_SOPJMP, GCNTGT_SMRDOFFSET, GCNTGT_DSOFFSET16, GCNTGT_DSOFFSET8_0,
  GCNTGT_DSOFFSET8_1, GCNTGT_MXBUFOFFSET, GCNTGT_SMEMOFFSET, GCNTGT_SOPCIMM8,
  GCNTGT_SMEMIMM, GCNTGT_SMEMOFFSETVEGA, GCNTGT_SMEMOFFSET2, GCNTGT_INSTOFFSET,
  GCNTGT_INSTOFFSET_S
}
 
enum  CLRX::AsmExprOp : cxbyte {
  CLRX::AsmExprOp::ARG_VALUE = 0, CLRX::AsmExprOp::ARG_SYMBOL = 1, CLRX::AsmExprOp::NEGATE = 2, CLRX::AsmExprOp::BIT_NOT,
  CLRX::AsmExprOp::LOGICAL_NOT, CLRX::AsmExprOp::PLUS, CLRX::AsmExprOp::ADDITION, CLRX::AsmExprOp::SUBTRACT,
  CLRX::AsmExprOp::MULTIPLY, CLRX::AsmExprOp::DIVISION, CLRX::AsmExprOp::SIGNED_DIVISION, CLRX::AsmExprOp::MODULO,
  CLRX::AsmExprOp::SIGNED_MODULO, CLRX::AsmExprOp::BIT_AND, BIT_OR, CLRX::AsmExprOp::BIT_XOR,
  CLRX::AsmExprOp::BIT_ORNOT, CLRX::AsmExprOp::SHIFT_LEFT, CLRX::AsmExprOp::SHIFT_RIGHT, CLRX::AsmExprOp::SIGNED_SHIFT_RIGHT,
  CLRX::AsmExprOp::LOGICAL_AND, CLRX::AsmExprOp::LOGICAL_OR, CLRX::AsmExprOp::EQUAL, CLRX::AsmExprOp::NOT_EQUAL,
  CLRX::AsmExprOp::LESS, CLRX::AsmExprOp::LESS_EQ, CLRX::AsmExprOp::GREATER, CLRX::AsmExprOp::GREATER_EQ,
  CLRX::AsmExprOp::BELOW, CLRX::AsmExprOp::BELOW_EQ, CLRX::AsmExprOp::ABOVE, CLRX::AsmExprOp::ABOVE_EQ,
  CLRX::AsmExprOp::CHOICE, CLRX::AsmExprOp::CHOICE_START, FIRST_ARG = ARG_VALUE, LAST_ARG = ARG_SYMBOL,
  CLRX::AsmExprOp::FIRST_UNARY = NEGATE, CLRX::AsmExprOp::LAST_UNARY = PLUS, CLRX::AsmExprOp::FIRST_BINARY = ADDITION, CLRX::AsmExprOp::LAST_BINARY = ABOVE_EQ,
  CLRX::AsmExprOp::NONE = 0xff
}
 assembler expression operator More...
 
enum  : AsmRegField {
  ASMFIELD_NONE = 0, GCNFIELD_SSRC0, GCNFIELD_SSRC1, GCNFIELD_SDST,
  GCNFIELD_SMRD_SBASE, GCNFIELD_SMRD_SDST, GCNFIELD_SMRD_SDSTH, GCNFIELD_SMRD_SOFFSET,
  GCNFIELD_VOP_SRC0, GCNFIELD_VOP_VSRC1, GCNFIELD_VOP_SSRC1, GCNFIELD_VOP_VDST,
  GCNFIELD_VOP_SDST, GCNFIELD_VOP3_SRC0, GCNFIELD_VOP3_SRC1, GCNFIELD_VOP3_SRC2,
  GCNFIELD_VOP3_VDST, GCNFIELD_VOP3_SDST0, GCNFIELD_VOP3_SSRC, GCNFIELD_VOP3_SDST1,
  GCNFIELD_VINTRP_VSRC0, GCNFIELD_VINTRP_VDST, GCNFIELD_DS_ADDR, GCNFIELD_DS_DATA0,
  GCNFIELD_DS_DATA1, GCNFIELD_DS_VDST, GCNFIELD_M_VADDR, GCNFIELD_M_VDATA,
  GCNFIELD_M_VDATAH, GCNFIELD_M_VDATALAST, GCNFIELD_M_SRSRC, GCNFIELD_MIMG_SSAMP,
  GCNFIELD_M_SOFFSET, GCNFIELD_EXP_VSRC0, GCNFIELD_EXP_VSRC1, GCNFIELD_EXP_VSRC2,
  GCNFIELD_EXP_VSRC3, GCNFIELD_FLAT_ADDR, GCNFIELD_FLAT_DATA, GCNFIELD_FLAT_VDST,
  GCNFIELD_FLAT_VDSTLAST, GCNFIELD_DPPSDWA_SRC0, GCNFIELD_DPPSDWA_SSRC0, GCNFIELD_FLAT_SADDR
}
 
enum  : cxbyte {
  CLRX::ASMRVU_READ = 1, CLRX::ASMRVU_WRITE = 2, CLRX::ASMRVU_ACCESS_MASK = 3, CLRX::ASMRVU_REGTYPE_MASK = 4,
  CLRX::ASMRVU_REGSIZE_SHIFT = 3, CLRX::ASMRVU_REGSIZE_MASK = 0x78
}
 
enum  CLRX::AsmCodeFlowType {
  CLRX::JUMP = 0, CLRX::CJUMP, CLRX::CALL, CLRX::RETURN,
  CLRX::START, CLRX::END
}
 code flow type More...
 

Detailed Description

an assembler for Radeon GPU's