MLIR  21.0.0git
Public Member Functions | Public Attributes | Friends | List of all members
mlir::OperationState Struct Reference

This represents an operation in an abstracted form, suitable for use with the builder APIs. More...

#include "mlir/IR/OperationSupport.h"

Public Member Functions

 OperationState (Location location, StringRef name)
 
 OperationState (Location location, OperationName name)
 
 OperationState (Location location, OperationName name, ValueRange operands, TypeRange types, ArrayRef< NamedAttribute > attributes={}, BlockRange successors={}, MutableArrayRef< std::unique_ptr< Region >> regions={})
 
 OperationState (Location location, StringRef name, ValueRange operands, TypeRange types, ArrayRef< NamedAttribute > attributes={}, BlockRange successors={}, MutableArrayRef< std::unique_ptr< Region >> regions={})
 
 OperationState (OperationState &&other)=default
 
 OperationState (const OperationState &other)=default
 
OperationStateoperator= (OperationState &&other)=default
 
OperationStateoperator= (const OperationState &other)=default
 
 ~OperationState ()
 
template<typename T >
T & getOrAddProperties ()
 Get (or create) a properties of the provided type to be set on the operation on creation. More...
 
OpaqueProperties getRawProperties ()
 
LogicalResult setProperties (Operation *op, function_ref< InFlightDiagnostic()> emitError) const
 
void addOperands (ValueRange newOperands)
 
void addTypes (ArrayRef< Type > newTypes)
 
template<typename RangeT >
std::enable_if_t<!std::is_convertible< RangeT, ArrayRef< Type > >::value > addTypes (RangeT &&newTypes)
 
void addAttribute (StringRef name, Attribute attr)
 Add an attribute with the specified name. More...
 
void addAttribute (StringAttr name, Attribute attr)
 Add an attribute with the specified name. More...
 
void addAttributes (ArrayRef< NamedAttribute > newAttributes)
 Add an array of named attributes. More...
 
void addSuccessors (Block *successor)
 Adds a successor to the operation sate. successor must not be null. More...
 
void addSuccessors (BlockRange newSuccessors)
 
RegionaddRegion ()
 Create a region that should be attached to the operation. More...
 
void addRegion (std::unique_ptr< Region > &&region)
 Take a region that should be attached to the Operation. More...
 
void addRegions (MutableArrayRef< std::unique_ptr< Region >> regions)
 Take ownership of a set of regions that should be attached to the Operation. More...
 
MLIRContextgetContext () const
 Get the context held by this operation state. More...
 

Public Attributes

Location location
 
OperationName name
 
SmallVector< Value, 4 > operands
 
SmallVector< Type, 4 > types
 Types of the results of this operation. More...
 
NamedAttrList attributes
 
SmallVector< Block *, 1 > successors
 Successors of this operation and their respective operands. More...
 
SmallVector< std::unique_ptr< Region >, 1 > regions
 Regions that the op will hold. More...
 
Attribute propertiesAttr
 This Attribute is used to opaquely construct the properties of the operation. More...
 

Friends

class Operation
 

Detailed Description

This represents an operation in an abstracted form, suitable for use with the builder APIs.

This object is a large and heavy weight object meant to be used as a temporary object on the stack. It is generally unwise to put this in a collection.

Definition at line 947 of file OperationSupport.h.

Constructor & Destructor Documentation

◆ OperationState() [1/6]

OperationState::OperationState ( Location  location,
StringRef  name 
)

Definition at line 164 of file OperationSupport.cpp.

◆ OperationState() [2/6]

OperationState::OperationState ( Location  location,
OperationName  name 
)

Definition at line 167 of file OperationSupport.cpp.

◆ OperationState() [3/6]

OperationState::OperationState ( Location  location,
OperationName  name,
ValueRange  operands,
TypeRange  types,
ArrayRef< NamedAttribute attributes = {},
BlockRange  successors = {},
MutableArrayRef< std::unique_ptr< Region >>  regions = {} 
)

Definition at line 170 of file OperationSupport.cpp.

◆ OperationState() [4/6]

OperationState::OperationState ( Location  location,
StringRef  name,
ValueRange  operands,
TypeRange  types,
ArrayRef< NamedAttribute attributes = {},
BlockRange  successors = {},
MutableArrayRef< std::unique_ptr< Region >>  regions = {} 
)

Definition at line 183 of file OperationSupport.cpp.

◆ OperationState() [5/6]

mlir::OperationState::OperationState ( OperationState &&  other)
default

◆ OperationState() [6/6]

mlir::OperationState::OperationState ( const OperationState other)
default

◆ ~OperationState()

OperationState::~OperationState ( )

Definition at line 191 of file OperationSupport.cpp.

Member Function Documentation

◆ addAttribute() [1/2]

void mlir::OperationState::addAttribute ( StringAttr  name,
Attribute  attr 
)
inline

Add an attribute with the specified name.

name and attr must not be null.

Definition at line 1038 of file OperationSupport.h.

References mlir::NamedAttrList::append(), attributes, and name.

◆ addAttribute() [2/2]

void mlir::OperationState::addAttribute ( StringRef  name,
Attribute  attr 
)
inline

◆ addAttributes()

void mlir::OperationState::addAttributes ( ArrayRef< NamedAttribute newAttributes)
inline

Add an array of named attributes.

Definition at line 1045 of file OperationSupport.h.

References mlir::NamedAttrList::append(), and attributes.

Referenced by mlir::convertOpResultTypes().

◆ addOperands()

void OperationState::addOperands ( ValueRange  newOperands)

◆ addRegion() [1/2]

Region * OperationState::addRegion ( )

Create a region that should be attached to the operation.

These regions can be filled in immediately without waiting for Operation to be created. When it is, the region bodies will be transferred.

Definition at line 215 of file OperationSupport.cpp.

References regions.

Referenced by addBodyWithPayloadOp(), addRegions(), mlir::function_interface_impl::parseFunctionOp(), and parseNamedStructuredOp().

◆ addRegion() [2/2]

void OperationState::addRegion ( std::unique_ptr< Region > &&  region)

Take a region that should be attached to the Operation.

The body of the region will be transferred when the Operation is constructed. If the region is null, a new empty region will be attached to the Operation.

Definition at line 220 of file OperationSupport.cpp.

References regions.

◆ addRegions()

void OperationState::addRegions ( MutableArrayRef< std::unique_ptr< Region >>  regions)

Take ownership of a set of regions that should be attached to the Operation.

Definition at line 224 of file OperationSupport.cpp.

References addRegion(), and regions.

◆ addSuccessors() [1/2]

void mlir::OperationState::addSuccessors ( Block successor)
inline

Adds a successor to the operation sate. successor must not be null.

Definition at line 1050 of file OperationSupport.h.

References successors.

◆ addSuccessors() [2/2]

void OperationState::addSuccessors ( BlockRange  newSuccessors)

Definition at line 211 of file OperationSupport.cpp.

References successors.

◆ addTypes() [1/2]

void mlir::OperationState::addTypes ( ArrayRef< Type newTypes)
inline

◆ addTypes() [2/2]

template<typename RangeT >
std::enable_if_t<!std::is_convertible<RangeT, ArrayRef<Type> >::value> mlir::OperationState::addTypes ( RangeT &&  newTypes)
inline

Definition at line 1027 of file OperationSupport.h.

References types.

◆ getContext()

MLIRContext* mlir::OperationState::getContext ( ) const
inline

Get the context held by this operation state.

Definition at line 1071 of file OperationSupport.h.

References mlir::Attribute::getContext(), and location.

Referenced by addAttribute(), and mlir::Op< ConcreteType, Traits >::parseProperties().

◆ getOrAddProperties()

template<typename T >
T& mlir::OperationState::getOrAddProperties ( )
inline

Get (or create) a properties of the provided type to be set on the operation on creation.

Definition at line 996 of file OperationSupport.h.

References mlir::OpaqueProperties::as().

Referenced by mlir::Op< ConcreteType, Traits >::parseProperties().

◆ getRawProperties()

OpaqueProperties mlir::OperationState::getRawProperties ( )
inline

Definition at line 1012 of file OperationSupport.h.

◆ operator=() [1/2]

OperationState& mlir::OperationState::operator= ( const OperationState other)
default

◆ operator=() [2/2]

OperationState& mlir::OperationState::operator= ( OperationState &&  other)
default

◆ setProperties()

LogicalResult OperationState::setProperties ( Operation op,
function_ref< InFlightDiagnostic()>  emitError 
) const

Friends And Related Function Documentation

◆ Operation

friend class Operation
friend

Definition at line 973 of file OperationSupport.h.

Member Data Documentation

◆ attributes

NamedAttrList mlir::OperationState::attributes

◆ location

Location mlir::OperationState::location

◆ name

OperationName mlir::OperationState::name

◆ operands

SmallVector<Value, 4> mlir::OperationState::operands

◆ propertiesAttr

Attribute mlir::OperationState::propertiesAttr

This Attribute is used to opaquely construct the properties of the operation.

If we're creating an unregistered operation, the Attribute is used as-is as the Properties storage of the operation. Otherwise, the operation properties are constructed opaquely using its setPropertiesFromAttr hook. Note that getOrAddProperties is the preferred method to construct properties from C++.

Definition at line 965 of file OperationSupport.h.

Referenced by parseCommonStructuredOpParts(), and setProperties().

◆ regions

SmallVector<std::unique_ptr<Region>, 1> mlir::OperationState::regions

Regions that the op will hold.

Definition at line 957 of file OperationSupport.h.

Referenced by addRegion(), and addRegions().

◆ successors

SmallVector<Block *, 1> mlir::OperationState::successors

Successors of this operation and their respective operands.

Definition at line 955 of file OperationSupport.h.

Referenced by addSuccessors().

◆ types

SmallVector<Type, 4> mlir::OperationState::types

The documentation for this struct was generated from the following files: