LLVM 24.0.0git
AMDGPUAsmParser.cpp File Reference

Go to the source code of this file.

Classes

struct  RegInfo

Macros

#define GET_REGISTER_MATCHER
#define PARSE_BITS_ENTRY(FIELD, ENTRY, VALUE, RANGE)
#define EXPR_RESOLVE_OR_ERROR(RESOLVED)
#define GET_MATCHER_IMPLEMENTATION
#define GET_MNEMONIC_SPELL_CHECKER
#define GET_MNEMONIC_CHECKER
Auto-generated Match Functions

{

#define GET_ASSEMBLER_HEADER

Typedefs

using OperandIndices = SmallVector<int16_t, MAX_SRC_OPERANDS_NUM>

Functions

static const fltSemantics * getFltSemantics (unsigned Size)
static const fltSemantics * getFltSemantics (MVT VT)
static const fltSemantics * getOpFltSemantics (uint8_t OperandType)
static bool canLosslesslyConvertToFPType (APFloat &FPLiteral, MVT VT)
static bool isSafeTruncation (int64_t Val, unsigned Size)
static bool isInlineableLiteralOp16 (int64_t Val, MVT VT, bool HasInv2Pi)
static int getRegClass (RegisterKind Is, unsigned RegWidth)
static MCRegister getSpecialRegForName (StringRef RegName)
static bool isRegularReg (RegisterKind Kind)
static const RegInfo * getRegularRegInfo (StringRef Str)
static bool getRegNum (StringRef Str, unsigned &Num)
static ArrayRef< unsigned > getAllVariants ()
static OperandIndices getSrcOperandIndices (unsigned Opcode, bool AddMandatoryLiterals=false)
static bool checkWriteLane (const MCInst &Inst)
static bool IsMovrelsSDWAOpcode (const unsigned Opcode)
static bool IsRevOpcode (const unsigned Opcode)
static int IsAGPROperand (const MCInst &Inst, AMDGPU::OpName Name, const MCRegisterInfo *MRI)
static std::string AMDGPUMnemonicSpellCheck (StringRef S, const FeatureBitset &FBS, unsigned VariantID=0)
static bool AMDGPUCheckMnemonic (StringRef Mnemonic, const FeatureBitset &AvailableFeatures, unsigned VariantID)
static bool isInvalidVOPDY (const OperandVector &Operands, uint64_t InvalidOprIdx)
static void applyMnemonicAliases (StringRef &Mnemonic, const FeatureBitset &Features, unsigned VariantID)
static void addOptionalImmOperand (MCInst &Inst, const OperandVector &Operands, AMDGPUAsmParser::OptionalImmIndexMap &OptionalIdx, AMDGPUOperand::ImmTy ImmT, int64_t Default=0, std::optional< unsigned > InsertAt=std::nullopt)
static bool encodeCnt (const AMDGPU::IsaVersion ISA, int64_t &IntVal, int64_t CntVal, bool Saturate, unsigned(*encode)(const IsaVersion &Version, unsigned, unsigned), unsigned(*decode)(const IsaVersion &Version, unsigned))
static LLVM_READNONE unsigned encodeBitmaskPerm (const unsigned AndMask, const unsigned OrMask, const unsigned XorMask)
static bool ConvertOmodMul (int64_t &Mul)
static bool ConvertOmodDiv (int64_t &Div)
static void cvtVOP3DstOpSelOnly (MCInst &Inst, const MCRegisterInfo &MRI)
static bool isRegOrImmWithInputMods (const MCInstrDesc &Desc, unsigned OpNum)
static void addSrcModifiersAndSrc (MCInst &Inst, const OperandVector &Operands, unsigned i, unsigned Opc, AMDGPU::OpName OpName)
LLVM_ABI LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAMDGPUAsmParser ()
 Force static initialization.

Variables

static constexpr RegInfo RegularRegisters []
constexpr unsigned MAX_SRC_OPERANDS_NUM = 6

Macro Definition Documentation

◆ EXPR_RESOLVE_OR_ERROR

#define EXPR_RESOLVE_OR_ERROR ( RESOLVED)
Value:
if (!(RESOLVED)) \
return Error(IDRange.Start, "directive should have resolvable expression", \
IDRange);

◆ GET_ASSEMBLER_HEADER

#define GET_ASSEMBLER_HEADER

Definition at line 1365 of file AMDGPUAsmParser.cpp.

◆ GET_MATCHER_IMPLEMENTATION

#define GET_MATCHER_IMPLEMENTATION

Definition at line 10908 of file AMDGPUAsmParser.cpp.

◆ GET_MNEMONIC_CHECKER

#define GET_MNEMONIC_CHECKER

Definition at line 10910 of file AMDGPUAsmParser.cpp.

◆ GET_MNEMONIC_SPELL_CHECKER

#define GET_MNEMONIC_SPELL_CHECKER

Definition at line 10909 of file AMDGPUAsmParser.cpp.

◆ GET_REGISTER_MATCHER

#define GET_REGISTER_MATCHER

Definition at line 1258 of file AMDGPUAsmParser.cpp.

◆ PARSE_BITS_ENTRY

#define PARSE_BITS_ENTRY ( FIELD,
ENTRY,
VALUE,
RANGE )
Value:
if (!isUInt<ENTRY##_WIDTH>(Val)) \
return OutOfRangeError(RANGE); \
AMDGPU::MCKernelDescriptor::bits_set(FIELD, VALUE, ENTRY##_SHIFT, ENTRY, \
#define FIELD(name)
#define ENTRY(ASMNAME, ENUM)
Func getContext().diagnose(DiagnosticInfoUnsupported(Func
constexpr bool isUInt(uint64_t x)
Checks if an unsigned integer fits into the given bit width.
Definition MathExtras.h:190

Typedef Documentation

◆ OperandIndices

Definition at line 3890 of file AMDGPUAsmParser.cpp.

Function Documentation

◆ addOptionalImmOperand()

void addOptionalImmOperand ( MCInst & Inst,
const OperandVector & Operands,
AMDGPUAsmParser::OptionalImmIndexMap & OptionalIdx,
AMDGPUOperand::ImmTy ImmT,
int64_t Default = 0,
std::optional< unsigned > InsertAt = std::nullopt )
static

◆ addSrcModifiersAndSrc()

void addSrcModifiersAndSrc ( MCInst & Inst,
const OperandVector & Operands,
unsigned i,
unsigned Opc,
AMDGPU::OpName OpName )
static

Definition at line 10165 of file AMDGPUAsmParser.cpp.

References Opc, and Operands.

◆ AMDGPUCheckMnemonic()

bool AMDGPUCheckMnemonic ( StringRef Mnemonic,
const FeatureBitset & AvailableFeatures,
unsigned VariantID )
static

◆ AMDGPUMnemonicSpellCheck()

std::string AMDGPUMnemonicSpellCheck ( StringRef S,
const FeatureBitset & FBS,
unsigned VariantID = 0 )
static

◆ applyMnemonicAliases()

void applyMnemonicAliases ( StringRef & Mnemonic,
const FeatureBitset & Features,
unsigned VariantID )
static

◆ canLosslesslyConvertToFPType()

◆ checkWriteLane()

◆ ConvertOmodDiv()

bool ConvertOmodDiv ( int64_t & Div)
static

Definition at line 9546 of file AMDGPUAsmParser.cpp.

◆ ConvertOmodMul()

bool ConvertOmodMul ( int64_t & Mul)
static

Definition at line 9538 of file AMDGPUAsmParser.cpp.

References Mul.

◆ cvtVOP3DstOpSelOnly()

◆ encodeBitmaskPerm()

◆ encodeCnt()

bool encodeCnt ( const AMDGPU::IsaVersion ISA,
int64_t & IntVal,
int64_t CntVal,
bool Saturate,
unsigned(* encode )(const IsaVersion &Version, unsigned, unsigned),
unsigned(* decode )(const IsaVersion &Version, unsigned) )
static

Definition at line 8249 of file AMDGPUAsmParser.cpp.

References decode(), llvm::encode(), and llvm::Failed().

◆ getAllVariants()

◆ getFltSemantics() [1/2]

const fltSemantics * getFltSemantics ( MVT VT)
static

Definition at line 2053 of file AMDGPUAsmParser.cpp.

References getFltSemantics(), and llvm::MVT::getScalarSizeInBits().

◆ getFltSemantics() [2/2]

◆ getOpFltSemantics()

const fltSemantics * getOpFltSemantics ( uint8_t OperandType)
static

Definition at line 2057 of file AMDGPUAsmParser.cpp.

References llvm::APFloatBase::BFloat(), llvm::APFloatBase::IEEEdouble(), llvm::APFloatBase::IEEEhalf(), llvm::APFloatBase::IEEEsingle(), llvm_unreachable, llvm::AMDGPU::OPERAND_INLINE_SPLIT_BARRIER_INT32, llvm::AMDGPU::OPERAND_KIMM16, llvm::AMDGPU::OPERAND_KIMM32, llvm::AMDGPU::OPERAND_KIMM64, llvm::AMDGPU::OPERAND_REG_IMM_BF16, llvm::AMDGPU::OPERAND_REG_IMM_FP16, llvm::AMDGPU::OPERAND_REG_IMM_FP32, llvm::AMDGPU::OPERAND_REG_IMM_FP64, llvm::AMDGPU::OPERAND_REG_IMM_INT16, llvm::AMDGPU::OPERAND_REG_IMM_INT32, llvm::AMDGPU::OPERAND_REG_IMM_INT64, llvm::AMDGPU::OPERAND_REG_IMM_NOINLINE_FP16, llvm::AMDGPU::OPERAND_REG_IMM_NOINLINE_V2FP16, llvm::AMDGPU::OPERAND_REG_IMM_V2BF16, llvm::AMDGPU::OPERAND_REG_IMM_V2FP16, llvm::AMDGPU::OPERAND_REG_IMM_V2FP16_SPLAT, llvm::AMDGPU::OPERAND_REG_IMM_V2FP32, llvm::AMDGPU::OPERAND_REG_IMM_V2FP64, llvm::AMDGPU::OPERAND_REG_IMM_V2INT16, llvm::AMDGPU::OPERAND_REG_IMM_V2INT32, llvm::AMDGPU::OPERAND_REG_IMM_V2INT64, llvm::AMDGPU::OPERAND_REG_INLINE_AC_FP32, llvm::AMDGPU::OPERAND_REG_INLINE_AC_FP64, llvm::AMDGPU::OPERAND_REG_INLINE_AC_INT32, llvm::AMDGPU::OPERAND_REG_INLINE_C_BF16, llvm::AMDGPU::OPERAND_REG_INLINE_C_FP16, llvm::AMDGPU::OPERAND_REG_INLINE_C_FP32, llvm::AMDGPU::OPERAND_REG_INLINE_C_FP64, llvm::AMDGPU::OPERAND_REG_INLINE_C_INT16, llvm::AMDGPU::OPERAND_REG_INLINE_C_INT32, llvm::AMDGPU::OPERAND_REG_INLINE_C_INT64, llvm::AMDGPU::OPERAND_REG_INLINE_C_V2BF16, llvm::AMDGPU::OPERAND_REG_INLINE_C_V2FP16, and llvm::AMDGPU::OPERAND_REG_INLINE_C_V2INT16.

◆ getRegClass()

int getRegClass ( RegisterKind Is,
unsigned RegWidth )
static

Definition at line 2648 of file AMDGPUAsmParser.cpp.

◆ getRegNum()

bool getRegNum ( StringRef Str,
unsigned & Num )
static

Definition at line 2930 of file AMDGPUAsmParser.cpp.

◆ getRegularRegInfo()

const RegInfo * getRegularRegInfo ( StringRef Str)
static

Definition at line 2923 of file AMDGPUAsmParser.cpp.

References Reg, and RegularRegisters.

◆ getSpecialRegForName()

MCRegister getSpecialRegForName ( StringRef RegName)
static

◆ getSrcOperandIndices()

OperandIndices getSrcOperandIndices ( unsigned Opcode,
bool AddMandatoryLiterals = false )
static

Definition at line 3894 of file AMDGPUAsmParser.cpp.

References llvm::AMDGPU::isVOPD().

◆ IsAGPROperand()

◆ isInlineableLiteralOp16()

bool isInlineableLiteralOp16 ( int64_t Val,
MVT VT,
bool HasInv2Pi )
static

◆ isInvalidVOPDY()

bool isInvalidVOPDY ( const OperandVector & Operands,
uint64_t InvalidOprIdx )
static

Definition at line 5964 of file AMDGPUAsmParser.cpp.

References assert(), Operands, and uint64_t.

◆ IsMovrelsSDWAOpcode()

bool IsMovrelsSDWAOpcode ( const unsigned Opcode)
static

Definition at line 4410 of file AMDGPUAsmParser.cpp.

◆ isRegOrImmWithInputMods()

bool isRegOrImmWithInputMods ( const MCInstrDesc & Desc,
unsigned OpNum )
static

Definition at line 9723 of file AMDGPUAsmParser.cpp.

References llvm::AMDGPU::OPERAND_INPUT_MODS, and llvm::MCOI::TIED_TO.

◆ isRegularReg()

bool isRegularReg ( RegisterKind Kind)
static

Definition at line 2918 of file AMDGPUAsmParser.cpp.

◆ IsRevOpcode()

bool IsRevOpcode ( const unsigned Opcode)
static

Definition at line 4614 of file AMDGPUAsmParser.cpp.

◆ isSafeTruncation()

bool isSafeTruncation ( int64_t Val,
unsigned Size )
static

Definition at line 2124 of file AMDGPUAsmParser.cpp.

References llvm::isIntN(), llvm::isUIntN(), and Size.

◆ LLVMInitializeAMDGPUAsmParser()

LLVM_ABI LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAMDGPUAsmParser ( )

Force static initialization.

Definition at line 10902 of file AMDGPUAsmParser.cpp.

References A(), B(), C(), llvm::getTheGCNLegacyTarget(), llvm::getTheGCNTarget(), and llvm::getTheR600Target().

Variable Documentation

◆ MAX_SRC_OPERANDS_NUM

unsigned MAX_SRC_OPERANDS_NUM = 6
constexpr

Definition at line 3889 of file AMDGPUAsmParser.cpp.

◆ RegularRegisters

RegInfo RegularRegisters[]
staticconstexpr
Initial value:
= {
{{"v"}, IS_VGPR}, {{"s"}, IS_SGPR}, {{"ttmp"}, IS_TTMP},
{{"acc"}, IS_AGPR}, {{"a"}, IS_AGPR},
}

Definition at line 2913 of file AMDGPUAsmParser.cpp.

Referenced by getRegularRegInfo().