LLVM 22.0.0git
|
Classes | |
struct | AtomicFloatingBuiltin |
struct | BuiltinType |
struct | CapabilityEntry |
class | ConvergenceRegion |
class | ConvergenceRegionInfo |
struct | ConvertBuiltin |
struct | DemangledBuiltin |
struct | EnvironmentEntry |
struct | ExtendedBuiltin |
struct | ExtensionEntry |
struct | GetBuiltin |
struct | GroupBuiltin |
struct | GroupUniformBuiltin |
union | ImageAttrs |
struct | ImageQueryBuiltin |
struct | IncomingCall |
struct | IntegerDotProductBuiltin |
struct | IntelSubgroupsBuiltin |
struct | ModuleAnalysisInfo |
struct | NativeBuiltin |
struct | OpenCLType |
struct | RequirementHandler |
struct | Requirements |
struct | SymbolicOperand |
struct | VectorLoadStoreBuiltin |
Typedefs | |
using | MIHandle = std::tuple< const MachineInstr *, Register, size_t > |
using | IRHandle = std::tuple< const void *, unsigned, unsigned > |
using | IRHandleMF = std::pair< IRHandle, const MachineFunction * > |
using | InstrList = SmallVector< const MachineInstr * > |
using | LocalToGlobalRegTable = std::map< Register, MCRegister > |
using | RegisterAliasMapTy = std::map< const MachineFunction *, LocalToGlobalRegTable > |
Enumerations | |
enum | InstFlags { INST_PRINTER_WIDTH16 = 1 } |
enum | AsmComments { ASM_PRINTER_WIDTH16 = MachineInstr::TAsmComments } |
enum | SpecialTypeKind { STK_Empty = 0 , STK_Image , STK_SampledImage , STK_Sampler , STK_Pipe , STK_DeviceEvent , STK_ElementPointer , STK_Type , STK_Value , STK_MachineInstr , STK_VkBuffer , STK_ExplictLayoutType , STK_Last = -1 } |
enum | ModuleSectionType { MB_EntryPoints , MB_DebugNames , MB_DebugStrings , MB_DebugModuleProcessed , MB_AliasingInsts , MB_Annotations , MB_TypeConstVars , MB_NonSemanticGlobalDI , MB_ExtFuncDecls , NUM_MODULE_SECTIONS } |
Functions | |
std::optional< IntrinsicInst * > | getConvergenceToken (BasicBlock *BB) |
std::optional< const IntrinsicInst * > | getConvergenceToken (const BasicBlock *BB) |
ConvergenceRegionInfo | getConvergenceRegions (Function &F, DominatorTree &DT, LoopInfo &LI) |
unsigned | getIDFromRegister (unsigned Reg) |
std::string | lookupBuiltinNameHelper (StringRef DemangledCall, FPDecorationId *DecorationId) |
Parses the name part of the demangled builtin call. | |
std::tuple< int, unsigned, unsigned > | mapBuiltinToOpcode (const StringRef DemangledCall, SPIRV::InstructionSet::InstructionSet Set) |
Helper function for finding a builtin function attributes by a demangled function name. | |
std::optional< bool > | lowerBuiltin (const StringRef DemangledCall, SPIRV::InstructionSet::InstructionSet Set, MachineIRBuilder &MIRBuilder, const Register OrigRet, const Type *OrigRetTy, const SmallVectorImpl< Register > &Args, SPIRVGlobalRegistry *GR) |
Type * | parseBuiltinCallArgumentType (StringRef TypeStr, LLVMContext &Ctx) |
bool | parseBuiltinTypeStr (SmallVector< StringRef, 10 > &BuiltinArgsTypeStrs, const StringRef DemangledCall, LLVMContext &Ctx) |
Type * | parseBuiltinCallArgumentBaseType (const StringRef DemangledCall, unsigned ArgIdx, LLVMContext &Ctx) |
Parses the provided ArgIdx argument base type in the DemangledCall skeleton. | |
TargetExtType * | parseBuiltinTypeNameToTargetExtType (std::string TypeName, LLVMContext &Context) |
Translates a string representing a SPIR-V or OpenCL builtin type to a TargetExtType that can be further lowered with lowerBuiltinType(). | |
SPIRVType * | lowerBuiltinType (const Type *OpaqueType, SPIRV::AccessQualifier::AccessQualifier AccessQual, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR) |
std::optional< bool > | lowerBuiltin (const StringRef DemangledCall, InstructionSet::InstructionSet Set, MachineIRBuilder &MIRBuilder, const Register OrigRet, const Type *OrigRetTy, const SmallVectorImpl< Register > &Args, SPIRVGlobalRegistry *GR) |
Lowers a builtin function call using the provided DemangledCall skeleton and external instruction Set . | |
SPIRVType * | lowerBuiltinType (const Type *Type, AccessQualifier::AccessQualifier AccessQual, MachineIRBuilder &MIRBuilder, SPIRVGlobalRegistry *GR) |
Handles the translation of the provided special opaque/builtin type Type to SPIR-V type. | |
size_t | to_hash (const MachineInstr *MI) |
MIHandle | getMIKey (const MachineInstr *MI) |
IRHandleMF | getIRHandleMF (IRHandle Handle, const MachineFunction *MF) |
IRHandle | irhandle_image (const Type *SampledTy, unsigned Dim, unsigned Depth, unsigned Arrayed, unsigned MS, unsigned Sampled, unsigned ImageFormat, unsigned AQ=0) |
IRHandle | irhandle_sampled_image (const Type *SampledTy, const MachineInstr *ImageTy) |
IRHandle | irhandle_sampler () |
IRHandle | irhandle_pipe (uint8_t AQ) |
IRHandle | irhandle_event () |
IRHandle | irhandle_pointee (const Type *ElementType, unsigned AddressSpace) |
IRHandle | irhandle_ptr (const void *Ptr, unsigned Arg, enum SpecialTypeKind STK) |
IRHandle | irhandle_vkbuffer (const Type *ElementType, StorageClass::StorageClass SC, bool IsWriteable) |
IRHandle | irhandle_explict_layout_type (const Type *Ty) |
IRHandle | handle (const Type *Ty) |
IRHandle | handle (const Value *V) |
IRHandle | handle (const MachineInstr *KeyMI) |
bool | type_has_layout_decoration (const Type *T) |
using llvm::SPIRV::InstrList = typedef SmallVector<const MachineInstr *> |
Definition at line 128 of file SPIRVModuleAnalysis.h.
using llvm::SPIRV::IRHandle = typedef std::tuple<const void *, unsigned, unsigned> |
Definition at line 50 of file SPIRVIRMapping.h.
using llvm::SPIRV::IRHandleMF = typedef std::pair<IRHandle, const MachineFunction *> |
Definition at line 51 of file SPIRVIRMapping.h.
using llvm::SPIRV::LocalToGlobalRegTable = typedef std::map<Register, MCRegister> |
Definition at line 130 of file SPIRVModuleAnalysis.h.
using llvm::SPIRV::MIHandle = typedef std::tuple<const MachineInstr *, Register, size_t> |
Definition at line 44 of file SPIRVIRMapping.h.
using llvm::SPIRV::RegisterAliasMapTy = typedef std::map<const MachineFunction *, LocalToGlobalRegTable> |
Definition at line 131 of file SPIRVModuleAnalysis.h.
Enumerator | |
---|---|
ASM_PRINTER_WIDTH16 |
Definition at line 61 of file SPIRVInstrInfo.h.
Enumerator | |
---|---|
INST_PRINTER_WIDTH16 |
Definition at line 241 of file SPIRVBaseInfo.h.
Enumerator | |
---|---|
MB_EntryPoints | |
MB_DebugNames | |
MB_DebugStrings | |
MB_DebugModuleProcessed | |
MB_AliasingInsts | |
MB_Annotations | |
MB_TypeConstVars | |
MB_NonSemanticGlobalDI | |
MB_ExtFuncDecls | |
NUM_MODULE_SECTIONS |
Definition at line 31 of file SPIRVModuleAnalysis.h.
Enumerator | |
---|---|
STK_Empty | |
STK_Image | |
STK_SampledImage | |
STK_Sampler | |
STK_Pipe | |
STK_DeviceEvent | |
STK_ElementPointer | |
STK_Type | |
STK_Value | |
STK_MachineInstr | |
STK_VkBuffer | |
STK_ExplictLayoutType | |
STK_Last |
Definition at line 57 of file SPIRVIRMapping.h.
ConvergenceRegionInfo llvm::SPIRV::getConvergenceRegions | ( | Function & | F, |
DominatorTree & | DT, | ||
LoopInfo & | LI | ||
) |
Definition at line 306 of file SPIRVConvergenceRegionAnalysis.cpp.
References F.
Referenced by llvm::SPIRVConvergenceRegionAnalysis::run(), and llvm::SPIRVConvergenceRegionAnalysisWrapperPass::runOnFunction().
std::optional< IntrinsicInst * > llvm::SPIRV::getConvergenceToken | ( | BasicBlock * | BB | ) |
Definition at line 103 of file SPIRVConvergenceRegionAnalysis.cpp.
Referenced by llvm::SPIRV::ConvergenceRegion::ConvergenceRegion().
std::optional< const IntrinsicInst * > llvm::SPIRV::getConvergenceToken | ( | const BasicBlock * | BB | ) |
Definition at line 108 of file SPIRVConvergenceRegionAnalysis.cpp.
Definition at line 53 of file SPIRVMCTargetDesc.h.
Referenced by emitOperand(), and llvm::SPIRVInstPrinter::printOperand().
|
inline |
Definition at line 53 of file SPIRVIRMapping.h.
Referenced by llvm::SPIRVIRMapping::add(), and llvm::SPIRVIRMapping::findMI().
|
inline |
Definition at line 46 of file SPIRVIRMapping.h.
Referenced by llvm::SPIRVIRMapping::add().
|
inline |
Definition at line 168 of file SPIRVIRMapping.h.
References irhandle_ptr(), STK_MachineInstr, and to_hash().
Definition at line 159 of file SPIRVIRMapping.h.
References llvm::Type::getTypeID(), irhandle_ptr(), STK_Type, and llvm::unifyPtrType().
Referenced by llvm::SPIRVIRMapping::add(), llvm::SPIRVIRMapping::find(), llvm::SPIRVIRMapping::findMI(), and llvm::SPIRVGlobalRegistry::getOrCreateLayoutType().
Definition at line 164 of file SPIRVIRMapping.h.
References irhandle_ptr(), and STK_Value.
|
inline |
Definition at line 132 of file SPIRVIRMapping.h.
References STK_DeviceEvent.
Referenced by llvm::SPIRVGlobalRegistry::getOrCreateOpTypeDeviceEvent().
Definition at line 154 of file SPIRVIRMapping.h.
References llvm::Type::getTypeID(), irhandle_ptr(), STK_ExplictLayoutType, and llvm::unifyPtrType().
Referenced by llvm::SPIRVIRMapping::add(), llvm::SPIRVIRMapping::find(), and llvm::SPIRVIRMapping::findMI().
|
inline |
Definition at line 98 of file SPIRVIRMapping.h.
References llvm::Depth, and STK_Image.
Definition at line 128 of file SPIRVIRMapping.h.
References STK_Pipe.
Referenced by llvm::SPIRVGlobalRegistry::getOrCreateOpTypePipe().
Definition at line 136 of file SPIRVIRMapping.h.
References STK_ElementPointer, and llvm::unifyPtrType().
Referenced by llvm::SPIRVIRMapping::add(), llvm::SPIRVIRMapping::find(), and llvm::SPIRVIRMapping::findMI().
|
inline |
Definition at line 142 of file SPIRVIRMapping.h.
References Ptr.
Referenced by handle(), and irhandle_explict_layout_type().
|
inline |
Definition at line 108 of file SPIRVIRMapping.h.
References assert(), llvm::MachineOperand::getImm(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), STK_SampledImage, and llvm::SPIRV::ImageAttrs::Val.
Referenced by llvm::SPIRVGlobalRegistry::getOrCreateOpTypeSampledImage().
|
inline |
Definition at line 124 of file SPIRVIRMapping.h.
References STK_Sampler.
Referenced by llvm::SPIRVGlobalRegistry::getOrCreateOpTypeSampler().
|
inline |
Definition at line 147 of file SPIRVIRMapping.h.
References STK_VkBuffer.
Referenced by llvm::SPIRVGlobalRegistry::getOrCreateVulkanBufferType().
std::string llvm::SPIRV::lookupBuiltinNameHelper | ( | StringRef | DemangledCall, |
FPDecorationId * | DecorationId | ||
) |
Parses the name part of the demangled builtin call.
Definition at line 186 of file SPIRVBuiltins.cpp.
References llvm::demangledPostfixToDecorationId(), llvm::StringRef::rfind(), llvm::StringRef::size(), llvm::StringRef::starts_with(), and llvm::StringRef::substr().
Referenced by llvm::lookupBuiltin().
std::optional< bool > llvm::SPIRV::lowerBuiltin | ( | const StringRef | DemangledCall, |
InstructionSet::InstructionSet | Set, | ||
MachineIRBuilder & | MIRBuilder, | ||
const Register | OrigRet, | ||
const Type * | OrigRetTy, | ||
const SmallVectorImpl< Register > & | Args, | ||
SPIRVGlobalRegistry * | GR | ||
) |
Lowers a builtin function call using the provided DemangledCall
skeleton and external instruction Set
.
DemangledCall
is the skeleton of the lowered builtin function call. Set
is the external instruction set containing the given builtin. OrigRet
is the single original virtual return register if defined, Register(0) otherwise. OrigRetTy
is the type of the OrigRet
. Args
are the arguments of the lowered builtin call.
std::optional< bool > llvm::SPIRV::lowerBuiltin | ( | const StringRef | DemangledCall, |
SPIRV::InstructionSet::InstructionSet | Set, | ||
MachineIRBuilder & | MIRBuilder, | ||
const Register | OrigRet, | ||
const Type * | OrigRetTy, | ||
const SmallVectorImpl< Register > & | Args, | ||
SPIRVGlobalRegistry * | GR | ||
) |
Definition at line 2857 of file SPIRVBuiltins.cpp.
References assert(), llvm::dbgs(), llvm::generate2DBlockIOINTELInst(), llvm::generateAsyncCopy(), llvm::generateAtomicFloatingInst(), llvm::generateAtomicInst(), llvm::generateBarrierInst(), llvm::generateBindlessImageINTELInst(), llvm::generateBuiltinVar(), llvm::generateCastToPtrInst(), llvm::generateConstructInst(), llvm::generateConvertInst(), llvm::generateCoopMatrInst(), llvm::generateDotOrFMulInst(), llvm::generateEnqueueInst(), llvm::generateExtendedBitOpsInst(), llvm::generateExtInst(), llvm::generateGetQueryInst(), llvm::generateGroupInst(), llvm::generateGroupUniformInst(), llvm::generateICarryBorrowInst(), llvm::generateImageMiscQueryInst(), llvm::generateImageSizeQueryInst(), llvm::generateIntelSubgroupsInst(), llvm::generateKernelClockInst(), llvm::generateLoadStoreInst(), llvm::generateReadImageInst(), llvm::generateRelationalInst(), llvm::generateSampleImageInst(), llvm::generateSelectInst(), llvm::generateSpecConstantInst(), llvm::generateTernaryBitwiseFunctionINTELInst(), llvm::generateVectorLoadStoreInst(), llvm::generateWaveInst(), llvm::generateWriteImageInst(), llvm::SPIRVGlobalRegistry::getSPIRVTypeForVReg(), LLVM_DEBUG, and llvm::lookupBuiltin().
Referenced by llvm::SPIRVCallLowering::lowerCall().
SPIRVType * llvm::SPIRV::lowerBuiltinType | ( | const Type * | OpaqueType, |
SPIRV::AccessQualifier::AccessQualifier | AccessQual, | ||
MachineIRBuilder & | MIRBuilder, | ||
SPIRVGlobalRegistry * | GR | ||
) |
Definition at line 3236 of file SPIRVBuiltins.cpp.
References llvm::buildOpName(), llvm::dbgs(), llvm::MachineIRBuilder::getContext(), llvm::getCoopMatrType(), llvm::SPIRVGlobalRegistry::getImageType(), llvm::getInlineSpirvType(), llvm::getLayoutType(), llvm::MachineIRBuilder::getMRI(), llvm::getNonParameterizedType(), llvm::MachineRegisterInfo::getNumVirtRegs(), llvm::SPIRVGlobalRegistry::getOrCreateOpTypeDeviceEvent(), llvm::getPipeType(), llvm::getSampledImageType(), llvm::getSamplerType(), llvm::SPIRVGlobalRegistry::getSPIRVTypeID(), llvm::Type::getStructName(), llvm::getVulkanBufferType(), LLVM_DEBUG, Name, llvm::SPIRV::BuiltinType::Opcode, parseBuiltinTypeNameToTargetExtType(), llvm::report_fatal_error(), and llvm::StringRef::str().
SPIRVType * llvm::SPIRV::lowerBuiltinType | ( | const Type * | Type, |
AccessQualifier::AccessQualifier | AccessQual, | ||
MachineIRBuilder & | MIRBuilder, | ||
SPIRVGlobalRegistry * | GR | ||
) |
Handles the translation of the provided special opaque/builtin type Type
to SPIR-V type.
Generates the corresponding machine instructions for the target type or gets the already existing OpType<...> register from the global registry GR
.
Type
is the special opaque/builtin type to be lowered.
std::tuple< int, unsigned, unsigned > llvm::SPIRV::mapBuiltinToOpcode | ( | const StringRef | DemangledCall, |
SPIRV::InstructionSet::InstructionSet | Set | ||
) |
Helper function for finding a builtin function attributes by a demangled function name.
Defined in SPIRVBuiltins.cpp.
Definition at line 2787 of file SPIRVBuiltins.cpp.
References llvm::lookupBuiltin(), and Reg.
Type * llvm::SPIRV::parseBuiltinCallArgumentBaseType | ( | const StringRef | DemangledCall, |
unsigned | ArgIdx, | ||
LLVMContext & | Ctx | ||
) |
Parses the provided ArgIdx
argument base type in the DemangledCall
skeleton.
A base type is either a basic type (e.g. i32 for int), pointer element type (e.g. i8 for char*), or builtin type (TargetExtType).
DemangledCall
is the skeleton of the lowered builtin function call. ArgIdx
is the index of the argument to parse.
Definition at line 3012 of file SPIRVBuiltins.cpp.
References parseBuiltinCallArgumentType(), parseBuiltinTypeStr(), and llvm::SmallVectorBase< Size_T >::size().
Type * llvm::SPIRV::parseBuiltinCallArgumentType | ( | StringRef | TypeStr, |
LLVMContext & | Ctx | ||
) |
Definition at line 2955 of file SPIRVBuiltins.cpp.
References assert(), llvm::StringRef::consume_back(), llvm::StringRef::consume_front(), llvm::StringRef::ends_with(), llvm::StringRef::find(), llvm::StringRef::find_first_of(), llvm::VectorType::get(), llvm::StringRef::getAsInteger(), llvm::Type::getInt8Ty(), llvm::hasBuiltinTypePrefix(), llvm::parseBasicTypeName(), parseBuiltinTypeNameToTargetExtType(), llvm::StringRef::slice(), llvm::StringRef::str(), and llvm::StringRef::substr().
Referenced by parseBuiltinCallArgumentBaseType().
TargetExtType * llvm::SPIRV::parseBuiltinTypeNameToTargetExtType | ( | std::string | TypeName, |
LLVMContext & | Context | ||
) |
Translates a string representing a SPIR-V or OpenCL builtin type to a TargetExtType that can be further lowered with lowerBuiltinType().
TypeName
is the full string representation of the SPIR-V or OpenCL builtin type.
Definition at line 3187 of file SPIRVBuiltins.cpp.
References assert(), llvm::StringRef::contains(), Context, llvm::StringRef::find(), llvm::TargetExtType::get(), isDigit(), llvm::parseTypeString(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::report_fatal_error(), llvm::SPIRV::OpenCLType::SpirvTypeLiteral, llvm::StringRef::starts_with(), and llvm::StringRef::substr().
Referenced by llvm::SPIRVGlobalRegistry::getOrCreateSPIRVTypeByName(), lowerBuiltinType(), and parseBuiltinCallArgumentType().
bool llvm::SPIRV::parseBuiltinTypeStr | ( | SmallVector< StringRef, 10 > & | BuiltinArgsTypeStrs, |
const StringRef | DemangledCall, | ||
LLVMContext & | Ctx | ||
) |
Definition at line 2999 of file SPIRVBuiltins.cpp.
References llvm::StringRef::find(), llvm::StringRef::npos, llvm::StringRef::slice(), and llvm::StringRef::split().
Referenced by llvm::generateDotOrFMulInst(), and parseBuiltinCallArgumentBaseType().
|
inline |
Definition at line 30 of file SPIRVIRMapping.h.
References llvm::MachineOperand::getCImm(), llvm::MachineOperand::getFPImm(), llvm::MachineOperand::getType(), H, llvm::hash_combine(), I, MI, llvm::MachineOperand::MO_CImmediate, and llvm::MachineOperand::MO_FPImmediate.
Referenced by llvm::SPIRVIRMapping::findMI(), getMIKey(), and handle().
Definition at line 172 of file SPIRVIRMapping.h.
Referenced by llvm::SPIRVIRMapping::add(), llvm::SPIRVIRMapping::find(), and llvm::SPIRVIRMapping::findMI().