MLIR  20.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 950 of file OperationSupport.h.

Constructor & Destructor Documentation

◆ OperationState() [1/6]

OperationState::OperationState ( Location  location,
StringRef  name 
)

Definition at line 169 of file OperationSupport.cpp.

◆ OperationState() [2/6]

OperationState::OperationState ( Location  location,
OperationName  name 
)

Definition at line 172 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 175 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 188 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 196 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 1041 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 1048 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 220 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 225 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 229 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 1053 of file OperationSupport.h.

References successors.

◆ addSuccessors() [2/2]

void OperationState::addSuccessors ( BlockRange  newSuccessors)

Definition at line 216 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 1030 of file OperationSupport.h.

References types.

◆ getContext()

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

Get the context held by this operation state.

Definition at line 1074 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 999 of file OperationSupport.h.

References mlir::OpaqueProperties::as().

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

◆ getRawProperties()

OpaqueProperties mlir::OperationState::getRawProperties ( )
inline

Definition at line 1015 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 976 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 968 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 960 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 958 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: