MLIR
20.0.0git
|
#include "mlir/Dialect/GPU/IR/GPUDialect.h"
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/Dialect/Bufferization/IR/BufferDeallocationOpInterface.h"
#include "mlir/Dialect/MemRef/IR/MemRef.h"
#include "mlir/IR/Attributes.h"
#include "mlir/IR/Builders.h"
#include "mlir/IR/BuiltinAttributes.h"
#include "mlir/IR/BuiltinOps.h"
#include "mlir/IR/BuiltinTypes.h"
#include "mlir/IR/Diagnostics.h"
#include "mlir/IR/DialectImplementation.h"
#include "mlir/IR/Matchers.h"
#include "mlir/IR/OpImplementation.h"
#include "mlir/IR/PatternMatch.h"
#include "mlir/IR/SymbolTable.h"
#include "mlir/IR/TypeUtilities.h"
#include "mlir/Interfaces/FunctionImplementation.h"
#include "mlir/Interfaces/SideEffectInterfaces.h"
#include "mlir/Transforms/InliningUtils.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/TypeSwitch.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/StringSaver.h"
#include <cassert>
#include <numeric>
#include "mlir/Dialect/GPU/IR/GPUOpsDialect.cpp.inc"
#include "mlir/Dialect/GPU/IR/GPUOps.cpp.inc"
#include "mlir/Dialect/GPU/IR/GPUOpsAttributes.cpp.inc"
#include "mlir/Dialect/GPU/IR/GPUOpInterfaces.cpp.inc"
#include "mlir/Dialect/GPU/IR/GPUOpsEnums.cpp.inc"
#include "mlir/Dialect/GPU/IR/CompilationAttrInterfaces.cpp.inc"
Go to the source code of this file.
Classes | |
struct | FoldLaunchArguments |
Simplify the gpu.launch when the range of a thread or block ID is trivially known to be one. More... | |
Macros | |
#define | GET_OP_LIST |
#define | GET_ATTRDEF_LIST |
#define | GET_ATTRDEF_CLASSES |
#define | GET_OP_CLASSES |
Functions | |
static std::string | getSparseHandleKeyword (SparseHandleKind kind) |
static LogicalResult | verifyKnownLaunchSizeAttr (Operation *op, NamedAttribute attr) |
static ParseResult | parseAsyncDependencies (OpAsmParser &parser, Type &asyncTokenType, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &asyncDependencies) |
Parses an optional list of async operands with an optional leading keyword. More... | |
static void | printAsyncDependencies (OpAsmPrinter &printer, Operation *op, Type asyncTokenType, OperandRange asyncDependencies) |
Prints optional async dependencies with its leading keyword. More... | |
static ParseResult | parseAttributions (OpAsmParser &parser, StringRef keyword, SmallVectorImpl< OpAsmParser::Argument > &args) |
Parses a GPU function memory attribution. More... | |
static void | printAttributions (OpAsmPrinter &p, StringRef keyword, ArrayRef< BlockArgument > values) |
Prints a GPU function memory attribution. More... | |
static LogicalResult | verifyAttributions (Operation *op, ArrayRef< BlockArgument > attributions, gpu::AddressSpace memorySpace) |
Verifies a GPU function memory attribution. More... | |
static LogicalResult | verifyReduceOpAndType (gpu::AllReduceOperation opName, Type resType) |
static bool | canMakeGroupOpUniform (Operation *op) |
static ParseResult | parseAllReduceOperation (AsmParser &parser, AllReduceOperationAttr &attr) |
static void | printAllReduceOperation (AsmPrinter &printer, Operation *op, AllReduceOperationAttr attr) |
static void | printSizeAssignment (OpAsmPrinter &p, KernelDim3 size, KernelDim3 operands, KernelDim3 ids) |
static ParseResult | parseSizeAssignment (OpAsmParser &parser, MutableArrayRef< OpAsmParser::UnresolvedOperand > sizes, MutableArrayRef< OpAsmParser::UnresolvedOperand > regionSizes, MutableArrayRef< OpAsmParser::UnresolvedOperand > indices) |
static ParseResult | parseLaunchDimType (OpAsmParser &parser, Type &dimTy, std::optional< OpAsmParser::UnresolvedOperand > clusterValue, Type &clusterXTy, Type &clusterYTy, Type &clusterZTy) |
static void | printLaunchDimType (OpAsmPrinter &printer, Operation *op, Type dimTy, Value clusterValue, Type clusterXTy, Type clusterYTy, Type clusterZTy) |
static ParseResult | parseLaunchFuncOperands (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &argNames, SmallVectorImpl< Type > &argTypes) |
static void | printLaunchFuncOperands (OpAsmPrinter &printer, Operation *, OperandRange operands, TypeRange types) |
static ParseResult | parseAttributions (OpAsmParser &parser, StringRef keyword, SmallVectorImpl< OpAsmParser::Argument > &args, Attribute &attributionAttrs) |
Parses a GPU function memory attribution. More... | |
static void | printAttributions (OpAsmPrinter &p, StringRef keyword, ArrayRef< BlockArgument > values, ArrayAttr attributes) |
static DictionaryAttr | getAttributionAttrs (GPUFuncOp op, unsigned index, StringAttr attrName) |
static void | setAttributionAttrs (GPUFuncOp op, unsigned index, DictionaryAttr value, StringAttr attrName) |
static Attribute | getAttributionAttr (GPUFuncOp op, unsigned index, StringAttr name, StringAttr attrsName) |
static void | setAttributionAttr (GPUFuncOp op, unsigned index, StringAttr name, Attribute value, StringAttr attrsName) |
static ParseResult | parseOffloadingHandler (OpAsmParser &parser, Attribute &offloadingHandler) |
static void | printOffloadingHandler (OpAsmPrinter &printer, Operation *op, Attribute offloadingHandler) |
static LogicalResult | verifyDistributedType (Type expanded, Type distributed, int64_t warpSize, Operation *op) |
Helper check if the distributed vector type is consistent with the expanded type and distributed size. More... | |
#define GET_ATTRDEF_CLASSES |
Definition at line 2589 of file GPUDialect.cpp.
#define GET_ATTRDEF_LIST |
#define GET_OP_CLASSES |
Definition at line 2592 of file GPUDialect.cpp.
#define GET_OP_LIST |
|
static |
Definition at line 564 of file GPUDialect.cpp.
References mlir::Region::empty(), mlir::Region::front(), mlir::Operation::getBlock(), and mlir::Operation::getParentOp().
|
static |
Definition at line 1619 of file GPUDialect.cpp.
References getAttributionAttrs().
|
static |
Definition at line 1576 of file GPUDialect.cpp.
Referenced by getAttributionAttr(), and setAttributionAttr().
|
static |
Definition at line 222 of file GPUDialect.cpp.
References mlir::gpu::DnTensor, mlir::gpu::SpGEMMOp, and mlir::gpu::SpMat.
|
static |
Definition at line 586 of file GPUDialect.cpp.
References mlir::AsmParser::emitError(), mlir::get(), mlir::AsmParser::getContext(), mlir::AsmParser::getCurrentLocation(), and mlir::AsmParser::parseOptionalKeyword().
|
static |
Parses an optional list of async operands with an optional leading keyword.
(async
)? ([
ssa-id-list ]
)?
This method is used by the tablegen assembly format for async ops as well.
Definition at line 422 of file GPUDialect.cpp.
References mlir::AsmParser::emitError(), mlir::AsmParser::getBuilder(), mlir::AsmParser::getCurrentLocation(), mlir::OpAsmParser::getNumResults(), mlir::Builder::getType(), mlir::AsmParser::OptionalSquare, mlir::OpAsmParser::parseOperandList(), and mlir::AsmParser::parseOptionalKeyword().
|
static |
Parses a GPU function memory attribution.
memory-attribution ::= (workgroup
(
ssa-id-and-type-list )
)? (private
(
ssa-id-and-type-list )
)?
Note that this function parses only one of the two similar parts, with the keyword provided as argument.
Definition at line 461 of file GPUDialect.cpp.
References mlir::AsmParser::Paren, mlir::OpAsmParser::parseArgumentList(), and mlir::AsmParser::parseOptionalKeyword().
|
static |
Parses a GPU function memory attribution.
memory-attribution ::= (workgroup
(
ssa-id-and-type-list )
)? (private
(
ssa-id-and-type-list )
)?
Note that this function parses only one of the two similar parts, with the keyword provided as argument.
Definition at line 1412 of file GPUDialect.cpp.
References mlir::OpAsmParser::Argument::attrs, mlir::Builder::getArrayAttr(), mlir::AsmParser::getBuilder(), mlir::Builder::getDictionaryAttr(), mlir::AsmParser::Paren, mlir::OpAsmParser::parseArgumentList(), and mlir::AsmParser::parseOptionalKeyword().
|
static |
Definition at line 1266 of file GPUDialect.cpp.
References mlir::get(), mlir::AsmParser::getContext(), mlir::AsmParser::parseOptionalColon(), and mlir::AsmParser::parseType().
|
static |
Definition at line 1288 of file GPUDialect.cpp.
References mlir::AsmParser::Paren, mlir::AsmParser::parseColonType(), mlir::AsmParser::parseCommaSeparatedList(), mlir::OpAsmParser::parseOperand(), and mlir::AsmParser::parseOptionalKeyword().
|
static |
Definition at line 1812 of file GPUDialect.cpp.
References mlir::Builder::getAttr(), mlir::AsmParser::getBuilder(), mlir::AsmParser::parseAttribute(), mlir::AsmParser::parseGreater(), and mlir::AsmParser::parseOptionalLess().
|
static |
Definition at line 897 of file GPUDialect.cpp.
References mlir::AsmParser::Paren, mlir::AsmParser::parseComma(), mlir::AsmParser::parseEqual(), mlir::AsmParser::parseKeyword(), mlir::AsmParser::parseLParen(), mlir::OpAsmParser::parseOperand(), mlir::OpAsmParser::parseOperandList(), and mlir::AsmParser::parseRParen().
|
static |
Definition at line 599 of file GPUDialect.cpp.
|
static |
Prints optional async dependencies with its leading keyword.
(async
)? ([
ssa-id-list ]
)?
Definition at line 438 of file GPUDialect.cpp.
|
static |
Prints a GPU function memory attribution.
Definition at line 472 of file GPUDialect.cpp.
References mlir::Value::getType().
|
static |
Definition at line 1528 of file GPUDialect.cpp.
References mlir::detail::enumerate(), mlir::Value::getType(), and mlir::OpAsmPrinter::printOptionalAttrDict().
|
static |
Definition at line 1281 of file GPUDialect.cpp.
References mlir::Type::isIndex().
|
static |
Definition at line 1304 of file GPUDialect.cpp.
References mlir::OpAsmPrinter::printOperand(), and mlir::AsmPrinter::printType().
|
static |
Definition at line 1825 of file GPUDialect.cpp.
References mlir::get(), and mlir::Operation::getContext().
|
static |
Definition at line 848 of file GPUDialect.cpp.
References mlir::gpu::KernelDim3::x, mlir::gpu::KernelDim3::y, and mlir::gpu::KernelDim3::z.
|
static |
Definition at line 1643 of file GPUDialect.cpp.
References getAttributionAttrs(), and setAttributionAttrs().
|
static |
Definition at line 1592 of file GPUDialect.cpp.
References mlir::get().
Referenced by setAttributionAttr().
|
static |
Verifies a GPU function memory attribution.
Definition at line 484 of file GPUDialect.cpp.
References mlir::Operation::emitOpError().
|
static |
Helper check if the distributed vector type is consistent with the expanded type and distributed size.
Definition at line 2309 of file GPUDialect.cpp.
|
static |
Definition at line 312 of file GPUDialect.cpp.
References mlir::Operation::emitOpError(), mlir::NamedAttribute::getName(), and mlir::NamedAttribute::getValue().
|
static |
Definition at line 510 of file GPUDialect.cpp.
References MINUI.