MLIR  14.0.0git
Public Types | Public Member Functions | Static Public Member Functions | List of all members
mlir::Op< ConcreteType, Traits > Class Template Reference

This provides public APIs that all operations should have. More...

#include "mlir/IR/OpDefinition.h"

Inheritance diagram for mlir::Op< ConcreteType, Traits >:
Inheritance graph
[legend]
Collaboration diagram for mlir::Op< ConcreteType, Traits >:
Collaboration graph
[legend]

Public Types

using ConcreteOpType = ConcreteType
 Expose the type we are instantiated on to template machinery that may want to introspect traits on this operation. More...
 

Public Member Functions

ConcreteType clone ()
 Create a deep copy of this operation. More...
 
ConcreteType cloneWithoutRegions ()
 Create a partial copy of this operation without traversing into attached regions. More...
 
 Op ()
 This is a public constructor. Any op can be initialized to null. More...
 
 Op (std::nullptr_t)
 
 Op (Operation *state)
 This is a public constructor to enable access via the llvm::cast family of methods. More...
 
const voidgetAsOpaquePointer () const
 Methods for supporting PointerLikeTypeTraits. More...
 
- Public Member Functions inherited from mlir::OpState
 operator bool ()
 Ops are pointer-like, so we allow conversion to bool. More...
 
 operator Operation * () const
 This implicitly converts to Operation*. More...
 
Operationoperator-> () const
 Shortcut of -> to access a member of Operation. More...
 
OperationgetOperation ()
 Return the operation that this refers to. More...
 
MLIRContextgetContext ()
 Return the context this operation belongs to. More...
 
void print (raw_ostream &os, OpPrintingFlags flags=llvm::None)
 Print the operation to the given stream. More...
 
void print (raw_ostream &os, AsmState &asmState, OpPrintingFlags flags=llvm::None)
 
void dump ()
 Dump this operation. More...
 
Location getLoc ()
 The source location the operation was defined or derived from. More...
 
bool use_empty ()
 Return true if there are no users of any results of this operation. More...
 
void erase ()
 Remove this operation from its parent block and delete it. More...
 
InFlightDiagnostic emitOpError (const Twine &message={})
 Emit an error with the op name prefixed, like "'dim' op " which is convenient for verifiers. More...
 
InFlightDiagnostic emitError (const Twine &message={})
 Emit an error about fatal conditions with this operation, reporting up to any diagnostic handlers that may be listening. More...
 
InFlightDiagnostic emitWarning (const Twine &message={})
 Emit a warning about this operation, reporting up to any diagnostic handlers that may be listening. More...
 
InFlightDiagnostic emitRemark (const Twine &message={})
 Emit a remark about this operation, reporting up to any diagnostic handlers that may be listening. More...
 
template<WalkOrder Order = WalkOrder::PostOrder, typename FnT , typename RetT = detail::walkResultType<FnT>>
RetT walk (FnT &&callback)
 Walk the operation by calling the callback for each nested operation (including this one), block or region, depending on the callback provided. More...
 

Static Public Member Functions

template<template< typename T > class Trait>
static constexpr bool hasTrait ()
 Return if this operation contains the provided trait. More...
 
static bool classof (Operation *op)
 Return true if this "op class" can match against the specified operation. More...
 
template<typename T >
static std::enable_if_t< std::is_base_of< OpState, T >::value, bool > classof (const T *op)
 Provide classof support for other OpBase derived classes, such as Interfaces. More...
 
static ConcreteOpType getFromOpaquePointer (const void *pointer)
 
template<typename... Models>
static void attachInterface (MLIRContext &context)
 Attach the given models as implementations of the corresponding interfaces for the concrete operation. More...
 
- Static Public Member Functions inherited from mlir::OpState
static void getCanonicalizationPatterns (RewritePatternSet &results, MLIRContext *context)
 This hook returns any canonicalization pattern rewrites that the operation supports, for use by the canonicalization pass. More...
 

Additional Inherited Members

- Protected Member Functions inherited from mlir::OpState
LogicalResult verify ()
 If the concrete type didn't implement a custom verifier hook, just fall back to this one which accepts everything. More...
 
 OpState (Operation *state)
 Mutability management is handled by the OpWrapper/OpConstWrapper classes, so we can cast it away here. More...
 
- Static Protected Member Functions inherited from mlir::OpState
static ParseResult parse (OpAsmParser &parser, OperationState &result)
 Parse the custom form of an operation. More...
 
static void print (Operation *op, OpAsmPrinter &p, StringRef defaultDialect)
 Print the operation. More...
 
static void printOpName (Operation *op, OpAsmPrinter &p, StringRef defaultDialect)
 Print an operation name, eliding the dialect prefix if necessary. More...
 

Detailed Description

template<typename ConcreteType, template< typename T > class... Traits>
class mlir::Op< ConcreteType, Traits >

This provides public APIs that all operations should have.

The template argument 'ConcreteType' should be the concrete type by CRTP and the others are base classes by the policy pattern.

Definition at line 1573 of file OpDefinition.h.

Member Typedef Documentation

◆ ConcreteOpType

template<typename ConcreteType, template< typename T > class... Traits>
using mlir::Op< ConcreteType, Traits >::ConcreteOpType = ConcreteType

Expose the type we are instantiated on to template machinery that may want to introspect traits on this operation.

Definition at line 1616 of file OpDefinition.h.

Constructor & Destructor Documentation

◆ Op() [1/3]

template<typename ConcreteType, template< typename T > class... Traits>
mlir::Op< ConcreteType, Traits >::Op ( )
inlineexplicit

This is a public constructor. Any op can be initialized to null.

Definition at line 1619 of file OpDefinition.h.

◆ Op() [2/3]

template<typename ConcreteType, template< typename T > class... Traits>
mlir::Op< ConcreteType, Traits >::Op ( std::nullptr_t  )
inline

Definition at line 1620 of file OpDefinition.h.

◆ Op() [3/3]

template<typename ConcreteType, template< typename T > class... Traits>
mlir::Op< ConcreteType, Traits >::Op ( Operation state)
inlineexplicit

This is a public constructor to enable access via the llvm::cast family of methods.

This should not be used directly.

Definition at line 1624 of file OpDefinition.h.

Member Function Documentation

◆ attachInterface()

template<typename ConcreteType, template< typename T > class... Traits>
template<typename... Models>
static void mlir::Op< ConcreteType, Traits >::attachInterface ( MLIRContext context)
inlinestatic

Attach the given models as implementations of the corresponding interfaces for the concrete operation.

Definition at line 1638 of file OpDefinition.h.

◆ classof() [1/2]

template<typename ConcreteType, template< typename T > class... Traits>
static bool mlir::Op< ConcreteType, Traits >::classof ( Operation op)
inlinestatic

Return true if this "op class" can match against the specified operation.

Definition at line 1595 of file OpDefinition.h.

◆ classof() [2/2]

template<typename ConcreteType, template< typename T > class... Traits>
template<typename T >
static std::enable_if_t<std::is_base_of<OpState, T>::value, bool> mlir::Op< ConcreteType, Traits >::classof ( const T *  op)
inlinestatic

Provide classof support for other OpBase derived classes, such as Interfaces.

Definition at line 1610 of file OpDefinition.h.

◆ clone()

template<typename ConcreteType, template< typename T > class... Traits>
ConcreteType mlir::Op< ConcreteType, Traits >::clone ( )
inline

Create a deep copy of this operation.

Definition at line 1585 of file OpDefinition.h.

◆ cloneWithoutRegions()

template<typename ConcreteType, template< typename T > class... Traits>
ConcreteType mlir::Op< ConcreteType, Traits >::cloneWithoutRegions ( )
inline

Create a partial copy of this operation without traversing into attached regions.

The new operation will have the same number of regions as the original one, but they will be left empty.

Definition at line 1590 of file OpDefinition.h.

◆ getAsOpaquePointer()

template<typename ConcreteType, template< typename T > class... Traits>
const void* mlir::Op< ConcreteType, Traits >::getAsOpaquePointer ( ) const
inline

Methods for supporting PointerLikeTypeTraits.

Definition at line 1627 of file OpDefinition.h.

◆ getFromOpaquePointer()

template<typename ConcreteType, template< typename T > class... Traits>
static ConcreteOpType mlir::Op< ConcreteType, Traits >::getFromOpaquePointer ( const void pointer)
inlinestatic

Definition at line 1630 of file OpDefinition.h.

◆ hasTrait()

template<typename ConcreteType, template< typename T > class... Traits>
template<template< typename T > class Trait>
static constexpr bool mlir::Op< ConcreteType, Traits >::hasTrait ( )
inlinestatic

Return if this operation contains the provided trait.

Definition at line 1580 of file OpDefinition.h.


The documentation for this class was generated from the following file: