|
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 | FPFastMathDefaultInfo |
| struct | FPFastMathDefaultInfoVector |
| 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 |
Enumerations | |
| enum | InstFlags { INST_PRINTER_WIDTH16 = 1 , INST_PRINTER_WIDTH64 = INST_PRINTER_WIDTH16 << 1 } |
| enum | AsmComments { ASM_PRINTER_WIDTH16 = MachineInstr::TAsmComments , ASM_PRINTER_WIDTH64 = ASM_PRINTER_WIDTH16 << 1 } |
| 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_Padding , 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 } |
| using llvm::SPIRV::InstrList = SmallVector<const MachineInstr *> |
Definition at line 128 of file SPIRVModuleAnalysis.h.
| using llvm::SPIRV::IRHandle = std::tuple<const void *, unsigned, unsigned> |
Definition at line 48 of file SPIRVIRMapping.h.
| using llvm::SPIRV::IRHandleMF = std::pair<IRHandle, const MachineFunction *> |
Definition at line 49 of file SPIRVIRMapping.h.
| using llvm::SPIRV::LocalToGlobalRegTable = std::map<Register, MCRegister> |
Definition at line 130 of file SPIRVModuleAnalysis.h.
| using llvm::SPIRV::MIHandle = std::tuple<const MachineInstr *, Register, size_t> |
Definition at line 42 of file SPIRVIRMapping.h.
Definition at line 131 of file SPIRVModuleAnalysis.h.
| Enumerator | |
|---|---|
| ASM_PRINTER_WIDTH16 | |
| ASM_PRINTER_WIDTH64 | |
Definition at line 63 of file SPIRVInstrInfo.h.
| Enumerator | |
|---|---|
| INST_PRINTER_WIDTH16 | |
| INST_PRINTER_WIDTH64 | |
Definition at line 246 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_Padding | |
| STK_ExplictLayoutType | |
| STK_Last | |
Definition at line 55 of file SPIRVIRMapping.h.
|
static |
Definition at line 36 of file SPIRVUtils.cpp.
References assert(), llvm::dyn_cast(), llvm::find_if(), llvm::FunctionType::get(), getConstInt(), llvm::MDNode::getNumOperands(), llvm::MDNode::getOperand(), llvm::FunctionType::getReturnType(), I, llvm::FunctionType::isVarArg(), N, llvm::NamedMDNode::op_end(), llvm::NamedMDNode::operands(), and llvm::FunctionType::params().
Referenced by getOriginalFunctionType(), and getOriginalFunctionType().
| ConvergenceRegionInfo llvm::SPIRV::getConvergenceRegions | ( | Function & | F, |
| DominatorTree & | DT, | ||
| LoopInfo & | LI ) |
Definition at line 307 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 104 of file SPIRVConvergenceRegionAnalysis.cpp.
Referenced by llvm::SPIRV::ConvergenceRegion::ConvergenceRegion().
| std::optional< const IntrinsicInst * > llvm::SPIRV::getConvergenceToken | ( | const BasicBlock * | BB | ) |
Definition at line 109 of file SPIRVConvergenceRegionAnalysis.cpp.
Definition at line 52 of file SPIRVMCTargetDesc.h.
Referenced by emitOperand(), and llvm::SPIRVInstPrinter::printOperand().
|
inline |
Definition at line 51 of file SPIRVIRMapping.h.
Referenced by llvm::SPIRVIRMapping::add(), and llvm::SPIRVIRMapping::findMI().
|
inline |
Definition at line 44 of file SPIRVIRMapping.h.
Referenced by llvm::SPIRVIRMapping::add().
| FunctionType * llvm::SPIRV::getOriginalFunctionType | ( | const CallBase & | CB | ) |
Definition at line 88 of file SPIRVUtils.cpp.
References extractFunctionTypeFromMetadata(), llvm::CallBase::getFunctionType(), llvm::Instruction::getModule(), llvm::Value::getName(), and llvm::Module::getNamedMetadata().
| FunctionType * llvm::SPIRV::getOriginalFunctionType | ( | const Function & | F | ) |
Definition at line 82 of file SPIRVUtils.cpp.
References extractFunctionTypeFromMetadata(), and F.
Referenced by getArgSPIRVType(), llvm::SPIRVGlobalRegistry::getDeducedGlobalValueType(), llvm::SPIRVCallLowering::lowerCall(), and llvm::SPIRVCallLowering::lowerFormalArguments().
|
inline |
Definition at line 171 of file SPIRVIRMapping.h.
References irhandle_ptr(), STK_MachineInstr, and to_hash().
Definition at line 162 of file SPIRVIRMapping.h.
References llvm::Type::getTypeID(), irhandle_ptr(), STK_Type, and llvm::unifyPtrType().
Referenced by llvm::SPIRVIRMapping::add(), llvm::SPIRVIRMapping::add(), llvm::SPIRVIRMapping::add(), llvm::SPIRVIRMapping::find(), llvm::SPIRVIRMapping::find(), llvm::SPIRVIRMapping::find(), llvm::SPIRVIRMapping::findMI(), llvm::SPIRVIRMapping::findMI(), llvm::SPIRVIRMapping::findMI(), and llvm::SPIRVGlobalRegistry::getOrCreateLayoutType().
Definition at line 167 of file SPIRVIRMapping.h.
References irhandle_ptr(), and STK_Value.
|
inline |
Definition at line 131 of file SPIRVIRMapping.h.
References STK_DeviceEvent.
Referenced by llvm::SPIRVGlobalRegistry::getOrCreateOpTypeDeviceEvent().
Definition at line 157 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 97 of file SPIRVIRMapping.h.
References llvm::Depth, and STK_Image.
|
inline |
Definition at line 153 of file SPIRVIRMapping.h.
References STK_Padding.
Referenced by llvm::SPIRVGlobalRegistry::getOrCreatePaddingType().
Definition at line 127 of file SPIRVIRMapping.h.
References STK_Pipe.
Referenced by llvm::SPIRVGlobalRegistry::getOrCreateOpTypePipe().
Definition at line 135 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 141 of file SPIRVIRMapping.h.
Referenced by handle(), handle(), handle(), and irhandle_explict_layout_type().
|
inline |
Definition at line 107 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 123 of file SPIRVIRMapping.h.
References STK_Sampler.
Referenced by llvm::SPIRVGlobalRegistry::getOrCreateOpTypeSampler().
|
inline |
Definition at line 146 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, | ||
| const CallBase & | CB ) |
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, | ||
| const CallBase & | CB ) |
Definition at line 3031 of file SPIRVBuiltins.cpp.
References assert(), Call, llvm::dbgs(), llvm::generate2DBlockIOINTELInst(), llvm::generateAPFixedPointInst(), llvm::generateAsyncCopy(), llvm::generateAtomicFloatingInst(), llvm::generateAtomicInst(), llvm::generateBarrierInst(), llvm::generateBindlessImageINTELInst(), llvm::generateBlockingPipesInst(), 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::generatePipeInst(), llvm::generatePredicatedLoadStoreInst(), 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 3418 of file SPIRVBuiltins.cpp.
References llvm::buildOpName(), llvm::dbgs(), llvm::dyn_cast(), llvm::MachineIRBuilder::getContext(), llvm::getCoopMatrType(), llvm::SPIRVGlobalRegistry::getImageType(), llvm::getInlineSpirvType(), llvm::getLayoutType(), llvm::MachineIRBuilder::getMRI(), llvm::getNonParameterizedType(), llvm::MachineRegisterInfo::getNumVirtRegs(), llvm::SPIRVGlobalRegistry::getOrCreateOpTypeDeviceEvent(), llvm::SPIRVGlobalRegistry::getOrCreatePaddingType(), llvm::getPipeType(), llvm::getSampledImageType(), llvm::getSamplerType(), llvm::SPIRVGlobalRegistry::getSPIRVTypeID(), llvm::Type::getStructName(), llvm::getVulkanBufferType(), LLVM_DEBUG, 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 2961 of file SPIRVBuiltins.cpp.
References Call, 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 3194 of file SPIRVBuiltins.cpp.
References parseBuiltinCallArgumentType(), parseBuiltinTypeStr(), and llvm::SmallVectorTemplateCommon< T, typename >::size().
| Type * llvm::SPIRV::parseBuiltinCallArgumentType | ( | StringRef | TypeStr, |
| LLVMContext & | Ctx ) |
Definition at line 3137 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 3369 of file SPIRVBuiltins.cpp.
References assert(), llvm::StringRef::contains(), llvm::StringRef::find(), llvm::TargetExtType::get(), llvm::isDigit(), llvm::parseTypeString(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::report_fatal_error(), llvm::SPIRV::OpenCLType::SpirvTypeLiteral, llvm::SplitString(), 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 3181 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 28 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 175 of file SPIRVIRMapping.h.
References llvm::isa(), and T.
Referenced by llvm::SPIRVIRMapping::add(), llvm::SPIRVIRMapping::find(), and llvm::SPIRVIRMapping::findMI().