MLIR 22.0.0git
SPIRVDialect.cpp File Reference
#include "mlir/Dialect/SPIRV/IR/SPIRVDialect.h"
#include "SPIRVParsingUtils.h"
#include "mlir/Dialect/GPU/IR/CompilationInterfaces.h"
#include "mlir/Dialect/SPIRV/IR/SPIRVOps.h"
#include "mlir/Dialect/SPIRV/IR/SPIRVTypes.h"
#include "mlir/Dialect/SPIRV/IR/TargetAndABI.h"
#include "mlir/Dialect/UB/IR/UBOps.h"
#include "mlir/IR/Builders.h"
#include "mlir/IR/BuiltinTypes.h"
#include "mlir/IR/DialectImplementation.h"
#include "mlir/IR/MLIRContext.h"
#include "mlir/Parser/Parser.h"
#include "mlir/Transforms/InliningUtils.h"
#include "llvm/ADT/Sequence.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/TypeSwitch.h"
#include "mlir/Dialect/SPIRV/IR/SPIRVOpsDialect.cpp.inc"
#include "mlir/Dialect/SPIRV/IR/SPIRVOps.cpp.inc"

Go to the source code of this file.

Macros

#define GET_OP_LIST

Functions

static bool containsReturn (Region &region)
 Returns true if the given region contains spirv.Return or spirv.ReturnValue ops.
template<typename ValTy>
static std::optional< ValTy > parseAndVerify (SPIRVDialect const &dialect, DialectAsmParser &parser)
template<>
std::optional< TypeparseAndVerify< Type > (SPIRVDialect const &dialect, DialectAsmParser &parser)
template<>
std::optional< unsignedparseAndVerify< unsigned > (SPIRVDialect const &dialect, DialectAsmParser &parser)
static Type parseAndVerifyType (SPIRVDialect const &dialect, DialectAsmParser &parser)
static Type parseAndVerifyMatrixType (SPIRVDialect const &dialect, DialectAsmParser &parser)
static Type parseAndVerifySampledImageType (SPIRVDialect const &dialect, DialectAsmParser &parser)
static LogicalResult parseOptionalArrayStride (const SPIRVDialect &dialect, DialectAsmParser &parser, unsigned &stride)
 Parses an optional , stride = N assembly segment.
static Type parseArrayType (SPIRVDialect const &dialect, DialectAsmParser &parser)
static Type parseCooperativeMatrixType (SPIRVDialect const &dialect, DialectAsmParser &parser)
static Type parseTensorArmType (SPIRVDialect const &dialect, DialectAsmParser &parser)
static Type parsePointerType (SPIRVDialect const &dialect, DialectAsmParser &parser)
static Type parseRuntimeArrayType (SPIRVDialect const &dialect, DialectAsmParser &parser)
static Type parseMatrixType (SPIRVDialect const &dialect, DialectAsmParser &parser)
template<>
std::optional< TypeparseAndVerify< Type > (SPIRVDialect const &dialect, DialectAsmParser &parser)
template<typename IntTy>
static std::optional< IntTy > parseAndVerifyInteger (SPIRVDialect const &dialect, DialectAsmParser &parser)
template<>
std::optional< unsignedparseAndVerify< unsigned > (SPIRVDialect const &dialect, DialectAsmParser &parser)
static Type parseImageType (SPIRVDialect const &dialect, DialectAsmParser &parser)
static Type parseSampledImageType (SPIRVDialect const &dialect, DialectAsmParser &parser)
static ParseResult parseStructMemberDecorations (SPIRVDialect const &dialect, DialectAsmParser &parser, ArrayRef< Type > memberTypes, SmallVectorImpl< StructType::OffsetInfo > &offsetInfo, SmallVectorImpl< StructType::MemberDecorationInfo > &memberDecorationInfo)
static Type parseStructType (SPIRVDialect const &dialect, DialectAsmParser &parser)
static void print (ArrayType type, DialectAsmPrinter &os)
static void print (RuntimeArrayType type, DialectAsmPrinter &os)
static void print (PointerType type, DialectAsmPrinter &os)
static void print (ImageType type, DialectAsmPrinter &os)
static void print (SampledImageType type, DialectAsmPrinter &os)
static void print (StructType type, DialectAsmPrinter &os)
static void print (CooperativeMatrixType type, DialectAsmPrinter &os)
static void print (MatrixType type, DialectAsmPrinter &os)
static void print (TensorArmType type, DialectAsmPrinter &os)
static LogicalResult verifyRegionAttribute (Location loc, Type valueType, NamedAttribute attribute)
 Verifies the given SPIR-V attribute attached to a value of the given valueType is valid.

Macro Definition Documentation

◆ GET_OP_LIST

#define GET_OP_LIST

Function Documentation

◆ containsReturn()

bool containsReturn ( Region & region)
inlinestatic

Returns true if the given region contains spirv.Return or spirv.ReturnValue ops.

Definition at line 43 of file SPIRVDialect.cpp.

References mlir::Block::getTerminator().

◆ parseAndVerify()

template<typename ValTy>
std::optional< ValTy > parseAndVerify ( SPIRVDialect const & dialect,
DialectAsmParser & parser )
static

◆ parseAndVerify< Type >() [1/2]

template<>
std::optional< Type > parseAndVerify< Type > ( SPIRVDialect const & dialect,
DialectAsmParser & parser )

Definition at line 516 of file SPIRVDialect.cpp.

◆ parseAndVerify< Type >() [2/2]

template<>
std::optional< Type > parseAndVerify< Type > ( SPIRVDialect const & dialect,
DialectAsmParser & parser )

Definition at line 516 of file SPIRVDialect.cpp.

◆ parseAndVerify< unsigned >() [1/2]

template<>
std::optional< unsigned > parseAndVerify< unsigned > ( SPIRVDialect const & dialect,
DialectAsmParser & parser )

Definition at line 541 of file SPIRVDialect.cpp.

References mlir::AsmParser::parseInteger().

Referenced by parseOptionalArrayStride().

◆ parseAndVerify< unsigned >() [2/2]

template<>
std::optional< unsigned > parseAndVerify< unsigned > ( SPIRVDialect const & dialect,
DialectAsmParser & parser )

Definition at line 541 of file SPIRVDialect.cpp.

References mlir::AsmParser::parseInteger().

Referenced by parseOptionalArrayStride().

◆ parseAndVerifyInteger()

template<typename IntTy>
std::optional< IntTy > parseAndVerifyInteger ( SPIRVDialect const & dialect,
DialectAsmParser & parser )
static

Definition at line 541 of file SPIRVDialect.cpp.

◆ parseAndVerifyMatrixType()

Type parseAndVerifyMatrixType ( SPIRVDialect const & dialect,
DialectAsmParser & parser )
static

◆ parseAndVerifySampledImageType()

Type parseAndVerifySampledImageType ( SPIRVDialect const & dialect,
DialectAsmParser & parser )
static

◆ parseAndVerifyType()

◆ parseArrayType()

◆ parseCooperativeMatrixType()

◆ parseImageType()

Type parseImageType ( SPIRVDialect const & dialect,
DialectAsmParser & parser )
static

◆ parseMatrixType()

◆ parseOptionalArrayStride()

LogicalResult parseOptionalArrayStride ( const SPIRVDialect & dialect,
DialectAsmParser & parser,
unsigned & stride )
static

Parses an optional , stride = N assembly segment.

If no parsing failure occurs, writes N to stride if existing and writes 0 to stride if missing.

Definition at line 275 of file SPIRVDialect.cpp.

References mlir::AsmParser::emitError(), mlir::AsmParser::getCurrentLocation(), parseAndVerify< unsigned >(), mlir::AsmParser::parseEqual(), mlir::AsmParser::parseKeyword(), mlir::AsmParser::parseOptionalComma(), and success().

Referenced by parseArrayType(), and parseRuntimeArrayType().

◆ parsePointerType()

◆ parseRuntimeArrayType()

Type parseRuntimeArrayType ( SPIRVDialect const & dialect,
DialectAsmParser & parser )
static

◆ parseSampledImageType()

Type parseSampledImageType ( SPIRVDialect const & dialect,
DialectAsmParser & parser )
static

◆ parseStructMemberDecorations()

◆ parseStructType()

◆ parseTensorArmType()

◆ print() [1/9]

◆ print() [2/9]

◆ print() [3/9]

◆ print() [4/9]

◆ print() [5/9]

◆ print() [6/9]

◆ print() [7/9]

void print ( SampledImageType type,
DialectAsmPrinter & os )
static

Definition at line 890 of file SPIRVDialect.cpp.

References mlir::spirv::SampledImageType::getImageType().

◆ print() [8/9]

◆ print() [9/9]

◆ verifyRegionAttribute()

LogicalResult verifyRegionAttribute ( Location loc,
Type valueType,
NamedAttribute attribute )
static

Verifies the given SPIR-V attribute attached to a value of the given valueType is valid.

Definition at line 1036 of file SPIRVDialect.cpp.

References mlir::emitError(), mlir::spirv::getInterfaceVarABIAttrName(), mlir::NamedAttribute::getName(), mlir::NamedAttribute::getValue(), mlir::Type::isIntOrIndexOrFloat(), and success().