LLVM: lib/Target/AMDGPU/Utils/AMDKernelCodeTUtils.cpp File Reference (original) (raw)

Go to the source code of this file.

Macros
#define GEN_HAS_MEMBER(member)
#define RECORD(name, altName, print, parse)
#define QNAME(name)
#define FLD_T(name)
#define PRINTFIELD(sname, aname, name)
#define FIELD2(sname, aname, name)
#define FIELD(name)
#define PRINTCODEPROP(name)
#define PARSECODEPROP(name)
#define CODEPROP(name, shift)
#define PRINTCOMP(GetMacro, Shift)
#define PARSECOMP(SetMacro, Shift)
#define COMPPGM(name, aname, GetMacro, SetMacro, Shift)
#define COMPPGM1(name, aname, AccMacro)
#define COMPPGM2(name, aname, AccMacro)
#define RECORD(name, altName, print, parse)
#define QNAME(name)
#define FLD_T(name)
#define PRINTFIELD(sname, aname, name)
#define FIELD2(sname, aname, name)
#define FIELD(name)
#define PRINTCODEPROP(name)
#define PARSECODEPROP(name)
#define CODEPROP(name, shift)
#define PRINTCOMP(GetMacro, Shift)
#define PARSECOMP(SetMacro, Shift)
#define COMPPGM(name, aname, GetMacro, SetMacro, Shift)
#define COMPPGM1(name, aname, AccMacro)
#define COMPPGM2(name, aname, AccMacro)
#define RECORD(name, altName, print, parse)
#define QNAME(name)
#define FLD_T(name)
#define PRINTFIELD(sname, aname, name)
#define FIELD2(sname, aname, name)
#define FIELD(name)
#define PRINTCODEPROP(name)
#define PARSECODEPROP(name)
#define CODEPROP(name, shift)
#define PRINTCOMP(GetMacro, Shift)
#define PARSECOMP(SetMacro, Shift)
#define COMPPGM(name, aname, GetMacro, SetMacro, Shift)
#define COMPPGM1(name, aname, AccMacro)
#define COMPPGM2(name, aname, AccMacro)
#define RECORD(name, altName, print, parse)
#define QNAME(name)
#define FLD_T(name)
#define PRINTFIELD(sname, aname, name)
#define FIELD2(sname, aname, name)
#define FIELD(name)
#define PRINTCODEPROP(name)
#define PARSECODEPROP(name)
#define CODEPROP(name, shift)
#define PRINTCOMP(GetMacro, Shift)
#define PARSECOMP(SetMacro, Shift)
#define COMPPGM(name, aname, GetMacro, SetMacro, Shift)
#define COMPPGM1(name, aname, AccMacro)
#define COMPPGM2(name, aname, AccMacro)
#define COMPPGM1(name, aname, AccMacro)
#define COMPPGM2(name, aname, AccMacro)
#define PRINTFIELD(sname, aname, name)
#define PRINTCOMP(Complement, PGMType)
#define RECORD(name, altName, print, parse)
#define QNAME(name)
#define FLD_T(name)
#define FIELD2(sname, aname, name)
#define FIELD(name)
#define PRINTCODEPROP(name)
#define PARSECODEPROP(name)
#define CODEPROP(name, shift)
#define PARSECOMP(SetMacro, Shift)
#define COMPPGM(name, aname, GetMacro, SetMacro, Shift)
#define COMPPGM1(name, aname, AccMacro)
#define COMPPGM2(name, aname, AccMacro)
#define PARSECOMP(Complement, PGMType)
#define RECORD(name, altName, print, parse)
#define QNAME(name)
#define FLD_T(name)
#define PRINTFIELD(sname, aname, name)
#define FIELD2(sname, aname, name)
#define FIELD(name)
#define PRINTCODEPROP(name)
#define PARSECODEPROP(name)
#define CODEPROP(name, shift)
#define PRINTCOMP(GetMacro, Shift)
#define COMPPGM(name, aname, GetMacro, SetMacro, Shift)
Functions
static StringMap< int > createIndexMap (ArrayRef< StringLiteral > names, ArrayRef< StringLiteral > altNames)
static int get_amd_kernel_code_t_FieldIndex (StringRef name)
template<typename T, T AMDGPUMCKernelCodeT::* ptr, int shift, int width = 1>
static void printBitField (StringRef Name, const AMDGPUMCKernelCodeT &C, raw_ostream &OS, MCContext &, AMDGPUMCKernelCodeT::PrintHelper)
static bool expectAbsExpression (MCAsmParser &MCParser, int64_t &Value, raw_ostream &Err)
template<typename T, T AMDGPUMCKernelCodeT::* ptr>
static bool parseField (AMDGPUMCKernelCodeT &C, MCAsmParser &MCParser, raw_ostream &Err)
template<typename T, T AMDGPUMCKernelCodeT::* ptr, int shift, int width = 1>
static bool parseBitField (AMDGPUMCKernelCodeT &C, MCAsmParser &MCParser, raw_ostream &Err)
static bool parseExpr (MCAsmParser &MCParser, const MCExpr *&Value, raw_ostream &Err)
static void printAmdKernelCodeField (const AMDGPUMCKernelCodeT &C, int FldIndex, raw_ostream &OS, MCContext &Ctx, AMDGPUMCKernelCodeT::PrintHelper Helper)

CODEPROP [1/6]

#define CODEPROP ( name,
shift )

Value:

#define PRINTCODEPROP(name)

#define PARSECODEPROP(name)

#define RECORD(name, altName, print, parse)

CODEPROP [2/6]

#define CODEPROP ( name,
shift )

CODEPROP [3/6]

#define CODEPROP ( name,
shift )

CODEPROP [4/6]

#define CODEPROP ( name,
shift )

CODEPROP [5/6]

#define CODEPROP ( name,
shift )

CODEPROP [6/6]

#define CODEPROP ( name,
shift )

COMPPGM [1/6]

#define COMPPGM ( name,
aname,
GetMacro,
SetMacro,
Shift )

Value:

#define PRINTCOMP(GetMacro, Shift)

#define PARSECOMP(SetMacro, Shift)

COMPPGM [2/6]

#define COMPPGM ( name,
aname,
GetMacro,
SetMacro,
Shift )

COMPPGM [3/6]

#define COMPPGM ( name,
aname,
GetMacro,
SetMacro,
Shift )

COMPPGM [4/6]

#define COMPPGM ( name,
aname,
GetMacro,
SetMacro,
Shift )

COMPPGM [5/6]

#define COMPPGM ( name,
aname,
GetMacro,
SetMacro,
Shift )

COMPPGM [6/6]

#define COMPPGM ( name,
aname,
GetMacro,
SetMacro,
Shift )

COMPPGM1 [1/6]

#define COMPPGM1 ( name,
aname,
AccMacro )

Value:

COMPPGM(name, aname, G_00B848_##AccMacro, S_00B848_##AccMacro, 0)

#define COMPPGM(name, aname, GetMacro, SetMacro, Shift)

COMPPGM1 [2/6]

#define COMPPGM1 ( name,
aname,
AccMacro )

Value:

COMPPGM(name, aname, G_00B848_##AccMacro, S_00B848_##AccMacro, 0)

COMPPGM1 [3/6]

#define COMPPGM1 ( name,
aname,
AccMacro )

Value:

COMPPGM(name, aname, G_00B848_##AccMacro, S_00B848_##AccMacro, 0)

COMPPGM1 [4/6]

#define COMPPGM1 ( name,
aname,
AccMacro )

Value:

COMPPGM(name, aname, G_00B848_##AccMacro, S_00B848_##AccMacro, 0)

COMPPGM1 [5/6]

#define COMPPGM1 ( name,
aname,
AccMacro )

Value:

COMPPGM(name, aname, C_00B848_##AccMacro, S_00B848_##AccMacro, 0)

COMPPGM1 [6/6]

#define COMPPGM1 ( name,
aname,
AccMacro )

Value:

COMPPGM(name, aname, G_00B848_##AccMacro, C_00B848_##AccMacro, 0)

COMPPGM2 [1/6]

#define COMPPGM2 ( name,
aname,
AccMacro )

Value:

COMPPGM(name, aname, G_00B84C_##AccMacro, S_00B84C_##AccMacro, 32)

COMPPGM2 [2/6]

#define COMPPGM2 ( name,
aname,
AccMacro )

Value:

COMPPGM(name, aname, G_00B84C_##AccMacro, S_00B84C_##AccMacro, 32)

COMPPGM2 [3/6]

#define COMPPGM2 ( name,
aname,
AccMacro )

Value:

COMPPGM(name, aname, G_00B84C_##AccMacro, S_00B84C_##AccMacro, 32)

COMPPGM2 [4/6]

#define COMPPGM2 ( name,
aname,
AccMacro )

Value:

COMPPGM(name, aname, G_00B84C_##AccMacro, S_00B84C_##AccMacro, 32)

COMPPGM2 [5/6]

#define COMPPGM2 ( name,
aname,
AccMacro )

Value:

COMPPGM(name, aname, C_00B84C_##AccMacro, S_00B84C_##AccMacro, 32)

COMPPGM2 [6/6]

#define COMPPGM2 ( name,
aname,
AccMacro )

Value:

COMPPGM(name, aname, G_00B84C_##AccMacro, C_00B84C_##AccMacro, 32)

FIELD [1/6]

Value:

#define FIELD2(sname, aname, name)

FIELD [2/6]

FIELD [3/6]

FIELD [4/6]

FIELD [5/6]

FIELD [6/6]

FIELD2 [1/6]

#define FIELD2 ( sname,
aname,
name )

Value:

#define PRINTFIELD(sname, aname, name)

static bool parseField(AMDGPUMCKernelCodeT &C, MCAsmParser &MCParser, raw_ostream &Err)

FIELD2 [2/6]

#define FIELD2 ( sname,
aname,
name )

FIELD2 [3/6]

#define FIELD2 ( sname,
aname,
name )

FIELD2 [4/6]

#define FIELD2 ( sname,
aname,
name )

FIELD2 [5/6]

#define FIELD2 ( sname,
aname,
name )

FIELD2 [6/6]

#define FIELD2 ( sname,
aname,
name )

FLD_T [1/6]

FLD_T [2/6]

FLD_T [3/6]

FLD_T [4/6]

FLD_T [5/6]

FLD_T [6/6]

GEN_HAS_MEMBER

#define GEN_HAS_MEMBER ( member )

Value:

class HasMember##member { \

template \

using check_member = decltype(std::declval().member); \

\

public: \

static constexpr bool RESULT = \

}; \

class IsMCExpr##member { \

template \

static constexpr auto HasMCExprType(int) -> std::bool_constant< \

HasMember##member::RESULT && \

std::is_same_v<decltype(U::member), const MCExpr *>>; \

template static constexpr std::false_type HasMCExprType(...); \

\

public: \

static constexpr bool RESULT = \

decltype(HasMCExprType(0))::value; \

}; \

class GetMember##member { \

public: \

static const MCExpr *Phony; \

template static const MCExpr *&Get(U &C) { \

if constexpr (IsMCExpr##member::RESULT) \

return C.member; \

else \

return Phony; \

} \

}; \

const MCExpr *GetMember##member::Phony = nullptr;

Base class for the full range of assembler expressions which are needed for parsing.

@ C

The default llvm calling convention, compatible with C.

typename detail::detector< void, Op, Args... >::value_t is_detected

Detects if a given trait holds for some set of arguments 'Args'.

Definition at line 41 of file AMDKernelCodeTUtils.cpp.

PARSECODEPROP [1/6]

#define PARSECODEPROP ( name )

Value:

parseBitField<FLD_T(code_properties),\

AMD_CODE_PROPERTY_##name##_SHIFT,\

AMD_CODE_PROPERTY_##name##_WIDTH>

static bool parseBitField(AMDGPUMCKernelCodeT &C, MCAsmParser &MCParser, raw_ostream &Err)

PARSECODEPROP [2/6]

#define PARSECODEPROP ( name )

Value:

parseBitField<FLD_T(code_properties),\

AMD_CODE_PROPERTY_##name##_SHIFT,\

AMD_CODE_PROPERTY_##name##_WIDTH>

PARSECODEPROP [3/6]

#define PARSECODEPROP ( name )

Value:

parseBitField<FLD_T(code_properties),\

AMD_CODE_PROPERTY_##name##_SHIFT,\

AMD_CODE_PROPERTY_##name##_WIDTH>

PARSECODEPROP [4/6]

#define PARSECODEPROP ( name )

Value:

parseBitField<FLD_T(code_properties),\

AMD_CODE_PROPERTY_##name##_SHIFT,\

AMD_CODE_PROPERTY_##name##_WIDTH>

PARSECODEPROP [5/6]

#define PARSECODEPROP ( name )

Value:

parseBitField<FLD_T(code_properties),\

AMD_CODE_PROPERTY_##name##_SHIFT,\

AMD_CODE_PROPERTY_##name##_WIDTH>

PARSECODEPROP [6/6]

#define PARSECODEPROP ( name )

Value:

parseBitField<FLD_T(code_properties),\

AMD_CODE_PROPERTY_##name##_SHIFT,\

AMD_CODE_PROPERTY_##name##_WIDTH>

PARSECOMP [1/6]

#define PARSECOMP ( Complement,
PGMType )

Value:

MCContext &Ctx = MCParser.getContext(); \

if (parseExpr(MCParser, Value, Err)) \

return false; \

if (PGMType == 0) { \

C.compute_pgm_resource1_registers, Compl, Ctx); \

C.compute_pgm_resource1_registers, Value, Ctx); \

} else { \

C.compute_pgm_resource2_registers, Compl, Ctx); \

C.compute_pgm_resource2_registers, Value, Ctx); \

} \

return true; \

}

static bool parseExpr(MCAsmParser &MCParser, const MCExpr *&Value, raw_ostream &Err)

Generic assembler parser interface, for use by target specific assembly parsers.

static const MCBinaryExpr * createAnd(const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)

static const MCBinaryExpr * createOr(const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)

static LLVM_ABI const MCConstantExpr * create(int64_t Value, MCContext &Ctx, bool PrintInHex=false, unsigned SizeInBytes=0)

Context object for machine code objects.

LLVM Value Representation.

This class implements an extremely fast bulk output stream that can only output to a stream.

const MCExpr * maskShiftSet(const MCExpr *Val, uint32_t Mask, uint32_t Shift, MCContext &Ctx)

Provided with the MCExpr * Val, uint32 Mask and Shift, will return the masked and left shifted,...

constexpr std::pair< unsigned, unsigned > getShiftMask(unsigned Value)

Deduce the least significant bit aligned shift and mask values for a binary Complement Value (as they...

PARSECOMP [2/6]

#define PARSECOMP ( SetMacro,
Shift )

Value:

if (expectAbsExpression(MCParser, Value, Err)) \

return false; \

C.compute_pgm_resource_registers &= ~(SetMacro(0xFFFFFFFFFFFFFFFFULL) << Shift); \

C.compute_pgm_resource_registers |= SetMacro(Value) << Shift; \

return true; \

}

static bool expectAbsExpression(MCAsmParser &MCParser, int64_t &Value, raw_ostream &Err)

AMD Kernel Code Object (amd_kernel_code_t).

PARSECOMP [3/6]

#define PARSECOMP ( SetMacro,
Shift )

Value:

if (expectAbsExpression(MCParser, Value, Err)) \

return false; \

C.compute_pgm_resource_registers &= ~(SetMacro(0xFFFFFFFFFFFFFFFFULL) << Shift); \

C.compute_pgm_resource_registers |= SetMacro(Value) << Shift; \

return true; \

}

PARSECOMP [4/6]

#define PARSECOMP ( SetMacro,
Shift )

Value:

if (expectAbsExpression(MCParser, Value, Err)) \

return false; \

C.compute_pgm_resource_registers &= ~(SetMacro(0xFFFFFFFFFFFFFFFFULL) << Shift); \

C.compute_pgm_resource_registers |= SetMacro(Value) << Shift; \

return true; \

}

PARSECOMP [5/6]

#define PARSECOMP ( SetMacro,
Shift )

Value:

if (expectAbsExpression(MCParser, Value, Err)) \

return false; \

C.compute_pgm_resource_registers &= ~(SetMacro(0xFFFFFFFFFFFFFFFFULL) << Shift); \

C.compute_pgm_resource_registers |= SetMacro(Value) << Shift; \

return true; \

}

PARSECOMP [6/6]

#define PARSECOMP ( SetMacro,
Shift )

Value:

if (expectAbsExpression(MCParser, Value, Err)) \

return false; \

C.compute_pgm_resource_registers &= ~(SetMacro(0xFFFFFFFFFFFFFFFFULL) << Shift); \

C.compute_pgm_resource_registers |= SetMacro(Value) << Shift; \

return true; \

}

PRINTCODEPROP [1/6]

#define PRINTCODEPROP ( name )

Value:

printBitField<FLD_T(code_properties),\

AMD_CODE_PROPERTY_##name##_SHIFT,\

AMD_CODE_PROPERTY_##name##_WIDTH>

static void printBitField(StringRef Name, const AMDGPUMCKernelCodeT &C, raw_ostream &OS, MCContext &, AMDGPUMCKernelCodeT::PrintHelper)

PRINTCODEPROP [2/6]

#define PRINTCODEPROP ( name )

Value:

printBitField<FLD_T(code_properties),\

AMD_CODE_PROPERTY_##name##_SHIFT,\

AMD_CODE_PROPERTY_##name##_WIDTH>

PRINTCODEPROP [3/6]

#define PRINTCODEPROP ( name )

Value:

printBitField<FLD_T(code_properties),\

AMD_CODE_PROPERTY_##name##_SHIFT,\

AMD_CODE_PROPERTY_##name##_WIDTH>

PRINTCODEPROP [4/6]

#define PRINTCODEPROP ( name )

Value:

printBitField<FLD_T(code_properties),\

AMD_CODE_PROPERTY_##name##_SHIFT,\

AMD_CODE_PROPERTY_##name##_WIDTH>

PRINTCODEPROP [5/6]

#define PRINTCODEPROP ( name )

Value:

printBitField<FLD_T(code_properties),\

AMD_CODE_PROPERTY_##name##_SHIFT,\

AMD_CODE_PROPERTY_##name##_WIDTH>

PRINTCODEPROP [6/6]

#define PRINTCODEPROP ( name )

Value:

printBitField<FLD_T(code_properties),\

AMD_CODE_PROPERTY_##name##_SHIFT,\

AMD_CODE_PROPERTY_##name##_WIDTH>

PRINTCOMP [1/6]

#define PRINTCOMP ( Complement,
PGMType )

Value:

OS << Name << " = "; \

if (PGMType == 0) { \

maskShiftGet(C.compute_pgm_resource1_registers, Mask, Shift, Ctx); \

} else { \

maskShiftGet(C.compute_pgm_resource2_registers, Mask, Shift, Ctx); \

} \

}

const MCAsmInfo * getAsmInfo() const

StringRef - Represent a constant reference to a string, i.e.

FunctionAddr VTableAddr Value

function_ref< void(const MCExpr *, raw_ostream &, const MCAsmInfo *)> PrintHelper

PRINTCOMP [2/6]

#define PRINTCOMP ( GetMacro,
Shift )

Value:

printName(OS, Name) << \

(int)GetMacro(C.compute_pgm_resource_registers >> Shift); \

}

PRINTCOMP [3/6]

#define PRINTCOMP ( GetMacro,
Shift )

Value:

printName(OS, Name) << \

(int)GetMacro(C.compute_pgm_resource_registers >> Shift); \

}

PRINTCOMP [4/6]

#define PRINTCOMP ( GetMacro,
Shift )

Value:

printName(OS, Name) << \

(int)GetMacro(C.compute_pgm_resource_registers >> Shift); \

}

PRINTCOMP [5/6]

#define PRINTCOMP ( GetMacro,
Shift )

Value:

printName(OS, Name) << \

(int)GetMacro(C.compute_pgm_resource_registers >> Shift); \

}

PRINTCOMP [6/6]

#define PRINTCOMP ( GetMacro,
Shift )

Value:

printName(OS, Name) << \

(int)GetMacro(C.compute_pgm_resource_registers >> Shift); \

}

PRINTFIELD [1/6]

#define PRINTFIELD ( sname,
aname,
name )

PRINTFIELD [2/6]

#define PRINTFIELD ( sname,
aname,
name )

PRINTFIELD [3/6]

#define PRINTFIELD ( sname,
aname,
name )

PRINTFIELD [4/6]

#define PRINTFIELD ( sname,
aname,
name )

PRINTFIELD [5/6]

#define PRINTFIELD ( sname,
aname,
name )

PRINTFIELD [6/6]

#define PRINTFIELD ( sname,
aname,
name )

Value:

static void printField(StringRef Name, const AMDGPUMCKernelCodeT &C, raw_ostream &OS, MCContext &Ctx, AMDGPUMCKernelCodeT::PrintHelper Helper)

QNAME [1/6]

Value:

AMDGPUMCKernelCodeT::name

QNAME [2/6]

Value:

AMDGPUMCKernelCodeT::name

QNAME [3/6]

Value:

AMDGPUMCKernelCodeT::name

QNAME [4/6]

Value:

AMDGPUMCKernelCodeT::name

QNAME [5/6]

Value:

AMDGPUMCKernelCodeT::name

QNAME [6/6]

Value:

AMDGPUMCKernelCodeT::name

RECORD [1/6]

RECORD [2/6]

RECORD [3/6]

RECORD [4/6]

RECORD [5/6]

Value:

static void print(raw_ostream &Out, object::Archive::Kind Kind, T Val)

RECORD [6/6]

ParseFx

PrintFx

RetrieveFx

createIndexMap()

expectAbsExpression()

get_amd_kernel_code_t_FieldIndex()

int get_amd_kernel_code_t_FieldIndex ( StringRef name) static

parseBitField()

template<typename T, T AMDGPUMCKernelCodeT::* ptr, int shift, int width = 1>

parseExpr()

parseField()

template<typename T, T AMDGPUMCKernelCodeT::* ptr>

printAmdKernelCodeField()

printBitField()

template<typename T, T AMDGPUMCKernelCodeT::* ptr, int shift, int width = 1>