MLIR 22.0.0git
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.
void detachFromParent ()
 Detaches the operation from its parent block and updates its state accordingly.
 operator MlirOperation () const
 Gets the backing operation.
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.
std::optional< PyOperationRefgetParentOperation ()
 Gets the parent operation or raises an exception if the operation has no parent.
nanobind::object getCapsule ()
 Gets a capsule wrapping the void* within the MlirOperation.
nanobind::object createOpView ()
 Creates an OpView suitable for this operation.
void erase ()
 Erases the underlying MlirOperation, removes its pointer from the parent context's live operations map, and sets the valid bit false.
void setInvalid ()
 Invalidate the operation.
nanobind::object clone (const nanobind::object &ip)
 Clones this operation.
 PyOperation (PyMlirContextRef contextRef, MlirOperation operation)
Public Member Functions inherited from mlir::python::PyOperationBase
virtual ~PyOperationBase ()=default
void print (std::optional< int64_t > largeElementsLimit, std::optional< int64_t > largeResourceLimit, bool enableDebugInfo, bool prettyDebugInfo, bool printGenericOpForm, bool useLocalScope, bool useNameLocAsPrefix, bool assumeVerified, nanobind::object fileObject, bool binary, bool skipRegions)
 Implements the bound 'print' method and helps with others.
void print (PyAsmState &state, nanobind::object fileObject, bool binary)
nanobind::object getAsm (bool binary, std::optional< int64_t > largeElementsLimit, std::optional< int64_t > largeResourceLimit, bool enableDebugInfo, bool prettyDebugInfo, bool printGenericOpForm, bool useLocalScope, bool useNameLocAsPrefix, 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.
void moveBefore (PyOperationBase &other)
bool isBeforeInBlock (PyOperationBase &other)
 Given an operation 'other' that is within the same parent block, return whether the current operation is before 'other' in the operation list of the parent block.
bool verify ()
 Verify the operation.
Public Member Functions inherited from mlir::python::BaseContextObject
 BaseContextObject (PyMlirContextRef ref)
PyMlirContextRefgetContext ()
 Accesses the context reference.

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.
static PyOperationRef createDetached (PyMlirContextRef contextRef, MlirOperation operation, nanobind::object parentKeepAlive=nanobind::object())
 Creates a detached operation.
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.
static nanobind::object createFromCapsule (const nanobind::object &capsule)
 Creates a PyOperation from the MlirOperation wrapped by a capsule.
static nanobind::object create (std::string_view name, std::optional< std::vector< PyType * > > results, llvm::ArrayRef< MlirValue > operands, std::optional< nanobind::dict > attributes, std::optional< std::vector< PyBlock * > > successors, int regions, PyLocation &location, const nanobind::object &ip, bool inferType)
 Creates an operation. See corresponding python docstring.

Friends

class PyOperationBase
class PySymbolTable

Detailed Description

Definition at line 605 of file IRModule.h.

Constructor & Destructor Documentation

◆ ~PyOperation()

PyOperation::~PyOperation ( )
override

Definition at line 1021 of file IRCore.cpp.

References erase(), isAttached(), and setInvalid().

◆ PyOperation()

PyOperation::PyOperation ( PyMlirContextRef contextRef,
MlirOperation operation )

Definition at line 1018 of file IRCore.cpp.

References mlir::python::BaseContextObject::BaseContextObject().

Referenced by getOperation().

Member Function Documentation

◆ checkValid()

◆ clone()

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

◆ create()

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

◆ 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 1070 of file IRCore.cpp.

Referenced by clone(), create(), and parse().

◆ createFromCapsule()

nb::object PyOperation::createFromCapsule ( const 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 1285 of file IRCore.cpp.

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

◆ createOpView()

◆ detachFromParent()

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

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

Definition at line 630 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 1444 of file IRCore.cpp.

References checkValid(), mlirOperationDestroy(), and setInvalid().

Referenced by ~PyOperation().

◆ forOperation()

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

◆ get()

◆ getBlock()

PyBlock PyOperation::getBlock ( )

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

Definition at line 1271 of file IRCore.cpp.

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

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

◆ getCapsule()

nb::object PyOperation::getCapsule ( )

Gets a capsule wrapping the void* within the MlirOperation.

Definition at line 1280 of file IRCore.cpp.

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

◆ getOperation()

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

Each must provide access to the raw Operation.

Implements mlir::python::PyOperationBase.

Definition at line 608 of file IRModule.h.

References PyOperation().

Referenced by detachFromParent().

◆ getParentOperation()

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

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

Definition at line 1261 of file IRCore.cpp.

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

Referenced by getBlock().

◆ getRef()

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

Definition at line 643 of file IRModule.h.

Referenced by createOpView().

◆ isAttached()

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

◆ operator MlirOperation()

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

Gets the backing operation.

Definition at line 637 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 1079 of file IRCore.cpp.

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

◆ setAttached()

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

Definition at line 648 of file IRModule.h.

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

◆ setDetached()

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

Definition at line 652 of file IRModule.h.

Referenced by detachFromParent().

◆ setInvalid()

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

Invalidate the operation.

Definition at line 690 of file IRModule.h.

Referenced by erase(), and ~PyOperation().

◆ PyOperationBase

friend class PyOperationBase
friend

Definition at line 714 of file IRModule.h.

References PyOperationBase.

Referenced by PyOperationBase.

◆ PySymbolTable

friend class PySymbolTable
friend

Definition at line 715 of file IRModule.h.

References PySymbolTable.

Referenced by PySymbolTable.


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