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