MLIR  20.0.0git
Public Member Functions | Static Public Member Functions | Friends | List of all members
mlir::python::PyOperation Class Reference

#include "Bindings/Python/IRModule.h"

+ Inheritance diagram for mlir::python::PyOperation:

Public Member Functions

 ~PyOperation () override
 
PyOperationgetOperation () override
 Each must provide access to the raw Operation. More...
 
void detachFromParent ()
 Detaches the operation from its parent block and updates its state accordingly. More...
 
 operator MlirOperation () const
 Gets the backing operation. More...
 
MlirOperation get () const
 
PyOperationRef getRef ()
 
bool isAttached ()
 
void setAttached (const nanobind::object &parent=nanobind::object())
 
void setDetached ()
 
void checkValid () const
 
PyBlock getBlock ()
 Gets the owning block or raises an exception if the operation has no owning block. More...
 
std::optional< PyOperationRefgetParentOperation ()
 Gets the parent operation or raises an exception if the operation has no parent. More...
 
nanobind::object getCapsule ()
 Gets a capsule wrapping the void* within the MlirOperation. More...
 
nanobind::object createOpView ()
 Creates an OpView suitable for this operation. More...
 
void erase ()
 Erases the underlying MlirOperation, removes its pointer from the parent context's live operations map, and sets the valid bit false. More...
 
void setInvalid ()
 Invalidate the operation. More...
 
nanobind::object clone (const nanobind::object &ip)
 Clones this operation. More...
 
- Public Member Functions inherited from mlir::python::PyOperationBase
virtual ~PyOperationBase ()=default
 
void print (std::optional< int64_t > largeElementsLimit, bool enableDebugInfo, bool prettyDebugInfo, bool printGenericOpForm, bool useLocalScope, bool assumeVerified, nanobind::object fileObject, bool binary, bool skipRegions)
 Implements the bound 'print' method and helps with others. More...
 
void print (PyAsmState &state, nanobind::object fileObject, bool binary)
 
nanobind::object getAsm (bool binary, std::optional< int64_t > largeElementsLimit, bool enableDebugInfo, bool prettyDebugInfo, bool printGenericOpForm, bool useLocalScope, bool assumeVerified, bool skipRegions)
 
void writeBytecode (const nanobind::object &fileObject, std::optional< int64_t > bytecodeVersion)
 
void walk (std::function< MlirWalkResult(MlirOperation)> callback, MlirWalkOrder walkOrder)
 
void moveAfter (PyOperationBase &other)
 Moves the operation before or after the other operation. More...
 
void moveBefore (PyOperationBase &other)
 
bool verify ()
 Verify the operation. More...
 
- Public Member Functions inherited from mlir::python::BaseContextObject
 BaseContextObject (PyMlirContextRef ref)
 
PyMlirContextRefgetContext ()
 Accesses the context reference. More...
 

Static Public Member Functions

static PyOperationRef forOperation (PyMlirContextRef contextRef, MlirOperation operation, nanobind::object parentKeepAlive=nanobind::object())
 Returns a PyOperation for the given MlirOperation, optionally associating it with a parentKeepAlive. More...
 
static PyOperationRef createDetached (PyMlirContextRef contextRef, MlirOperation operation, nanobind::object parentKeepAlive=nanobind::object())
 Creates a detached operation. More...
 
static PyOperationRef parse (PyMlirContextRef contextRef, const std::string &sourceStr, const std::string &sourceName)
 Parses a source string (either text assembly or bytecode), creating a detached operation. More...
 
static nanobind::object createFromCapsule (nanobind::object capsule)
 Creates a PyOperation from the MlirOperation wrapped by a capsule. More...
 
static nanobind::object create (const std::string &name, std::optional< std::vector< PyType * >> results, std::optional< std::vector< PyValue * >> operands, std::optional< nanobind::dict > attributes, std::optional< std::vector< PyBlock * >> successors, int regions, DefaultingPyLocation location, const nanobind::object &ip, bool inferType)
 Creates an operation. See corresponding python docstring. More...
 

Friends

class PyOperationBase
 
class PySymbolTable
 

Detailed Description

Definition at line 613 of file IRModule.h.

Constructor & Destructor Documentation

◆ ~PyOperation()

PyOperation::~PyOperation ( )
override

Member Function Documentation

◆ checkValid()

void PyOperation::checkValid ( ) const

◆ clone()

nb::object PyOperation::clone ( const nanobind::object &  ip)

◆ create()

nb::object PyOperation::create ( const std::string &  name,
std::optional< std::vector< PyType * >>  results,
std::optional< std::vector< PyValue * >>  operands,
std::optional< nanobind::dict >  attributes,
std::optional< std::vector< PyBlock * >>  successors,
int  regions,
DefaultingPyLocation  location,
const nanobind::object &  ip,
bool  inferType 
)
static

Creates an operation. See corresponding python docstring.

Definition at line 1421 of file IRCore.cpp.

Referenced by mlir::python::PyOpView::buildGeneric().

◆ createDetached()

PyOperationRef PyOperation::createDetached ( PyMlirContextRef  contextRef,
MlirOperation  operation,
nanobind::object  parentKeepAlive = nanobind::object() 
)
static

Creates a detached operation.

The operation must not be associated with any existing live operation.

Definition at line 1195 of file IRCore.cpp.

Referenced by clone(), and parse().

◆ createFromCapsule()

nb::object PyOperation::createFromCapsule ( nanobind::object  capsule)
static

Creates a PyOperation from the MlirOperation wrapped by a capsule.

Ownership of the underlying MlirOperation is taken by calling this function.

Definition at line 1397 of file IRCore.cpp.

References mlir::python::PyMlirContext::forContext(), forOperation(), mlirOperationGetContext(), mlirOperationIsNull(), mlirPythonCapsuleToOperation(), and mlir::python::PyObjectRef< T >::releaseObject().

◆ createOpView()

nb::object PyOperation::createOpView ( )

◆ detachFromParent()

void mlir::python::PyOperation::detachFromParent ( )
inline

Detaches the operation from its parent block and updates its state accordingly.

Definition at line 638 of file IRModule.h.

References getOperation(), mlirOperationRemoveFromParent(), and setDetached().

◆ erase()

void PyOperation::erase ( )

Erases the underlying MlirOperation, removes its pointer from the parent context's live operations map, and sets the valid bit false.

Definition at line 1567 of file IRCore.cpp.

References checkValid(), mlir::python::PyMlirContext::clearOperationAndInside(), mlir::python::BaseContextObject::getContext(), and mlirOperationDestroy().

Referenced by ~PyOperation().

◆ forOperation()

PyOperationRef PyOperation::forOperation ( PyMlirContextRef  contextRef,
MlirOperation  operation,
nanobind::object  parentKeepAlive = nanobind::object() 
)
static

◆ get()

MlirOperation mlir::python::PyOperation::get ( ) const
inline

◆ getBlock()

PyBlock PyOperation::getBlock ( )

Gets the owning block or raises an exception if the operation has no owning block.

Definition at line 1383 of file IRCore.cpp.

References checkValid(), get(), getParentOperation(), mlirBlockIsNull(), and mlirOperationGetBlock().

◆ getCapsule()

nb::object PyOperation::getCapsule ( )

Gets a capsule wrapping the void* within the MlirOperation.

Definition at line 1392 of file IRCore.cpp.

References checkValid(), get(), and mlirPythonOperationToCapsule().

◆ getOperation()

PyOperation& mlir::python::PyOperation::getOperation ( )
inlineoverridevirtual

◆ getParentOperation()

std::optional< PyOperationRef > PyOperation::getParentOperation ( )

Gets the parent operation or raises an exception if the operation has no parent.

Definition at line 1373 of file IRCore.cpp.

References checkValid(), forOperation(), get(), mlir::python::BaseContextObject::getContext(), isAttached(), mlirOperationGetParentOperation(), and mlirOperationIsNull().

Referenced by getBlock().

◆ getRef()

PyOperationRef mlir::python::PyOperation::getRef ( )
inline

◆ isAttached()

bool mlir::python::PyOperation::isAttached ( )
inline

◆ operator MlirOperation()

mlir::python::PyOperation::operator MlirOperation ( ) const
inline

Gets the backing operation.

Definition at line 645 of file IRModule.h.

References get().

◆ parse()

PyOperationRef PyOperation::parse ( PyMlirContextRef  contextRef,
const std::string &  sourceStr,
const std::string &  sourceName 
)
static

Parses a source string (either text assembly or bytecode), creating a detached operation.

Definition at line 1209 of file IRCore.cpp.

References createDetached(), mlir::python::PyMlirContext::get(), mlirOperationCreateParse(), mlirOperationIsNull(), mlir::python::PyMlirContext::ErrorCapture::take(), and toMlirStringRef().

◆ setAttached()

void mlir::python::PyOperation::setAttached ( const nanobind::object &  parent = nanobind::object())
inline

Definition at line 656 of file IRModule.h.

Referenced by mlir::python::PyInsertionPoint::insert().

◆ setDetached()

void mlir::python::PyOperation::setDetached ( )
inline

Definition at line 660 of file IRModule.h.

Referenced by detachFromParent().

◆ setInvalid()

void mlir::python::PyOperation::setInvalid ( )
inline

Invalidate the operation.

Definition at line 699 of file IRModule.h.

Friends And Related Function Documentation

◆ PyOperationBase

friend class PyOperationBase
friend

Definition at line 722 of file IRModule.h.

◆ PySymbolTable

friend class PySymbolTable
friend

Definition at line 723 of file IRModule.h.


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