MLIR 22.0.0git
PDL.cpp File Reference
#include "mlir/Dialect/PDL/IR/PDL.h"
#include "mlir/Dialect/PDL/IR/PDLOps.h"
#include "mlir/Dialect/PDL/IR/PDLTypes.h"
#include "mlir/IR/BuiltinTypes.h"
#include "mlir/Interfaces/InferTypeOpInterface.h"
#include "llvm/ADT/TypeSwitch.h"
#include <optional>
#include "mlir/Dialect/PDL/IR/PDLOpsDialect.cpp.inc"
#include "mlir/Dialect/PDL/IR/PDLOps.cpp.inc"

Go to the source code of this file.

Macros

#define GET_OP_LIST
#define GET_OP_CLASSES

Functions

static bool hasBindingUse (Operation *op)
 Returns true if the given operation is used by a "binding" pdl operation.
static LogicalResult verifyHasBindingUse (Operation *op)
 Returns success if the given operation is not in the main matcher body or is used by a "binding" operation.
static void visit (Operation *op, DenseSet< Operation * > &visited)
 Visits all the pdl.operand(s), pdl.result(s), and pdl.operation(s) connected to the given operation.
static ParseResult parseOperationOpAttributes (OpAsmParser &p, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &attrOperands, ArrayAttr &attrNamesAttr)
static void printOperationOpAttributes (OpAsmPrinter &p, OperationOp op, OperandRange attrArgs, ArrayAttr attrNames)
static LogicalResult verifyResultTypesAreInferrable (OperationOp op, OperandRange resultTypes)
 Verifies that the result types of this operation, defined within a pdl.rewrite, can be inferred.
static ParseResult parseRangeType (OpAsmParser &p, TypeRange argumentTypes, Type &resultType)
static void printRangeType (OpAsmPrinter &p, RangeOp op, TypeRange argumentTypes, Type resultType)
static ParseResult parseResultsValueType (OpAsmParser &p, IntegerAttr index, Type &resultType)
static void printResultsValueType (OpAsmPrinter &p, ResultsOp op, IntegerAttr index, Type resultType)

Macro Definition Documentation

◆ GET_OP_CLASSES

#define GET_OP_CLASSES

Definition at line 538 of file PDL.cpp.

◆ GET_OP_LIST

#define GET_OP_LIST

Function Documentation

◆ hasBindingUse()

bool hasBindingUse ( Operation * op)
static

Returns true if the given operation is used by a "binding" pdl operation.

Definition at line 39 of file PDL.cpp.

References mlir::Operation::getUsers(), and hasBindingUse().

Referenced by hasBindingUse(), and verifyHasBindingUse().

◆ parseOperationOpAttributes()

◆ parseRangeType()

ParseResult parseRangeType ( OpAsmParser & p,
TypeRange argumentTypes,
Type & resultType )
static

◆ parseResultsValueType()

ParseResult parseResultsValueType ( OpAsmParser & p,
IntegerAttr index,
Type & resultType )
static

◆ printOperationOpAttributes()

void printOperationOpAttributes ( OpAsmPrinter & p,
OperationOp op,
OperandRange attrArgs,
ArrayAttr attrNames )
static

Definition at line 171 of file PDL.cpp.

References ArrayAttr().

◆ printRangeType()

void printRangeType ( OpAsmPrinter & p,
RangeOp op,
TypeRange argumentTypes,
Type resultType )
static

Definition at line 419 of file PDL.cpp.

◆ printResultsValueType()

void printResultsValueType ( OpAsmPrinter & p,
ResultsOp op,
IntegerAttr index,
Type resultType )
static

Definition at line 463 of file PDL.cpp.

◆ verifyHasBindingUse()

LogicalResult verifyHasBindingUse ( Operation * op)
static

Returns success if the given operation is not in the main matcher body or is used by a "binding" operation.

On failure, emits an error.

Definition at line 49 of file PDL.cpp.

References mlir::Operation::emitOpError(), mlir::Operation::getParentOp(), hasBindingUse(), and success().

◆ verifyResultTypesAreInferrable()

LogicalResult verifyResultTypesAreInferrable ( OperationOp op,
OperandRange resultTypes )
static

Verifies that the result types of this operation, defined within a pdl.rewrite, can be inferred.

Definition at line 184 of file PDL.cpp.

References mlir::Operation::getBlock(), mlir::Operation::isBeforeInBlock(), mlir::RegisteredOperationName::lookup(), and success().

◆ visit()

void visit ( Operation * op,
DenseSet< Operation * > & visited )
static

Visits all the pdl.operand(s), pdl.result(s), and pdl.operation(s) connected to the given operation.

Definition at line 62 of file PDL.cpp.

References mlir::Operation::getParentOp(), mlir::Operation::getUsers(), result, and visit().

Referenced by mlir::impl::GpuAsyncRegionPassBase< DerivedT >::clonePass(), mlir::impl::GpuAsyncRegionPassBase< DerivedT >::getPassName(), and visit().