MLIR
17.0.0git
|
#include "Bindings/Python/IRModule.h"
Public Member Functions | |
~PyOperation () override | |
PyOperation & | getOperation () 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 pybind11::object &parent=pybind11::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< PyOperationRef > | getParentOperation () |
Gets the parent operation or raises an exception if the operation has no parent. More... | |
pybind11::object | getCapsule () |
Gets a capsule wrapping the void* within the MlirOperation. More... | |
pybind11::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... | |
pybind11::object | clone (const pybind11::object &ip) |
Clones this operation. More... | |
![]() | |
virtual | ~PyOperationBase ()=default |
void | print (pybind11::object fileObject, bool binary, std::optional< int64_t > largeElementsLimit, bool enableDebugInfo, bool prettyDebugInfo, bool printGenericOpForm, bool useLocalScope, bool assumeVerified) |
Implements the bound 'print' method and helps with others. More... | |
pybind11::object | getAsm (bool binary, std::optional< int64_t > largeElementsLimit, bool enableDebugInfo, bool prettyDebugInfo, bool printGenericOpForm, bool useLocalScope, bool assumeVerified) |
void | writeBytecode (const pybind11::object &fileObject, std::optional< int64_t > bytecodeVersion) |
void | moveAfter (PyOperationBase &other) |
Moves the operation before or after the other operation. More... | |
void | moveBefore (PyOperationBase &other) |
bool | verify () |
Verify the operation. More... | |
![]() | |
BaseContextObject (PyMlirContextRef ref) | |
PyMlirContextRef & | getContext () |
Accesses the context reference. More... | |
Static Public Member Functions | |
static PyOperationRef | forOperation (PyMlirContextRef contextRef, MlirOperation operation, pybind11::object parentKeepAlive=pybind11::object()) |
Returns a PyOperation for the given MlirOperation, optionally associating it with a parentKeepAlive. More... | |
static PyOperationRef | createDetached (PyMlirContextRef contextRef, MlirOperation operation, pybind11::object parentKeepAlive=pybind11::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 pybind11::object | createFromCapsule (pybind11::object capsule) |
Creates a PyOperation from the MlirOperation wrapped by a capsule. More... | |
static pybind11::object | create (const std::string &name, std::optional< std::vector< PyType * >> results, std::optional< std::vector< PyValue * >> operands, std::optional< pybind11::dict > attributes, std::optional< std::vector< PyBlock * >> successors, int regions, DefaultingPyLocation location, const pybind11::object &ip) |
Creates an operation. See corresponding python docstring. More... | |
Friends | |
class | PyOperationBase |
class | PySymbolTable |
Definition at line 582 of file IRModule.h.
|
override |
Definition at line 1050 of file IRCore.cpp.
References mlir::python::BaseContextObject::getContext(), isAttached(), and mlirOperationDestroy().
void PyOperation::checkValid | ( | ) | const |
Definition at line 1125 of file IRCore.cpp.
Referenced by mlir::python::PyRegion::checkValid(), mlir::python::PyBlock::checkValid(), mlir::python::PyValue::checkValid(), createOpView(), erase(), mlir::python::PySymbolTable::erase(), get(), getBlock(), getCapsule(), getParentOperation(), mlir::python::PySymbolTable::getSymbolName(), mlir::python::PySymbolTable::getVisibility(), mlir::python::PySymbolTable::insert(), mlir::python::PyOperationBase::moveAfter(), mlir::python::PyOperationBase::moveBefore(), mlir::python::PyOperationBase::print(), mlir::python::PySymbolTable::replaceAllSymbolUses(), mlir::python::PySymbolTable::setSymbolName(), mlir::python::PySymbolTable::setVisibility(), mlir::python::PySymbolTable::walkSymbolTables(), and mlir::python::PyOperationBase::writeBytecode().
py::object PyOperation::clone | ( | const pybind11::object & | ip | ) |
Clones this operation.
Definition at line 1399 of file IRCore.cpp.
References createDetached(), createOpView(), mlir::python::BaseContextObject::getContext(), maybeInsertOperation(), and mlirOperationClone().
|
static |
Creates an operation. See corresponding python docstring.
Definition at line 1276 of file IRCore.cpp.
References createDetached(), createOpView(), maybeInsertOperation(), mlirAttributeGetContext(), mlirIdentifierGet(), mlirNamedAttributeGet(), mlirOperationCreate(), mlirOperationStateAddAttributes(), mlirOperationStateAddOperands(), mlirOperationStateAddOwnedRegions(), mlirOperationStateAddResults(), mlirOperationStateAddSuccessors(), mlirOperationStateGet(), mlirRegionCreate(), and toMlirStringRef().
Referenced by mlir::python::PyOpView::buildGeneric().
|
static |
Creates a detached operation.
The operation must not be associated with any existing live operation.
Definition at line 1099 of file IRCore.cpp.
|
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 1252 of file IRCore.cpp.
References mlir::python::PyMlirContext::forContext(), forOperation(), mlirOperationGetContext(), mlirOperationIsNull(), mlirPythonCapsuleToOperation(), and mlir::python::PyObjectRef< T >::releaseObject().
py::object PyOperation::createOpView | ( | ) |
Creates an OpView suitable for this operation.
Definition at line 1408 of file IRCore.cpp.
References checkValid(), mlir::python::PyOpView::constructDerived(), MlirStringRef::data, mlir::python::PyGlobals::get(), get(), getRef(), MlirStringRef::length, mlir::python::PyGlobals::lookupOperationClass(), mlirIdentifierStr(), and mlirOperationGetName().
Referenced by clone(), create(), mlir::python::PySymbolTable::dunderGetItem(), and mlir::python::PyConcreteOpInterface< ConcreteIface >::getOpView().
|
inline |
Detaches the operation from its parent block and updates its state accordingly.
Definition at line 607 of file IRModule.h.
References getOperation(), mlirOperationRemoveFromParent(), and setDetached().
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 1419 of file IRCore.cpp.
References checkValid(), mlir::python::BaseContextObject::getContext(), and mlirOperationDestroy().
|
static |
Returns a PyOperation for the given MlirOperation, optionally associating it with a parentKeepAlive.
Definition at line 1083 of file IRCore.cpp.
Referenced by mlir::python::PyInsertionPoint::atBlockBegin(), mlir::python::PyInsertionPoint::atBlockTerminator(), createFromCapsule(), mlir::python::PyValue::createFromCapsule(), mlir::python::PySymbolTable::dunderGetItem(), and getParentOperation().
|
inline |
Definition at line 615 of file IRModule.h.
References checkValid().
Referenced by createOpView(), mlir::python::PySymbolTable::erase(), getBlock(), getCapsule(), getParentOperation(), mlir::python::PySymbolTable::getSymbolName(), mlir::python::PySymbolTable::getVisibility(), mlir::python::PySymbolTable::insert(), operator MlirOperation(), mlir::python::PySymbolTable::PySymbolTable(), mlir::python::PySymbolTable::setSymbolName(), mlir::python::PySymbolTable::setVisibility(), and mlir::python::PySymbolTable::walkSymbolTables().
PyBlock PyOperation::getBlock | ( | ) |
Gets the owning block or raises an exception if the operation has no owning block.
Definition at line 1238 of file IRCore.cpp.
References checkValid(), get(), getParentOperation(), mlirBlockIsNull(), and mlirOperationGetBlock().
py::object PyOperation::getCapsule | ( | ) |
Gets a capsule wrapping the void* within the MlirOperation.
Definition at line 1247 of file IRCore.cpp.
References checkValid(), get(), and mlirPythonOperationToCapsule().
|
inlineoverridevirtual |
Each must provide access to the raw Operation.
Implements mlir::python::PyOperationBase.
Definition at line 585 of file IRModule.h.
Referenced by detachFromParent(), and mlir::python::PyConcreteOpInterface< ConcreteIface >::PyConcreteOpInterface().
std::optional< PyOperationRef > PyOperation::getParentOperation | ( | ) |
Gets the parent operation or raises an exception if the operation has no parent.
Definition at line 1228 of file IRCore.cpp.
References checkValid(), forOperation(), get(), mlir::python::BaseContextObject::getContext(), isAttached(), mlirOperationGetParentOperation(), and mlirOperationIsNull().
Referenced by getBlock().
|
inline |
Definition at line 620 of file IRModule.h.
Referenced by createOpView(), and mlir::python::PyConcreteOpInterface< ConcreteIface >::getOperationObject().
|
inline |
Definition at line 625 of file IRModule.h.
Referenced by getParentOperation(), mlir::python::PyInsertionPoint::insert(), and ~PyOperation().
|
inline |
|
static |
Parses a source string (either text assembly or bytecode), creating a detached operation.
Definition at line 1113 of file IRCore.cpp.
|
inline |
Definition at line 626 of file IRModule.h.
Referenced by mlir::python::PyInsertionPoint::insert().
|
inline |
Definition at line 630 of file IRModule.h.
Referenced by detachFromParent().
|
inline |
Invalidate the operation.
Definition at line 668 of file IRModule.h.
|
friend |
Definition at line 691 of file IRModule.h.
|
friend |
Definition at line 692 of file IRModule.h.