LLVM: lib/Target/DirectX/DXILOpBuilder.cpp File Reference (original) (raw)
#include "[DXILOpBuilder.h](DXILOpBuilder%5F8h%5Fsource.html)"#include "[DXILConstants.h](DXILConstants%5F8h%5Fsource.html)"#include "[llvm/IR/Module.h](IR%5F2Module%5F8h%5Fsource.html)"#include "[llvm/Support/DXILABI.h](DXILABI%5F8h%5Fsource.html)"#include "[llvm/Support/ErrorHandling.h](llvm%5F2Support%5F2ErrorHandling%5F8h%5Fsource.html)"#include <optional>#include "DXILOperation.inc"
Go to the source code of this file.
| 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, ...) |
| #define | DXIL_VERSION(MAJOR, MINOR) |
| #define | DXIL_OP_ATTRIBUTES(OpCode, VersionMajor, VersionMinor, ...) |
◆ DXIL_OP_ATTRIBUTES
| #define DXIL_OP_ATTRIBUTES | ( | OpCode, |
|---|---|---|
| VersionMajor, | ||
| VersionMinor, | ||
| ... ) |
Value:
case computeSwitchEnum(OpCode, VersionMajor, VersionMinor): { \
Attributes |= Other; \
break; \
};
static constexpr uint64_t computeSwitchEnum(dxil::OpCode OpCode, uint16_t VersionMajor, uint16_t VersionMinor)
◆ DXIL_OP_FUNCTION_TYPE
| #define DXIL_OP_FUNCTION_TYPE | ( | OpCode, |
|---|---|---|
| RetType, | ||
| ... ) |
Value:
return FunctionType::get( \
getTypeFromOpParamType(RetType, Context, OverloadTy), \
getArgTypesFromOpParamTypes({__VA_ARGS__}, Context, OverloadTy), \
false);
static Type * getTypeFromOpParamType(OpParamType Kind, LLVMContext &Ctx, Type *OverloadTy)
static SmallVector< Type * > getArgTypesFromOpParamTypes(ArrayRef< dxil::OpParamType > Types, LLVMContext &Context, Type *OverloadTy)
◆ DXIL_OP_OPERATION_TABLE
#define DXIL_OP_OPERATION_TABLE
◆ DXIL_VERSION
| #define DXIL_VERSION | ( | MAJOR, |
|---|---|---|
| MINOR ) |
◆ computeSwitchEnum()
◆ constructOverloadName()
◆ constructOverloadTypeName()
◆ getArgTypesFromOpParamTypes()
◆ getBinaryWithCarryType()
◆ getCBufRetType()
◆ getDimensionsType()
◆ getDXILAttributes()
◆ getDXILOpFunctionType()
◆ getHandleType()
◆ getOrCreateStructType()
◆ getOverloadKind()
| OverloadKind getOverloadKind ( Type * Ty) | static |
|---|
Definition at line 83 of file DXILOpBuilder.cpp.
References llvm::cast(), llvm::Type::DoubleTyID, llvm::Type::FloatTyID, llvm::IntegerType::getBitWidth(), getOverloadKind(), llvm::Type::HalfTyID, llvm::Type::IntegerTyID, llvm_unreachable, llvm::Type::PointerTyID, llvm::Type::StructTyID, T, and llvm::Type::VoidTyID.
Referenced by getCBufRetType(), getOverloadKind(), getResRetType(), and llvm::dxil::DXILOpBuilder::tryCreateOp().
◆ getOverloadTypeName()
| const char * getOverloadTypeName ( OverloadKind Kind) | static |
|---|
◆ getPropIndex()
◆ getResBindType()
◆ getResPropsType()
◆ getResRetType()
◆ getShaderKindEnum()
Definition at line 334 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().
◆ getSplitDoubleType()
◆ getTypeFromOpParamType()
Definition at line 270 of file DXILOpBuilder.cpp.
References getBinaryWithCarryType(), getCBufRetType(), getDimensionsType(), 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(), getResBindType(), getResPropsType(), getResRetType(), getSplitDoubleType(), llvm::Type::getVoidTy(), and llvm_unreachable.
Referenced by getArgTypesFromOpParamTypes().