LLVM 20.0.0git
|
#include "DXILOpBuilder.h"
#include "DXILConstants.h"
#include "llvm/IR/Module.h"
#include "llvm/Support/DXILABI.h"
#include "llvm/Support/ErrorHandling.h"
#include <optional>
#include "DXILOperation.inc"
Go to the source code of this file.
Classes | |
struct | OpStage |
struct | OpAttribute |
struct | OpCodeProperty |
Namespaces | |
namespace | llvm |
This is an optimization pass for GlobalISel generic memory operations. | |
namespace | llvm::dxil |
Macros | |
#define | DXIL_OP_OPERATION_TABLE |
#define | DXIL_OP_FUNCTION_TYPE(OpCode, RetType, ...) |
Functions | |
static const char * | getOverloadTypeName (OverloadKind Kind) |
static OverloadKind | getOverloadKind (Type *Ty) |
static std::string | getTypeName (OverloadKind Kind, Type *Ty) |
static std::string | constructOverloadName (OverloadKind Kind, Type *Ty, const OpCodeProperty &Prop) |
static std::string | constructOverloadTypeName (OverloadKind Kind, StringRef TypeName) |
static StructType * | getOrCreateStructType (StringRef Name, ArrayRef< Type * > EltTys, LLVMContext &Ctx) |
static StructType * | getResRetType (Type *OverloadTy, LLVMContext &Ctx) |
static StructType * | getHandleType (LLVMContext &Ctx) |
static Type * | getTypeFromOpParamType (OpParamType Kind, LLVMContext &Ctx, Type *OverloadTy) |
static ShaderKind | getShaderKindEnum (Triple::EnvironmentType EnvType) |
static SmallVector< Type * > | getArgTypesFromOpParamTypes (ArrayRef< dxil::OpParamType > Types, LLVMContext &Context, Type *OverloadTy) |
static FunctionType * | getDXILOpFunctionType (dxil::OpCode OpCode, LLVMContext &Context, Type *OverloadTy) |
Construct DXIL function type. | |
template<typename T > | |
static std::optional< size_t > | getPropIndex (ArrayRef< T > PropList, const VersionTuple DXILVer) |
Get index of the property from PropList valid for the most recent DXIL version not greater than DXILVer. | |
static Error | llvm::dxil::makeOpError (dxil::OpCode OpCode, Twine Msg) |
Variables | |
constexpr StringLiteral | DXILOpNamePrefix = "dx.op." |
#define DXIL_OP_FUNCTION_TYPE | ( | OpCode, | |
RetType, | |||
... | |||
) |
#define DXIL_OP_OPERATION_TABLE |
Definition at line 165 of file DXILOpBuilder.cpp.
|
static |
Definition at line 169 of file DXILOpBuilder.cpp.
References DXILOpNamePrefix, and llvm::getTypeName().
Referenced by llvm::dxil::DXILOpBuilder::tryCreateOp().
|
static |
Definition at line 179 of file DXILOpBuilder.cpp.
References assert(), and getOverloadTypeName().
Referenced by getResRetType().
|
static |
Definition at line 283 of file DXILOpBuilder.cpp.
References llvm::SmallVectorImpl< T >::emplace_back(), llvm::Type::getInt32Ty(), and getTypeFromOpParamType().
|
static |
Construct DXIL function type.
This is the type of a function with the following prototype OverloadType dx.op.<opclass>.<return-type>(int opcode, ) <param-types> are constructed from types in Prop.
Definition at line 296 of file DXILOpBuilder.cpp.
References llvm_unreachable.
Referenced by llvm::dxil::DXILOpBuilder::tryCreateOp().
|
static |
Definition at line 206 of file DXILOpBuilder.cpp.
References getOrCreateStructType().
Referenced by getTypeFromOpParamType().
|
static |
Definition at line 188 of file DXILOpBuilder.cpp.
References llvm::StructType::create(), llvm::StructType::getTypeByName(), and Name.
Referenced by getHandleType(), and getResRetType().
|
static |
Definition at line 88 of file DXILOpBuilder.cpp.
References llvm::Type::DoubleTyID, llvm::Type::FloatTyID, llvm::IntegerType::getBitWidth(), llvm::Type::getTypeID(), llvm::Type::HalfTyID, llvm::Type::IntegerTyID, llvm_unreachable, llvm::Type::PointerTyID, llvm::Type::StructTyID, and llvm::Type::VoidTyID.
Referenced by getResRetType(), and llvm::dxil::DXILOpBuilder::tryCreateOp().
Definition at line 60 of file DXILOpBuilder.cpp.
References llvm_unreachable.
Referenced by constructOverloadTypeName(), and getTypeName().
|
static |
Get index of the property from PropList valid for the most recent DXIL version not greater than DXILVer.
PropList is expected to be sorted in ascending order of DXIL version.
Definition at line 316 of file DXILOpBuilder.cpp.
References llvm::ArrayRef< T >::rbegin(), llvm::ArrayRef< T >::rend(), and llvm::ArrayRef< T >::size().
Referenced by llvm::dxil::DXILOpBuilder::tryCreateOp().
|
static |
Definition at line 198 of file DXILOpBuilder.cpp.
References constructOverloadTypeName(), llvm::Type::getInt32Ty(), getOrCreateStructType(), and getOverloadKind().
Referenced by getTypeFromOpParamType().
|
static |
Definition at line 243 of file DXILOpBuilder.cpp.
References llvm::Triple::Amplification, llvm::Triple::AnyHit, llvm::Triple::Callable, llvm::Triple::ClosestHit, llvm::Triple::Compute, llvm::Triple::Domain, llvm::Triple::Geometry, llvm::Triple::Hull, llvm::Triple::Intersection, llvm::Triple::Library, llvm_unreachable, llvm::Triple::Mesh, llvm::Triple::Miss, llvm::Triple::Pixel, llvm::Triple::RayGeneration, and llvm::Triple::Vertex.
Referenced by llvm::dxil::DXILOpBuilder::tryCreateOp().
|
static |
Definition at line 211 of file DXILOpBuilder.cpp.
References llvm::Type::getDoubleTy(), llvm::Type::getFloatTy(), llvm::Type::getHalfTy(), getHandleType(), llvm::Type::getInt16Ty(), llvm::Type::getInt1Ty(), llvm::Type::getInt32Ty(), llvm::Type::getInt64Ty(), llvm::Type::getInt8Ty(), getResRetType(), llvm::Type::getVoidTy(), and llvm_unreachable.
Referenced by getArgTypesFromOpParamTypes().
|
static |
Definition at line 131 of file DXILOpBuilder.cpp.
References getOverloadTypeName(), OS, and llvm::Type::print().
|
constexpr |
Definition at line 22 of file DXILOpBuilder.cpp.
Referenced by constructOverloadName().