LLVM 20.0.0git
|
#include "DXILOpBuilder.h"
#include "DXILConstants.h"
#include "llvm/IR/IRBuilder.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 |
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 * | getTypeFromParameterKind (ParameterKind Kind, LLVMContext &Ctx, Type *OverloadTy) |
static ShaderKind | getShaderKindEnum (Triple::EnvironmentType EnvType) |
static FunctionType * | getDXILOpFunctionType (const OpCodeProperty *Prop, 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_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 |
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 288 of file DXILOpBuilder.cpp.
References assert(), llvm::SmallVectorImpl< T >::emplace_back(), llvm::Type::getInt32Ty(), getTypeFromParameterKind(), I, and OpCodeProperty::NumOfParameters.
Referenced by llvm::dxil::DXILOpBuilder::tryCreateOp().
|
static |
Definition at line 206 of file DXILOpBuilder.cpp.
References getOrCreateStructType().
Referenced by getTypeFromParameterKind().
|
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 89 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 61 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 314 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 getTypeFromParameterKind().
|
static |
Definition at line 245 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 getDXILOpFunctionType().
|
static |
Definition at line 129 of file DXILOpBuilder.cpp.
References getOverloadTypeName(), OS, and llvm::Type::print().
|
constexpr |
Definition at line 23 of file DXILOpBuilder.cpp.
Referenced by constructOverloadName().