MLIR 22.0.0git
IRDL.cpp File Reference
#include "mlir/Dialect/IRDL/IR/IRDL.h"
#include "mlir/Dialect/IRDL/IRDLSymbols.h"
#include "mlir/IR/Builders.h"
#include "mlir/IR/BuiltinAttributes.h"
#include "mlir/IR/Diagnostics.h"
#include "mlir/IR/DialectImplementation.h"
#include "mlir/IR/ExtensibleDialect.h"
#include "mlir/IR/OpDefinition.h"
#include "mlir/IR/OpImplementation.h"
#include "mlir/IR/Operation.h"
#include "mlir/Support/LLVM.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SetOperations.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/TypeSwitch.h"
#include "llvm/Support/Casting.h"
#include "mlir/Dialect/IRDL/IR/IRDL.cpp.inc"
#include "mlir/Dialect/IRDL/IR/IRDLDialect.cpp.inc"
#include "mlir/Dialect/IRDL/IR/IRDLOps.cpp.inc"
#include "mlir/Dialect/IRDL/IR/IRDLTypesGen.cpp.inc"
#include "mlir/Dialect/IRDL/IR/IRDLAttributes.cpp.inc"
#include "mlir/Dialect/IRDL/IR/IRDLInterfaces.cpp.inc"
#include "mlir/Dialect/IRDL/IR/IRDLEnums.cpp.inc"

Go to the source code of this file.

Macros

#define GET_OP_LIST
#define GET_TYPEDEF_LIST
#define GET_ATTRDEF_LIST
#define GET_TYPEDEF_CLASSES
#define GET_ATTRDEF_CLASSES
#define GET_OP_CLASSES

Functions

static ParseResult parseSingleBlockRegion (OpAsmParser &p, Region &region)
 Parse a region, and add a single block if the region is empty.
static void printSingleBlockRegion (OpAsmPrinter &p, Operation *op, Region &region)
static llvm::LogicalResult isValidName (llvm::StringRef in, mlir::Operation *loc, const Twine &label)
static LogicalResult verifyNames (Operation *op, StringRef kindName, ArrayAttr names, size_t numOperands)
template<typename ValueListOp>
static LogicalResult verifyOperandsResultsCommon (ValueListOp op, StringRef kindName)
static LogicalResult checkSymbolIsTypeOrAttribute (SymbolTableCollection &symbolTable, Operation *source, SymbolRefAttr symbol)
 Finds whether the provided symbol is an IRDL type or attribute definition.
static ParseResult parseValueWithVariadicity (OpAsmParser &p, OpAsmParser::UnresolvedOperand &operand, VariadicityAttr &variadicityAttr)
 Parse a value with its variadicity first.
static ParseResult parseNamedValueListImpl (OpAsmParser &p, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &operands, ArrayAttr &valueNamesAttr, VariadicityArrayAttr *variadicityAttr)
static ParseResult parseNamedValueList (OpAsmParser &p, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &operands, ArrayAttr &valueNamesAttr)
 Parse a list of named values.
static ParseResult parseNamedValueListWithVariadicity (OpAsmParser &p, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &operands, ArrayAttr &valueNamesAttr, VariadicityArrayAttr &variadicityAttr)
 Parse a list of named values with their variadicities first.
static void printNamedValueListImpl (OpAsmPrinter &p, Operation *op, OperandRange operands, ArrayAttr valueNamesAttr, VariadicityArrayAttr variadicityAttr)
static void printNamedValueList (OpAsmPrinter &p, Operation *op, OperandRange operands, ArrayAttr valueNamesAttr)
 Print a list of named values.
static void printNamedValueListWithVariadicity (OpAsmPrinter &p, Operation *op, OperandRange operands, ArrayAttr valueNamesAttr, VariadicityArrayAttr variadicityAttr)
 Print a list of named values with their variadicities first.
static ParseResult parseAttributesOp (OpAsmParser &p, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &attrOperands, ArrayAttr &attrNamesAttr)
static void printAttributesOp (OpAsmPrinter &p, AttributesOp op, OperandRange attrArgs, ArrayAttr attrNames)

Macro Definition Documentation

◆ GET_ATTRDEF_CLASSES

#define GET_ATTRDEF_CLASSES

Definition at line 472 of file IRDL.cpp.

◆ GET_ATTRDEF_LIST

#define GET_ATTRDEF_LIST

◆ GET_OP_CLASSES

#define GET_OP_CLASSES

Definition at line 475 of file IRDL.cpp.

◆ GET_OP_LIST

#define GET_OP_LIST

◆ GET_TYPEDEF_CLASSES

#define GET_TYPEDEF_CLASSES

Definition at line 467 of file IRDL.cpp.

◆ GET_TYPEDEF_LIST

#define GET_TYPEDEF_LIST

Function Documentation

◆ checkSymbolIsTypeOrAttribute()

LogicalResult checkSymbolIsTypeOrAttribute ( SymbolTableCollection & symbolTable,
Operation * source,
SymbolRefAttr symbol )
static

Finds whether the provided symbol is an IRDL type or attribute definition.

The source operation must be within a DialectOp.

Definition at line 256 of file IRDL.cpp.

References mlir::Operation::emitOpError(), mlir::Operation::getName(), mlir::irdl::lookupSymbolNearDialect(), and success().

◆ isValidName()

llvm::LogicalResult isValidName ( llvm::StringRef in,
mlir::Operation * loc,
const Twine & label )
static

Definition at line 75 of file IRDL.cpp.

References mlir::Operation::emitError(), and success().

Referenced by verifyNames().

◆ parseAttributesOp()

◆ parseNamedValueList()

ParseResult parseNamedValueList ( OpAsmParser & p,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > & operands,
ArrayAttr & valueNamesAttr )
static

Parse a list of named values.

values ::= ( (named-value (, named-value)*)? ) named-value := bare-id : ssa-value

Definition at line 361 of file IRDL.cpp.

References ArrayAttr(), and parseNamedValueListImpl().

◆ parseNamedValueListImpl()

◆ parseNamedValueListWithVariadicity()

ParseResult parseNamedValueListWithVariadicity ( OpAsmParser & p,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > & operands,
ArrayAttr & valueNamesAttr,
VariadicityArrayAttr & variadicityAttr )
static

Parse a list of named values with their variadicities first.

By default, the variadicity is single.

values-with-variadicity ::= ( (value-with-variadicity (, value-with-variadicity)*)? ) value-with-variadicity ::= bare-id : ("single" | "optional" | "variadic")? ssa-value

Definition at line 374 of file IRDL.cpp.

References ArrayAttr(), and parseNamedValueListImpl().

◆ parseSingleBlockRegion()

ParseResult parseSingleBlockRegion ( OpAsmParser & p,
Region & region )
static

Parse a region, and add a single block if the region is empty.

If no region is parsed, create a new region with a single empty block.

Definition at line 58 of file IRDL.cpp.

References mlir::Block, mlir::Region::empty(), mlir::OpAsmParser::parseOptionalRegion(), mlir::Region::push_back(), and success().

◆ parseValueWithVariadicity()

ParseResult parseValueWithVariadicity ( OpAsmParser & p,
OpAsmParser::UnresolvedOperand & operand,
VariadicityAttr & variadicityAttr )
static

Parse a value with its variadicity first.

By default, the variadicity is single.

value-with-variadicity ::= ("single" | "optional" | "variadic")? ssa-value

Definition at line 295 of file IRDL.cpp.

References mlir::AsmParser::getBuilder(), mlir::Builder::getContext(), mlir::OpAsmParser::parseOperand(), mlir::AsmParser::parseOptionalKeyword(), and success().

Referenced by parseNamedValueListImpl().

◆ printAttributesOp()

void printAttributesOp ( OpAsmPrinter & p,
AttributesOp op,
OperandRange attrArgs,
ArrayAttr attrNames )
static

Definition at line 442 of file IRDL.cpp.

References ArrayAttr().

◆ printNamedValueList()

void printNamedValueList ( OpAsmPrinter & p,
Operation * op,
OperandRange operands,
ArrayAttr valueNamesAttr )
static

Print a list of named values.

values ::= ( (named-value (, named-value)*)? ) named-value := bare-id : ssa-value

Definition at line 403 of file IRDL.cpp.

References ArrayAttr(), and printNamedValueListImpl().

◆ printNamedValueListImpl()

void printNamedValueListImpl ( OpAsmPrinter & p,
Operation * op,
OperandRange operands,
ArrayAttr valueNamesAttr,
VariadicityArrayAttr variadicityAttr )
static

Definition at line 380 of file IRDL.cpp.

References ArrayAttr().

Referenced by printNamedValueList(), and printNamedValueListWithVariadicity().

◆ printNamedValueListWithVariadicity()

void printNamedValueListWithVariadicity ( OpAsmPrinter & p,
Operation * op,
OperandRange operands,
ArrayAttr valueNamesAttr,
VariadicityArrayAttr variadicityAttr )
static

Print a list of named values with their variadicities first.

By default, the variadicity is single.

values-with-variadicity ::= ( (value-with-variadicity (, value-with-variadicity)*)? ) value-with-variadicity ::= bare-id : ("single" | "optional" | "variadic")? ssa-value

Definition at line 416 of file IRDL.cpp.

References ArrayAttr(), and printNamedValueListImpl().

◆ printSingleBlockRegion()

void printSingleBlockRegion ( OpAsmPrinter & p,
Operation * op,
Region & region )
static

Definition at line 70 of file IRDL.cpp.

References mlir::Region::getBlocks(), and mlir::OpAsmPrinter::printRegion().

◆ verifyNames()

LogicalResult verifyNames ( Operation * op,
StringRef kindName,
ArrayAttr names,
size_t numOperands )
static

Definition at line 171 of file IRDL.cpp.

References ArrayAttr(), mlir::Operation::emitOpError(), isValidName(), and success().

Referenced by verifyOperandsResultsCommon().

◆ verifyOperandsResultsCommon()

template<typename ValueListOp>
LogicalResult verifyOperandsResultsCommon ( ValueListOp op,
StringRef kindName )
static

Definition at line 202 of file IRDL.cpp.

References verifyNames().