My Project
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
mlir::OpInterface< ConcreteType, Traits > Class Template Reference

#include <OpDefinition.h>

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

Classes

struct  Trait
 

Public Types

using Concept = typename Traits::Concept
 
template<typename T >
using Model = typename Traits::template Model< T >
 
- Public Types inherited from mlir::Op< ConcreteType >
using ConcreteOpType = ConcreteType
 
- Public Types inherited from mlir::OpState
using dialect_attr_iterator = Operation::dialect_attr_iterator
 A utility iterator that filters out non-dialect attributes. More...
 
using dialect_attr_range = Operation::dialect_attr_range
 

Public Member Functions

 OpInterface (Operation *op=nullptr)
 
- Public Member Functions inherited from mlir::Op< ConcreteType >
OperationgetOperation ()
 Return the operation that this refers to. More...
 
ConcreteType clone ()
 Create a deep copy of this operation. More...
 
ConcreteType cloneWithoutRegions ()
 
DialectgetDialect ()
 Return the dialect that this refers to. More...
 
RegiongetParentRegion ()
 Return the parent Region of this operation. More...
 
 Op ()
 This is a public constructor. Any op can be initialized to null. More...
 
 Op (std::nullptr_t)
 
 Op (Operation *state)
 
const void * getAsOpaquePointer () const
 Methods for supporting PointerLikeTypeTraits. More...
 
- Public Member Functions inherited from mlir::OpState
 operator bool ()
 Ops are pointer-like, so we allow implicit conversion to bool. More...
 
 operator Operation * () const
 This implicitly converts to Operation*. More...
 
OperationgetOperation ()
 Return the operation that this refers to. More...
 
OperationgetParentOp ()
 
template<typename OpTy >
OpTy getParentOfType ()
 Return the closest surrounding parent operation that is of type 'OpTy'. 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 dump ()
 Dump this operation. More...
 
Location getLoc ()
 The source location the operation was defined or derived from. More...
 
void setLoc (Location loc)
 
ArrayRef< NamedAttributegetAttrs ()
 Return all of the attributes on this operation. More...
 
dialect_attr_range getDialectAttrs ()
 Return a range corresponding to the dialect attributes for this operation. More...
 
dialect_attr_iterator dialect_attr_begin ()
 
dialect_attr_iterator dialect_attr_end ()
 
Attribute getAttr (StringRef name)
 Return an attribute with the specified name. More...
 
template<typename AttrClass >
AttrClass getAttrOfType (StringRef name)
 If the operation has an attribute of the specified type, return it. More...
 
void setAttr (Identifier name, Attribute value)
 
void setAttr (StringRef name, Attribute value)
 
void setAttrs (ArrayRef< NamedAttribute > attributes)
 Set the attributes held by this operation. More...
 
void setAttrs (NamedAttributeList newAttrs)
 
template<typename DialectAttrs >
void setDialectAttrs (DialectAttrs &&attrs)
 Set the dialect attributes for this operation, and preserve all dependent. More...
 
NamedAttributeList::RemoveResult removeAttr (Identifier name)
 
NamedAttributeList::RemoveResult removeAttr (StringRef name)
 
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={})
 
InFlightDiagnostic emitError (const Twine &message={})
 
InFlightDiagnostic emitWarning (const Twine &message={})
 
InFlightDiagnostic emitRemark (const Twine &message={})
 
template<typename FnT , typename RetT = detail::walkResultType<FnT>>
RetT walk (FnT &&callback)
 
- Public Member Functions inherited from mlir::FoldingHook< ConcreteType, llvm::is_one_of< OpTrait::OneResult< ConcreteType >, Traits< ConcreteType >... >::value >
LogicalResult fold (ArrayRef< Attribute > operands, SmallVectorImpl< OpFoldResult > &results)
 

Static Public Member Functions

static bool classof (Operation *op)
 
static ClassIDgetInterfaceID ()
 Define an accessor for the ID of this interface. More...
 
- Static Public Member Functions inherited from mlir::Op< ConcreteType >
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...
 
static ParseResult parseAssembly (OpAsmParser &parser, OperationState &result)
 
static void printAssembly (Operation *op, OpAsmPrinter &p)
 
static LogicalResult verifyInvariants (Operation *op)
 
static AbstractOperation::OperationProperties getOperationProperties ()
 
static ConcreteOpType getFromOpaquePointer (const void *pointer)
 
- Static Public Member Functions inherited from mlir::OpState
static void getCanonicalizationPatterns (OwningRewritePatternList &results, MLIRContext *context)
 
- Static Public Member Functions inherited from mlir::FoldingHook< ConcreteType, llvm::is_one_of< OpTrait::OneResult< ConcreteType >, Traits< ConcreteType >... >::value >
static LogicalResult foldHook (Operation *op, ArrayRef< Attribute > operands, SmallVectorImpl< OpFoldResult > &results)
 

Protected Member Functions

ConceptgetImpl ()
 Get the raw concept in the correct derived concept type. More...
 
- Protected Member Functions inherited from mlir::OpState
LogicalResult verify ()
 
void print (OpAsmPrinter &p)
 
 OpState (Operation *state)
 

Additional Inherited Members

- Static Protected Member Functions inherited from mlir::OpState
static ParseResult parse (OpAsmParser &parser, OperationState &result)
 

Detailed Description

template<typename ConcreteType, typename Traits>
class mlir::OpInterface< ConcreteType, Traits >

This class represents the base of an operation interface. Operation interfaces provide access to derived Op properties through an opaquely Operation instance. Derived interfaces must also provide a 'Traits' class that defines a 'Concept' and a 'Model' class. The 'Concept' class defines an abstract virtual interface, where as the 'Model' class implements this interface for a specific derived *Op type. Both of these classes *must not contain non-static data. A simple example is shown below:

struct ExampleOpInterfaceTraits { struct Concept { virtual unsigned getNumInputs(Operation *op) = 0; }; template <typename opt>=""> class Model { unsigned getNumInputs(Operation *op) final { return cast<OpT>(op).getNumInputs(); } }; };

Member Typedef Documentation

◆ Concept

template<typename ConcreteType , typename Traits >
using mlir::OpInterface< ConcreteType, Traits >::Concept = typename Traits::Concept

◆ Model

template<typename ConcreteType , typename Traits >
template<typename T >
using mlir::OpInterface< ConcreteType, Traits >::Model = typename Traits::template Model<T>

Constructor & Destructor Documentation

◆ OpInterface()

template<typename ConcreteType , typename Traits >
mlir::OpInterface< ConcreteType, Traits >::OpInterface ( Operation op = nullptr)
inline

Member Function Documentation

◆ classof()

template<typename ConcreteType , typename Traits >
static bool mlir::OpInterface< ConcreteType, Traits >::classof ( Operation op)
inlinestatic

Support 'classof' by checking if the given operation defines the concrete interface.

◆ getImpl()

template<typename ConcreteType , typename Traits >
Concept* mlir::OpInterface< ConcreteType, Traits >::getImpl ( )
inlineprotected

Get the raw concept in the correct derived concept type.

◆ getInterfaceID()

template<typename ConcreteType , typename Traits >
static ClassID* mlir::OpInterface< ConcreteType, Traits >::getInterfaceID ( )
inlinestatic

Define an accessor for the ID of this interface.


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