MLIR 22.0.0git
GPUToSPIRV.cpp File Reference

Go to the source code of this file.

Classes

class  GPUAllReduceConversion
 Pattern to convert a gpu.all_reduce op into a SPIR-V group op. More...
class  GPUSubgroupReduceConversion
 Pattern to convert a gpu.subgroup_reduce op into a SPIR-V group op. More...

Functions

static spirv::FuncOp lowerAsEntryFunction (gpu::GPUFuncOp funcOp, const TypeConverter &typeConverter, ConversionPatternRewriter &rewriter, spirv::EntryPointABIAttr entryPointInfo, ArrayRef< spirv::InterfaceVarABIAttr > argABIInfo)
static LogicalResult getDefaultABIAttrs (const spirv::TargetEnv &targetEnv, gpu::GPUFuncOp funcOp, SmallVectorImpl< spirv::InterfaceVarABIAttr > &argABI)
 Populates argABI with spirv.interface_var_abi attributes for lowering gpu.func to spirv.func if no arguments have the attributes set already.
template<typename UniformOp, typename NonUniformOp>
static Value createGroupReduceOpImpl (OpBuilder &builder, Location loc, Value arg, bool isGroup, bool isUniform, std::optional< uint32_t > clusterSize)
static std::optional< ValuecreateGroupReduceOp (OpBuilder &builder, Location loc, Value arg, gpu::AllReduceOperation opType, bool isGroup, bool isUniform, std::optional< uint32_t > clusterSize)
static std::string makeVarName (spirv::ModuleOp moduleOp, llvm::Twine prefix)

Variables

static constexpr const char kSPIRVModule [] = "__spv__"

Function Documentation

◆ createGroupReduceOp()

std::optional< Value > createGroupReduceOp ( OpBuilder & builder,
Location loc,
Value arg,
gpu::AllReduceOperation opType,
bool isGroup,
bool isUniform,
std::optional< uint32_t > clusterSize )
static

◆ createGroupReduceOpImpl()

template<typename UniformOp, typename NonUniformOp>
Value createGroupReduceOpImpl ( OpBuilder & builder,
Location loc,
Value arg,
bool isGroup,
bool isUniform,
std::optional< uint32_t > clusterSize )
static

◆ getDefaultABIAttrs()

LogicalResult getDefaultABIAttrs ( const spirv::TargetEnv & targetEnv,
gpu::GPUFuncOp funcOp,
SmallVectorImpl< spirv::InterfaceVarABIAttr > & argABI )
static

Populates argABI with spirv.interface_var_abi attributes for lowering gpu.func to spirv.func if no arguments have the attributes set already.

Returns failure if any argument has the ABI attribute set already.

Definition at line 291 of file GPUToSPIRV.cpp.

References mlir::spirv::getInterfaceVarABIAttr(), mlir::spirv::getInterfaceVarABIAttrName(), mlir::spirv::needsInterfaceVarABIAttrs(), and success().

◆ lowerAsEntryFunction()

spirv::FuncOp lowerAsEntryFunction ( gpu::GPUFuncOp funcOp,
const TypeConverter & typeConverter,
ConversionPatternRewriter & rewriter,
spirv::EntryPointABIAttr entryPointInfo,
ArrayRef< spirv::InterfaceVarABIAttr > argABIInfo )
static

◆ makeVarName()

std::string makeVarName ( spirv::ModuleOp moduleOp,
llvm::Twine prefix )
static

Definition at line 711 of file GPUToSPIRV.cpp.

Variable Documentation

◆ kSPIRVModule

const char kSPIRVModule[] = "__spv__"
staticconstexpr

Definition at line 27 of file GPUToSPIRV.cpp.