MLIR 23.0.0git
AMDGPUOps.cpp File Reference
#include "mlir/Dialect/AMDGPU/IR/AMDGPUDialect.h"
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/Dialect/GPU/IR/GPUDialect.h"
#include "mlir/Dialect/LLVMIR/ROCDLDialect.h"
#include "mlir/Dialect/MemRef/IR/MemRef.h"
#include "mlir/Dialect/MemRef/Utils/MemRefUtils.h"
#include "mlir/Dialect/Utils/IndexingUtils.h"
#include "mlir/Dialect/Vector/IR/VectorOps.h"
#include "mlir/IR/Builders.h"
#include "mlir/IR/BuiltinTypes.h"
#include "mlir/IR/Diagnostics.h"
#include "mlir/IR/Matchers.h"
#include "mlir/IR/OpImplementation.h"
#include "mlir/IR/PatternMatch.h"
#include "mlir/IR/TypeUtilities.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallVector.h"
#include <algorithm>
#include <cstdint>
#include <limits>
#include <optional>
#include "mlir/Dialect/AMDGPU/IR/AMDGPU.cpp.inc"

Go to the source code of this file.

Macros

#define GET_OP_CLASSES

Functions

template<typename OpTy>
static LogicalResult verifyIndexCount (OpTy op, StringRef indexName, MemRefType memrefType, int64_t numIndices)
 Verifies that the number of indices matches the rank of the indexed memref, emitting an op error mentioning indexName on mismatch.
static FailureOr< MemRefType > getFatRawBufferTypeLike (MemRefType source, bool resetOffset)
 Convert the type source to one with the same sizes and strides - and offset, unless stripOffset is true, in which case the offset is reset to 0, if the offset should be reset but the layout of source isn't either the identity layout or a strided layout, this function fails.
static bool hasGlobalMemorySpace (Attribute memorySpace)
static bool hasWorkgroupMemorySpace (Attribute memorySpace)
static bool hasFatRawBufferMemorySpace (Attribute memorySpace)
template<typename T>
static LogicalResult verifyRawBufferOp (T &op)
static std::optional< uint32_t > getConstantUint32 (Value v)
template<typename OpType>
static bool staticallyOutOfBounds (OpType op)
static LogicalResult eraseRedundantLDSBarrierOps (LDSBarrierOp op, PatternRewriter &rewriter)
 Remove amdgpu.lds_barrier after amdgpu.lds_barrier.
template<typename BaseOp>
static LogicalResult verifyBase (BaseOp op)
template<typename DescriptorOp>
static LogicalResult verifyDescriptorOp (DescriptorOp op)
template<typename DescriptorOp, typename FoldAdaptor>
static OpFoldResult foldDescriptorOp (DescriptorOp op, FoldAdaptor adaptor)
template<typename T>
static LogicalResult verifyDsBarrierOpCommon (T &op)

Macro Definition Documentation

◆ GET_OP_CLASSES

#define GET_OP_CLASSES

Definition at line 1533 of file AMDGPUOps.cpp.

Function Documentation

◆ eraseRedundantLDSBarrierOps()

LogicalResult eraseRedundantLDSBarrierOps ( LDSBarrierOp op,
PatternRewriter & rewriter )
static

Remove amdgpu.lds_barrier after amdgpu.lds_barrier.

Definition at line 892 of file AMDGPUOps.cpp.

References mlir::RewriterBase::eraseOp(), and success().

◆ foldDescriptorOp()

template<typename DescriptorOp, typename FoldAdaptor>
OpFoldResult foldDescriptorOp ( DescriptorOp op,
FoldAdaptor adaptor )
static

◆ getConstantUint32()

std::optional< uint32_t > getConstantUint32 ( Value v)
static

◆ getFatRawBufferTypeLike()

FailureOr< MemRefType > getFatRawBufferTypeLike ( MemRefType source,
bool resetOffset )
static

Convert the type source to one with the same sizes and strides - and offset, unless stripOffset is true, in which case the offset is reset to 0, if the offset should be reset but the layout of source isn't either the identity layout or a strided layout, this function fails.

Definition at line 86 of file AMDGPUOps.cpp.

References mlir::computeSuffixProduct(), mlir::AffineMap::getMultiDimIdentityMap(), mlir::MemRefType::Builder::setLayout(), and mlir::MemRefType::Builder::setMemorySpace().

◆ hasFatRawBufferMemorySpace()

bool hasFatRawBufferMemorySpace ( Attribute memorySpace)
static

Definition at line 173 of file AMDGPUOps.cpp.

◆ hasGlobalMemorySpace()

bool hasGlobalMemorySpace ( Attribute memorySpace)
static

Definition at line 153 of file AMDGPUOps.cpp.

Referenced by verifyBase(), and verifyRawBufferOp().

◆ hasWorkgroupMemorySpace()

bool hasWorkgroupMemorySpace ( Attribute memorySpace)
static

Definition at line 163 of file AMDGPUOps.cpp.

Referenced by verifyBase(), verifyDescriptorOp(), and verifyDsBarrierOpCommon().

◆ staticallyOutOfBounds()

template<typename OpType>
bool staticallyOutOfBounds ( OpType op)
static

Definition at line 234 of file AMDGPUOps.cpp.

References getConstantUint32(), and result.

◆ verifyBase()

template<typename BaseOp>
LogicalResult verifyBase ( BaseOp op)
static

◆ verifyDescriptorOp()

template<typename DescriptorOp>
LogicalResult verifyDescriptorOp ( DescriptorOp op)
static

Definition at line 1209 of file AMDGPUOps.cpp.

References hasWorkgroupMemorySpace(), success(), and verifyIndexCount().

◆ verifyDsBarrierOpCommon()

template<typename T>
LogicalResult verifyDsBarrierOpCommon ( T & op)
static

Definition at line 1461 of file AMDGPUOps.cpp.

References hasWorkgroupMemorySpace(), success(), and verifyIndexCount().

◆ verifyIndexCount()

template<typename OpTy>
LogicalResult verifyIndexCount ( OpTy op,
StringRef indexName,
MemRefType memrefType,
int64_t numIndices )
static

Verifies that the number of indices matches the rank of the indexed memref, emitting an op error mentioning indexName on mismatch.

Definition at line 44 of file AMDGPUOps.cpp.

References success().

Referenced by verifyBase(), verifyDescriptorOp(), verifyDsBarrierOpCommon(), and verifyRawBufferOp().

◆ verifyRawBufferOp()

template<typename T>
LogicalResult verifyRawBufferOp ( T & op)
static

Definition at line 187 of file AMDGPUOps.cpp.

References hasGlobalMemorySpace(), and verifyIndexCount().