MLIR  17.0.0git
Macros | Functions
IR.cpp File Reference
#include "mlir-c/IR.h"
#include "mlir-c/Support.h"
#include "mlir/AsmParser/AsmParser.h"
#include "mlir/Bytecode/BytecodeWriter.h"
#include "mlir/CAPI/IR.h"
#include "mlir/CAPI/Support.h"
#include "mlir/CAPI/Utils.h"
#include "mlir/IR/Attributes.h"
#include "mlir/IR/BuiltinOps.h"
#include "mlir/IR/Dialect.h"
#include "mlir/IR/Location.h"
#include "mlir/IR/Operation.h"
#include "mlir/IR/Types.h"
#include "mlir/IR/Verifier.h"
#include "mlir/Interfaces/InferTypeOpInterface.h"
#include "mlir/Parser/Parser.h"
#include <cstddef>
#include <optional>
+ Include dependency graph for IR.cpp:

Go to the source code of this file.

Macros

#define APPEND_ELEMS(type, sizeName, elemName)
 

Functions

MlirContext mlirContextCreate ()
 Creates an MLIR context and transfers its ownership to the caller. More...
 
bool mlirContextEqual (MlirContext ctx1, MlirContext ctx2)
 Checks if two contexts are equal. More...
 
void mlirContextDestroy (MlirContext context)
 Takes an MLIR context owned by the caller and destroys it. More...
 
void mlirContextSetAllowUnregisteredDialects (MlirContext context, bool allow)
 Sets whether unregistered dialects are allowed in this context. More...
 
bool mlirContextGetAllowUnregisteredDialects (MlirContext context)
 Returns whether the context allows unregistered dialects. More...
 
intptr_t mlirContextGetNumRegisteredDialects (MlirContext context)
 Returns the number of dialects registered with the given context. More...
 
void mlirContextAppendDialectRegistry (MlirContext ctx, MlirDialectRegistry registry)
 Append the contents of the given dialect registry to the registry associated with the context. More...
 
intptr_t mlirContextGetNumLoadedDialects (MlirContext context)
 Returns the number of dialects loaded by the context. More...
 
MlirDialect mlirContextGetOrLoadDialect (MlirContext context, MlirStringRef name)
 Gets the dialect instance owned by the given context using the dialect namespace to identify it, loads (i.e., constructs the instance of) the dialect if necessary. More...
 
bool mlirContextIsRegisteredOperation (MlirContext context, MlirStringRef name)
 Returns whether the given fully-qualified operation (i.e. More...
 
void mlirContextEnableMultithreading (MlirContext context, bool enable)
 Set threading mode (must be set to false to mlir-print-ir-after-all). More...
 
void mlirContextLoadAllAvailableDialects (MlirContext context)
 Eagerly loads all available dialects registered with a context, making them available for use for IR construction. More...
 
MlirContext mlirDialectGetContext (MlirDialect dialect)
 Returns the context that owns the dialect. More...
 
bool mlirDialectEqual (MlirDialect dialect1, MlirDialect dialect2)
 Checks if two dialects that belong to the same context are equal. More...
 
MlirStringRef mlirDialectGetNamespace (MlirDialect dialect)
 Returns the namespace of the given dialect. More...
 
MlirDialectRegistry mlirDialectRegistryCreate ()
 Creates a dialect registry and transfers its ownership to the caller. More...
 
void mlirDialectRegistryDestroy (MlirDialectRegistry registry)
 Takes a dialect registry owned by the caller and destroys it. More...
 
MlirOpPrintingFlags mlirOpPrintingFlagsCreate ()
 Creates new printing flags with defaults, intended for customization. More...
 
void mlirOpPrintingFlagsDestroy (MlirOpPrintingFlags flags)
 Destroys printing flags created with mlirOpPrintingFlagsCreate. More...
 
void mlirOpPrintingFlagsElideLargeElementsAttrs (MlirOpPrintingFlags flags, intptr_t largeElementLimit)
 Enables the elision of large elements attributes by printing a lexically valid but otherwise meaningless form instead of the element data. More...
 
void mlirOpPrintingFlagsEnableDebugInfo (MlirOpPrintingFlags flags, bool enable, bool prettyForm)
 Enable or disable printing of debug information (based on enable). More...
 
void mlirOpPrintingFlagsPrintGenericOpForm (MlirOpPrintingFlags flags)
 Always print operations in the generic form. More...
 
void mlirOpPrintingFlagsUseLocalScope (MlirOpPrintingFlags flags)
 Use local scope when printing the operation. More...
 
void mlirOpPrintingFlagsAssumeVerified (MlirOpPrintingFlags flags)
 Do not verify the operation when using custom operation printers. More...
 
MlirAttribute mlirLocationGetAttribute (MlirLocation location)
 Returns the underlying location attribute of this location. More...
 
MlirLocation mlirLocationFromAttribute (MlirAttribute attribute)
 Creates a location from a location attribute. More...
 
MlirLocation mlirLocationFileLineColGet (MlirContext context, MlirStringRef filename, unsigned line, unsigned col)
 Creates an File/Line/Column location owned by the given context. More...
 
MlirLocation mlirLocationCallSiteGet (MlirLocation callee, MlirLocation caller)
 Creates a call site location with a callee and a caller. More...
 
MlirLocation mlirLocationFusedGet (MlirContext ctx, intptr_t nLocations, MlirLocation const *locations, MlirAttribute metadata)
 Creates a fused location with an array of locations and metadata. More...
 
MlirLocation mlirLocationNameGet (MlirContext context, MlirStringRef name, MlirLocation childLoc)
 Creates a name location owned by the given context. More...
 
MlirLocation mlirLocationUnknownGet (MlirContext context)
 Creates a location with unknown position owned by the given context. More...
 
bool mlirLocationEqual (MlirLocation l1, MlirLocation l2)
 Checks if two locations are equal. More...
 
MlirContext mlirLocationGetContext (MlirLocation location)
 Gets the context that a location was created with. More...
 
void mlirLocationPrint (MlirLocation location, MlirStringCallback callback, void *userData)
 Prints a location by sending chunks of the string representation and forwarding userData tocallback`. More...
 
MlirModule mlirModuleCreateEmpty (MlirLocation location)
 Creates a new, empty module and transfers ownership to the caller. More...
 
MlirModule mlirModuleCreateParse (MlirContext context, MlirStringRef module)
 Parses a module from the string and transfers ownership to the caller. More...
 
MlirContext mlirModuleGetContext (MlirModule module)
 Gets the context that a module was created with. More...
 
MlirBlock mlirModuleGetBody (MlirModule module)
 Gets the body of the module, i.e. the only block it contains. More...
 
void mlirModuleDestroy (MlirModule module)
 Takes a module owned by the caller and deletes it. More...
 
MlirOperation mlirModuleGetOperation (MlirModule module)
 Views the module as a generic operation. More...
 
MlirModule mlirModuleFromOperation (MlirOperation op)
 Views the generic operation as a module. More...
 
MlirOperationState mlirOperationStateGet (MlirStringRef name, MlirLocation loc)
 Constructs an operation state from a name and a location. More...
 
void mlirOperationStateAddResults (MlirOperationState *state, intptr_t n, MlirType const *results)
 Adds a list of components to the operation state. More...
 
void mlirOperationStateAddOperands (MlirOperationState *state, intptr_t n, MlirValue const *operands)
 
void mlirOperationStateAddOwnedRegions (MlirOperationState *state, intptr_t n, MlirRegion const *regions)
 
void mlirOperationStateAddSuccessors (MlirOperationState *state, intptr_t n, MlirBlock const *successors)
 
void mlirOperationStateAddAttributes (MlirOperationState *state, intptr_t n, MlirNamedAttribute const *attributes)
 
void mlirOperationStateEnableResultTypeInference (MlirOperationState *state)
 Enables result type inference for the operation under construction. More...
 
static LogicalResult inferOperationTypes (OperationState &state)
 
MlirOperation mlirOperationCreate (MlirOperationState *state)
 Creates an operation and transfers ownership to the caller. More...
 
MlirOperation mlirOperationCreateParse (MlirContext context, MlirStringRef sourceStr, MlirStringRef sourceName)
 Parses an operation, giving ownership to the caller. More...
 
MlirOperation mlirOperationClone (MlirOperation op)
 Creates a deep copy of an operation. More...
 
void mlirOperationDestroy (MlirOperation op)
 Takes an operation owned by the caller and destroys it. More...
 
void mlirOperationRemoveFromParent (MlirOperation op)
 Removes the given operation from its parent block. More...
 
bool mlirOperationEqual (MlirOperation op, MlirOperation other)
 Checks whether two operation handles point to the same operation. More...
 
MlirContext mlirOperationGetContext (MlirOperation op)
 Gets the context this operation is associated with. More...
 
MlirLocation mlirOperationGetLocation (MlirOperation op)
 Gets the location of the operation. More...
 
MlirTypeID mlirOperationGetTypeID (MlirOperation op)
 Gets the type id of the operation. More...
 
MlirIdentifier mlirOperationGetName (MlirOperation op)
 Gets the name of the operation as an identifier. More...
 
MlirBlock mlirOperationGetBlock (MlirOperation op)
 Gets the block that owns this operation, returning null if the operation is not owned. More...
 
MlirOperation mlirOperationGetParentOperation (MlirOperation op)
 Gets the operation that owns this operation, returning null if the operation is not owned. More...
 
intptr_t mlirOperationGetNumRegions (MlirOperation op)
 Returns the number of regions attached to the given operation. More...
 
MlirRegion mlirOperationGetRegion (MlirOperation op, intptr_t pos)
 Returns pos-th region attached to the operation. More...
 
MlirRegion mlirOperationGetFirstRegion (MlirOperation op)
 Returns first region attached to the operation. More...
 
MlirRegion mlirRegionGetNextInOperation (MlirRegion region)
 Returns the region immediately following the given region in its parent operation. More...
 
MlirOperation mlirOperationGetNextInBlock (MlirOperation op)
 Returns an operation immediately following the given operation it its enclosing block. More...
 
intptr_t mlirOperationGetNumOperands (MlirOperation op)
 Returns the number of operands of the operation. More...
 
MlirValue mlirOperationGetOperand (MlirOperation op, intptr_t pos)
 Returns pos-th operand of the operation. More...
 
void mlirOperationSetOperand (MlirOperation op, intptr_t pos, MlirValue newValue)
 Sets the pos-th operand of the operation. More...
 
intptr_t mlirOperationGetNumResults (MlirOperation op)
 Returns the number of results of the operation. More...
 
MlirValue mlirOperationGetResult (MlirOperation op, intptr_t pos)
 Returns pos-th result of the operation. More...
 
intptr_t mlirOperationGetNumSuccessors (MlirOperation op)
 Returns the number of successor blocks of the operation. More...
 
MlirBlock mlirOperationGetSuccessor (MlirOperation op, intptr_t pos)
 Returns pos-th successor of the operation. More...
 
intptr_t mlirOperationGetNumAttributes (MlirOperation op)
 Returns the number of attributes attached to the operation. More...
 
MlirNamedAttribute mlirOperationGetAttribute (MlirOperation op, intptr_t pos)
 Return pos-th attribute of the operation. More...
 
MlirAttribute mlirOperationGetAttributeByName (MlirOperation op, MlirStringRef name)
 Returns an attribute attached to the operation given its name. More...
 
void mlirOperationSetAttributeByName (MlirOperation op, MlirStringRef name, MlirAttribute attr)
 Sets an attribute by name, replacing the existing if it exists or adding a new one otherwise. More...
 
bool mlirOperationRemoveAttributeByName (MlirOperation op, MlirStringRef name)
 Removes an attribute by name. More...
 
void mlirOperationPrint (MlirOperation op, MlirStringCallback callback, void *userData)
 Prints an operation by sending chunks of the string representation and forwarding userData tocallback`. More...
 
void mlirOperationPrintWithFlags (MlirOperation op, MlirOpPrintingFlags flags, MlirStringCallback callback, void *userData)
 Same as mlirOperationPrint but accepts flags controlling the printing behavior. More...
 
void mlirOperationWriteBytecode (MlirOperation op, MlirStringCallback callback, void *userData)
 Same as mlirOperationPrint but writing the bytecode format out. More...
 
void mlirOperationDump (MlirOperation op)
 Prints an operation to stderr. More...
 
bool mlirOperationVerify (MlirOperation op)
 Verify the operation and return true if it passes, false if it fails. More...
 
void mlirOperationMoveAfter (MlirOperation op, MlirOperation other)
 Moves the given operation immediately after the other operation in its parent block. More...
 
void mlirOperationMoveBefore (MlirOperation op, MlirOperation other)
 Moves the given operation immediately before the other operation in its parent block. More...
 
MlirRegion mlirRegionCreate ()
 Creates a new empty region and transfers ownership to the caller. More...
 
bool mlirRegionEqual (MlirRegion region, MlirRegion other)
 Checks whether two region handles point to the same region. More...
 
MlirBlock mlirRegionGetFirstBlock (MlirRegion region)
 Gets the first block in the region. More...
 
void mlirRegionAppendOwnedBlock (MlirRegion region, MlirBlock block)
 Takes a block owned by the caller and appends it to the given region. More...
 
void mlirRegionInsertOwnedBlock (MlirRegion region, intptr_t pos, MlirBlock block)
 Takes a block owned by the caller and inserts it at pos to the given region. More...
 
void mlirRegionInsertOwnedBlockAfter (MlirRegion region, MlirBlock reference, MlirBlock block)
 Takes a block owned by the caller and inserts it after the (non-owned) reference block in the given region. More...
 
void mlirRegionInsertOwnedBlockBefore (MlirRegion region, MlirBlock reference, MlirBlock block)
 Takes a block owned by the caller and inserts it before the (non-owned) reference block in the given region. More...
 
void mlirRegionDestroy (MlirRegion region)
 Takes a region owned by the caller and destroys it. More...
 
MlirBlock mlirBlockCreate (intptr_t nArgs, MlirType const *args, MlirLocation const *locs)
 Creates a new empty block with the given argument types and transfers ownership to the caller. More...
 
bool mlirBlockEqual (MlirBlock block, MlirBlock other)
 Checks whether two blocks handles point to the same block. More...
 
MlirOperation mlirBlockGetParentOperation (MlirBlock block)
 Returns the closest surrounding operation that contains this block. More...
 
MlirRegion mlirBlockGetParentRegion (MlirBlock block)
 Returns the region that contains this block. More...
 
MlirBlock mlirBlockGetNextInRegion (MlirBlock block)
 Returns the block immediately following the given block in its parent region. More...
 
MlirOperation mlirBlockGetFirstOperation (MlirBlock block)
 Returns the first operation in the block. More...
 
MlirOperation mlirBlockGetTerminator (MlirBlock block)
 Returns the terminator operation in the block or null if no terminator. More...
 
void mlirBlockAppendOwnedOperation (MlirBlock block, MlirOperation operation)
 Takes an operation owned by the caller and appends it to the block. More...
 
void mlirBlockInsertOwnedOperation (MlirBlock block, intptr_t pos, MlirOperation operation)
 Takes an operation owned by the caller and inserts it as pos to the block. More...
 
void mlirBlockInsertOwnedOperationAfter (MlirBlock block, MlirOperation reference, MlirOperation operation)
 Takes an operation owned by the caller and inserts it after the (non-owned) reference operation in the given block. More...
 
void mlirBlockInsertOwnedOperationBefore (MlirBlock block, MlirOperation reference, MlirOperation operation)
 Takes an operation owned by the caller and inserts it before the (non-owned) reference operation in the given block. More...
 
void mlirBlockDestroy (MlirBlock block)
 Takes a block owned by the caller and destroys it. More...
 
void mlirBlockDetach (MlirBlock block)
 Detach a block from the owning region and assume ownership. More...
 
intptr_t mlirBlockGetNumArguments (MlirBlock block)
 Returns the number of arguments of the block. More...
 
MlirValue mlirBlockAddArgument (MlirBlock block, MlirType type, MlirLocation loc)
 Appends an argument of the specified type to the block. More...
 
MlirValue mlirBlockGetArgument (MlirBlock block, intptr_t pos)
 Returns pos-th argument of the block. More...
 
void mlirBlockPrint (MlirBlock block, MlirStringCallback callback, void *userData)
 Prints a block by sending chunks of the string representation and forwarding userData tocallback`. More...
 
bool mlirValueEqual (MlirValue value1, MlirValue value2)
 Returns 1 if two values are equal, 0 otherwise. More...
 
bool mlirValueIsABlockArgument (MlirValue value)
 Returns 1 if the value is a block argument, 0 otherwise. More...
 
bool mlirValueIsAOpResult (MlirValue value)
 Returns 1 if the value is an operation result, 0 otherwise. More...
 
MlirBlock mlirBlockArgumentGetOwner (MlirValue value)
 Returns the block in which this value is defined as an argument. More...
 
intptr_t mlirBlockArgumentGetArgNumber (MlirValue value)
 Returns the position of the value in the argument list of its block. More...
 
void mlirBlockArgumentSetType (MlirValue value, MlirType type)
 Sets the type of the block argument to the given type. More...
 
MlirOperation mlirOpResultGetOwner (MlirValue value)
 Returns an operation that produced this value as its result. More...
 
intptr_t mlirOpResultGetResultNumber (MlirValue value)
 Returns the position of the value in the list of results of the operation that produced it. More...
 
MlirType mlirValueGetType (MlirValue value)
 Returns the type of the value. More...
 
void mlirValueDump (MlirValue value)
 Prints the value to the standard error stream. More...
 
void mlirValuePrint (MlirValue value, MlirStringCallback callback, void *userData)
 Prints a value by sending chunks of the string representation and forwarding userData tocallback`. More...
 
MlirOpOperand mlirValueGetFirstUse (MlirValue value)
 Returns an op operand representing the first use of the value, or a null op operand if there are no uses. More...
 
bool mlirOpOperandIsNull (MlirOpOperand opOperand)
 Returns whether the op operand is null. More...
 
MlirOperation mlirOpOperandGetOwner (MlirOpOperand opOperand)
 Returns the owner operation of an op operand. More...
 
unsigned mlirOpOperandGetOperandNumber (MlirOpOperand opOperand)
 Returns the operand number of an op operand. More...
 
MlirOpOperand mlirOpOperandGetNextUse (MlirOpOperand opOperand)
 Returns an op operand representing the next use of the value, or a null op operand if there is no next use. More...
 
MlirType mlirTypeParseGet (MlirContext context, MlirStringRef type)
 Parses a type. The type is owned by the context. More...
 
MlirContext mlirTypeGetContext (MlirType type)
 Gets the context that a type was created with. More...
 
MlirTypeID mlirTypeGetTypeID (MlirType type)
 Gets the type ID of the type. More...
 
bool mlirTypeEqual (MlirType t1, MlirType t2)
 Checks if two types are equal. More...
 
void mlirTypePrint (MlirType type, MlirStringCallback callback, void *userData)
 Prints a location by sending chunks of the string representation and forwarding userData tocallback`. More...
 
void mlirTypeDump (MlirType type)
 Prints the type to the standard error stream. More...
 
MlirAttribute mlirAttributeParseGet (MlirContext context, MlirStringRef attr)
 Parses an attribute. The attribute is owned by the context. More...
 
MlirContext mlirAttributeGetContext (MlirAttribute attribute)
 Gets the context that an attribute was created with. More...
 
MlirType mlirAttributeGetType (MlirAttribute attribute)
 Gets the type of this attribute. More...
 
MlirTypeID mlirAttributeGetTypeID (MlirAttribute attr)
 Gets the type id of the attribute. More...
 
bool mlirAttributeEqual (MlirAttribute a1, MlirAttribute a2)
 Checks if two attributes are equal. More...
 
void mlirAttributePrint (MlirAttribute attr, MlirStringCallback callback, void *userData)
 Prints an attribute by sending chunks of the string representation and forwarding userData tocallback`. More...
 
void mlirAttributeDump (MlirAttribute attr)
 Prints the attribute to the standard error stream. More...
 
MlirNamedAttribute mlirNamedAttributeGet (MlirIdentifier name, MlirAttribute attr)
 Associates an attribute with the name. Takes ownership of neither. More...
 
MlirIdentifier mlirIdentifierGet (MlirContext context, MlirStringRef str)
 Gets an identifier with the given string value. More...
 
MlirContext mlirIdentifierGetContext (MlirIdentifier ident)
 Returns the context associated with this identifier. More...
 
bool mlirIdentifierEqual (MlirIdentifier ident, MlirIdentifier other)
 Checks whether two identifiers are the same. More...
 
MlirStringRef mlirIdentifierStr (MlirIdentifier ident)
 Gets the string value of the identifier. More...
 
MlirStringRef mlirSymbolTableGetSymbolAttributeName ()
 Returns the name of the attribute used to store symbol names compatible with symbol tables. More...
 
MlirStringRef mlirSymbolTableGetVisibilityAttributeName ()
 Returns the name of the attribute used to store symbol visibility. More...
 
MlirSymbolTable mlirSymbolTableCreate (MlirOperation operation)
 Creates a symbol table for the given operation. More...
 
void mlirSymbolTableDestroy (MlirSymbolTable symbolTable)
 Destroys the symbol table created with mlirSymbolTableCreate. More...
 
MlirOperation mlirSymbolTableLookup (MlirSymbolTable symbolTable, MlirStringRef name)
 Looks up a symbol with the given name in the given symbol table and returns the operation that corresponds to the symbol. More...
 
MlirAttribute mlirSymbolTableInsert (MlirSymbolTable symbolTable, MlirOperation operation)
 Inserts the given operation into the given symbol table. More...
 
void mlirSymbolTableErase (MlirSymbolTable symbolTable, MlirOperation operation)
 Removes the given operation from the symbol table and erases it. More...
 
MlirLogicalResult mlirSymbolTableReplaceAllSymbolUses (MlirStringRef oldSymbol, MlirStringRef newSymbol, MlirOperation from)
 Attempt to replace all uses that are nested within the given operation of the given symbol 'oldSymbol' with the provided 'newSymbol'. More...
 
void mlirSymbolTableWalkSymbolTables (MlirOperation from, bool allSymUsesVisible, void(*callback)(MlirOperation, bool, void *userData), void *userData)
 Walks all symbol table operations nested within, and including, op. More...
 

Macro Definition Documentation

◆ APPEND_ELEMS

#define APPEND_ELEMS (   type,
  sizeName,
  elemName 
)
Value:
state->elemName = \
(type *)realloc(state->elemName, (state->sizeName + n) * sizeof(type)); \
memcpy(state->elemName + state->sizeName, elemName, n * sizeof(type)); \
state->sizeName += n;

Definition at line 266 of file IR.cpp.

Function Documentation

◆ inferOperationTypes()

static LogicalResult inferOperationTypes ( OperationState state)
static

◆ mlirAttributeDump()

void mlirAttributeDump ( MlirAttribute  attr)

Prints the attribute to the standard error stream.

Definition at line 841 of file IR.cpp.

References unwrap().

◆ mlirAttributeEqual()

bool mlirAttributeEqual ( MlirAttribute  a1,
MlirAttribute  a2 
)

Checks if two attributes are equal.

Definition at line 831 of file IR.cpp.

References unwrap().

Referenced by mlir::python::PyAttribute::operator==().

◆ mlirAttributeGetContext()

MlirContext mlirAttributeGetContext ( MlirAttribute  attribute)

Gets the context that an attribute was created with.

Definition at line 816 of file IR.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::PyOperation::create(), mlir::python::PyAttribute::createFromCapsule(), and mlir::python::PyNamedAttribute::PyNamedAttribute().

◆ mlirAttributeGetType()

MlirType mlirAttributeGetType ( MlirAttribute  attribute)

Gets the type of this attribute.

Definition at line 820 of file IR.cpp.

References mlir::Attribute::dyn_cast(), mlir::Attribute::getContext(), unwrap(), and wrap().

Referenced by mlir::python::PyConcreteAttribute< DerivedTy, BaseTy >::bind().

◆ mlirAttributeGetTypeID()

MlirTypeID mlirAttributeGetTypeID ( MlirAttribute  attr)

Gets the type id of the attribute.

Definition at line 827 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirAttributeParseGet()

MlirAttribute mlirAttributeParseGet ( MlirContext  context,
MlirStringRef  attr 
)

Parses an attribute. The attribute is owned by the context.

Definition at line 812 of file IR.cpp.

References mlir::parseAttribute(), unwrap(), and wrap().

◆ mlirAttributePrint()

void mlirAttributePrint ( MlirAttribute  attr,
MlirStringCallback  callback,
void *  userData 
)

Prints an attribute by sending chunks of the string representation and forwarding userData tocallback`.

Note that the callback may be called several times with consecutive chunks of the string.

Definition at line 835 of file IR.cpp.

References mlir::Diagnostic::print(), and unwrap().

◆ mlirBlockAddArgument()

MlirValue mlirBlockAddArgument ( MlirBlock  block,
MlirType  type,
MlirLocation  loc 
)

Appends an argument of the specified type to the block.

Returns the newly added argument.

Definition at line 679 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirBlockAppendOwnedOperation()

void mlirBlockAppendOwnedOperation ( MlirBlock  block,
MlirOperation  operation 
)

Takes an operation owned by the caller and appends it to the block.

Definition at line 631 of file IR.cpp.

References unwrap().

Referenced by mlirBlockInsertOwnedOperationBefore().

◆ mlirBlockArgumentGetArgNumber()

intptr_t mlirBlockArgumentGetArgNumber ( MlirValue  value)

Returns the position of the value in the argument list of its block.

Definition at line 714 of file IR.cpp.

References unwrap().

◆ mlirBlockArgumentGetOwner()

MlirBlock mlirBlockArgumentGetOwner ( MlirValue  value)

Returns the block in which this value is defined as an argument.

Asserts if the value is not a block argument.

Definition at line 710 of file IR.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::PyValue::createFromCapsule().

◆ mlirBlockArgumentSetType()

void mlirBlockArgumentSetType ( MlirValue  value,
MlirType  type 
)

Sets the type of the block argument to the given type.

Definition at line 719 of file IR.cpp.

References unwrap().

◆ mlirBlockCreate()

MlirBlock mlirBlockCreate ( intptr_t  nArgs,
MlirType const *  args,
MlirLocation const *  locs 
)

Creates a new empty block with the given argument types and transfers ownership to the caller.

Definition at line 590 of file IR.cpp.

References mlir::Block::addArgument(), unwrap(), and wrap().

◆ mlirBlockDestroy()

void mlirBlockDestroy ( MlirBlock  block)

Takes a block owned by the caller and destroys it.

Definition at line 668 of file IR.cpp.

References unwrap().

◆ mlirBlockDetach()

void mlirBlockDetach ( MlirBlock  block)

Detach a block from the owning region and assume ownership.

Definition at line 670 of file IR.cpp.

References mlir::Region::getBlocks(), mlir::Block::getParent(), and unwrap().

◆ mlirBlockEqual()

bool mlirBlockEqual ( MlirBlock  block,
MlirBlock  other 
)

Checks whether two blocks handles point to the same block.

This does not perform deep comparison.

Definition at line 598 of file IR.cpp.

References unwrap().

◆ mlirBlockGetArgument()

MlirValue mlirBlockGetArgument ( MlirBlock  block,
intptr_t  pos 
)

Returns pos-th argument of the block.

Definition at line 684 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirBlockGetFirstOperation()

MlirOperation mlirBlockGetFirstOperation ( MlirBlock  block)

Returns the first operation in the block.

Definition at line 614 of file IR.cpp.

References mlir::Block::empty(), mlir::Block::front(), unwrap(), and wrap().

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

◆ mlirBlockGetNextInRegion()

MlirBlock mlirBlockGetNextInRegion ( MlirBlock  block)

Returns the block immediately following the given block in its parent region.

Definition at line 610 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirBlockGetNumArguments()

intptr_t mlirBlockGetNumArguments ( MlirBlock  block)

Returns the number of arguments of the block.

Definition at line 675 of file IR.cpp.

References unwrap().

◆ mlirBlockGetParentOperation()

MlirOperation mlirBlockGetParentOperation ( MlirBlock  block)

Returns the closest surrounding operation that contains this block.

Definition at line 602 of file IR.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::PyValue::createFromCapsule().

◆ mlirBlockGetParentRegion()

MlirRegion mlirBlockGetParentRegion ( MlirBlock  block)

Returns the region that contains this block.

Definition at line 606 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirBlockGetTerminator()

MlirOperation mlirBlockGetTerminator ( MlirBlock  block)

Returns the terminator operation in the block or null if no terminator.

Definition at line 621 of file IR.cpp.

References mlir::Block::back(), mlir::Block::empty(), mlir::Operation::hasTrait(), unwrap(), and wrap().

Referenced by mlir::python::PyInsertionPoint::atBlockTerminator(), and mlir::python::PyInsertionPoint::insert().

◆ mlirBlockInsertOwnedOperation()

void mlirBlockInsertOwnedOperation ( MlirBlock  block,
intptr_t  pos,
MlirOperation  operation 
)

Takes an operation owned by the caller and inserts it as pos to the block.

This is an expensive operation that scans the block linearly, prefer insertBefore/After instead.

Definition at line 635 of file IR.cpp.

References unwrap().

◆ mlirBlockInsertOwnedOperationAfter()

void mlirBlockInsertOwnedOperationAfter ( MlirBlock  block,
MlirOperation  reference,
MlirOperation  operation 
)

Takes an operation owned by the caller and inserts it after the (non-owned) reference operation in the given block.

If the reference is null, prepends the operation. Otherwise, the reference must belong to the block.

Definition at line 641 of file IR.cpp.

References mlir::Block::begin(), mlir::Block::getOperations(), mlirOperationIsNull(), and unwrap().

◆ mlirBlockInsertOwnedOperationBefore()

void mlirBlockInsertOwnedOperationBefore ( MlirBlock  block,
MlirOperation  reference,
MlirOperation  operation 
)

Takes an operation owned by the caller and inserts it before the (non-owned) reference operation in the given block.

If the reference is null, appends the operation. Otherwise, the reference must belong to the block.

Definition at line 656 of file IR.cpp.

References mlirBlockAppendOwnedOperation(), mlirOperationIsNull(), and unwrap().

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

◆ mlirBlockPrint()

void mlirBlockPrint ( MlirBlock  block,
MlirStringCallback  callback,
void *  userData 
)

Prints a block by sending chunks of the string representation and forwarding userData tocallback`.

Note that the callback may be called several times with consecutive chunks of the string.

Definition at line 688 of file IR.cpp.

References mlir::Diagnostic::print(), and unwrap().

◆ mlirContextAppendDialectRegistry()

void mlirContextAppendDialectRegistry ( MlirContext  ctx,
MlirDialectRegistry  registry 
)

Append the contents of the given dialect registry to the registry associated with the context.

Definition at line 58 of file IR.cpp.

References unwrap().

◆ mlirContextCreate()

MlirContext mlirContextCreate ( void  )

Creates an MLIR context and transfers its ownership to the caller.

Definition at line 36 of file IR.cpp.

References wrap().

Referenced by mlir::python::PyMlirContext::createNewContextForInit().

◆ mlirContextDestroy()

void mlirContextDestroy ( MlirContext  context)

Takes an MLIR context owned by the caller and destroys it.

Definition at line 45 of file IR.cpp.

References unwrap().

Referenced by mlir::python::PyMlirContext::~PyMlirContext().

◆ mlirContextEnableMultithreading()

void mlirContextEnableMultithreading ( MlirContext  context,
bool  enable 
)

Set threading mode (must be set to false to mlir-print-ir-after-all).

Definition at line 78 of file IR.cpp.

References unwrap().

◆ mlirContextEqual()

bool mlirContextEqual ( MlirContext  ctx1,
MlirContext  ctx2 
)

Checks if two contexts are equal.

Definition at line 41 of file IR.cpp.

References unwrap().

◆ mlirContextGetAllowUnregisteredDialects()

bool mlirContextGetAllowUnregisteredDialects ( MlirContext  context)

Returns whether the context allows unregistered dialects.

Definition at line 51 of file IR.cpp.

References unwrap().

◆ mlirContextGetNumLoadedDialects()

intptr_t mlirContextGetNumLoadedDialects ( MlirContext  context)

Returns the number of dialects loaded by the context.

Definition at line 65 of file IR.cpp.

References unwrap().

◆ mlirContextGetNumRegisteredDialects()

intptr_t mlirContextGetNumRegisteredDialects ( MlirContext  context)

Returns the number of dialects registered with the given context.

A registered dialect will be loaded if needed by the parser.

Definition at line 54 of file IR.cpp.

References unwrap().

◆ mlirContextGetOrLoadDialect()

MlirDialect mlirContextGetOrLoadDialect ( MlirContext  context,
MlirStringRef  name 
)

Gets the dialect instance owned by the given context using the dialect namespace to identify it, loads (i.e., constructs the instance of) the dialect if necessary.

If the dialect is not registered with the context, returns null. Use mlirContextLoad<Name>Dialect to load an unregistered dialect.

Definition at line 69 of file IR.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::PyDialects::getDialectForKey().

◆ mlirContextIsRegisteredOperation()

bool mlirContextIsRegisteredOperation ( MlirContext  context,
MlirStringRef  name 
)

Returns whether the given fully-qualified operation (i.e.

'dialect.operation') is registered with the context. This will return true if the dialect is loaded and the operation is registered within the dialect.

Definition at line 74 of file IR.cpp.

References unwrap().

◆ mlirContextLoadAllAvailableDialects()

void mlirContextLoadAllAvailableDialects ( MlirContext  context)

Eagerly loads all available dialects registered with a context, making them available for use for IR construction.

Definition at line 82 of file IR.cpp.

References unwrap().

◆ mlirContextSetAllowUnregisteredDialects()

void mlirContextSetAllowUnregisteredDialects ( MlirContext  context,
bool  allow 
)

Sets whether unregistered dialects are allowed in this context.

Definition at line 47 of file IR.cpp.

References unwrap().

◆ mlirDialectEqual()

bool mlirDialectEqual ( MlirDialect  dialect1,
MlirDialect  dialect2 
)

Checks if two dialects that belong to the same context are equal.

Dialects from different contexts will not compare equal.

Definition at line 94 of file IR.cpp.

References unwrap().

◆ mlirDialectGetContext()

MlirContext mlirDialectGetContext ( MlirDialect  dialect)

Returns the context that owns the dialect.

Definition at line 90 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirDialectGetNamespace()

MlirStringRef mlirDialectGetNamespace ( MlirDialect  dialect)

Returns the namespace of the given dialect.

Definition at line 98 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirDialectRegistryCreate()

MlirDialectRegistry mlirDialectRegistryCreate ( void  )

Creates a dialect registry and transfers its ownership to the caller.

Definition at line 106 of file IR.cpp.

References wrap().

◆ mlirDialectRegistryDestroy()

void mlirDialectRegistryDestroy ( MlirDialectRegistry  registry)

Takes a dialect registry owned by the caller and destroys it.

Definition at line 110 of file IR.cpp.

References unwrap().

Referenced by mlir::python::PyDialectRegistry::~PyDialectRegistry().

◆ mlirIdentifierEqual()

bool mlirIdentifierEqual ( MlirIdentifier  ident,
MlirIdentifier  other 
)

Checks whether two identifiers are the same.

Definition at line 860 of file IR.cpp.

References unwrap().

◆ mlirIdentifierGet()

MlirIdentifier mlirIdentifierGet ( MlirContext  context,
MlirStringRef  str 
)

Gets an identifier with the given string value.

Definition at line 852 of file IR.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::PyOperation::create(), and mlir::python::PyNamedAttribute::PyNamedAttribute().

◆ mlirIdentifierGetContext()

MlirContext mlirIdentifierGetContext ( MlirIdentifier  ident)

Returns the context associated with this identifier.

Definition at line 856 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirIdentifierStr()

MlirStringRef mlirIdentifierStr ( MlirIdentifier  ident)

Gets the string value of the identifier.

Definition at line 864 of file IR.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::PyOperation::createOpView(), and mlir::python::PyConcreteOpInterface< ConcreteIface >::PyConcreteOpInterface().

◆ mlirLocationCallSiteGet()

MlirLocation mlirLocationCallSiteGet ( MlirLocation  callee,
MlirLocation  caller 
)

Creates a call site location with a callee and a caller.

Definition at line 167 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirLocationEqual()

bool mlirLocationEqual ( MlirLocation  l1,
MlirLocation  l2 
)

Checks if two locations are equal.

Definition at line 192 of file IR.cpp.

References unwrap().

◆ mlirLocationFileLineColGet()

MlirLocation mlirLocationFileLineColGet ( MlirContext  context,
MlirStringRef  filename,
unsigned  line,
unsigned  col 
)

Creates an File/Line/Column location owned by the given context.

Definition at line 160 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirLocationFromAttribute()

MlirLocation mlirLocationFromAttribute ( MlirAttribute  attribute)

Creates a location from a location attribute.

Definition at line 156 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirLocationFusedGet()

MlirLocation mlirLocationFusedGet ( MlirContext  ctx,
intptr_t  nLocations,
MlirLocation const *  locations,
MlirAttribute  metadata 
)

Creates a fused location with an array of locations and metadata.

Definition at line 171 of file IR.cpp.

References unwrap(), unwrapList(), and wrap().

◆ mlirLocationGetAttribute()

MlirAttribute mlirLocationGetAttribute ( MlirLocation  location)

Returns the underlying location attribute of this location.

Definition at line 152 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirLocationGetContext()

MlirContext mlirLocationGetContext ( MlirLocation  location)

Gets the context that a location was created with.

Definition at line 196 of file IR.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::PyLocation::createFromCapsule(), and mlir::python::PyDiagnostic::getLocation().

◆ mlirLocationNameGet()

MlirLocation mlirLocationNameGet ( MlirContext  context,
MlirStringRef  name,
MlirLocation  childLoc 
)

Creates a name location owned by the given context.

Providing null location for childLoc is allowed and if childLoc is null location, then the behavior is the same as having unknown child location.

Definition at line 179 of file IR.cpp.

References mlirLocationIsNull(), unwrap(), and wrap().

◆ mlirLocationPrint()

void mlirLocationPrint ( MlirLocation  location,
MlirStringCallback  callback,
void *  userData 
)

Prints a location by sending chunks of the string representation and forwarding userData tocallback`.

Note that the callback may be called several times with consecutive chunks of the string.

Definition at line 200 of file IR.cpp.

References mlir::Diagnostic::print(), and unwrap().

◆ mlirLocationUnknownGet()

MlirLocation mlirLocationUnknownGet ( MlirContext  context)

Creates a location with unknown position owned by the given context.

Definition at line 188 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirModuleCreateEmpty()

MlirModule mlirModuleCreateEmpty ( MlirLocation  location)

Creates a new, empty module and transfers ownership to the caller.

Definition at line 210 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirModuleCreateParse()

MlirModule mlirModuleCreateParse ( MlirContext  context,
MlirStringRef  module 
)

Parses a module from the string and transfers ownership to the caller.

Definition at line 214 of file IR.cpp.

References mlir::OwningOpRef< OpTy >::release(), and unwrap().

◆ mlirModuleDestroy()

void mlirModuleDestroy ( MlirModule  module)

Takes a module owned by the caller and deletes it.

Definition at line 230 of file IR.cpp.

References unwrap().

Referenced by mlir::python::PyModule::~PyModule().

◆ mlirModuleFromOperation()

MlirModule mlirModuleFromOperation ( MlirOperation  op)

Views the generic operation as a module.

The returned module is null when the input operation was not a ModuleOp.

Definition at line 240 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirModuleGetBody()

MlirBlock mlirModuleGetBody ( MlirModule  module)

Gets the body of the module, i.e. the only block it contains.

Definition at line 226 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirModuleGetContext()

MlirContext mlirModuleGetContext ( MlirModule  module)

Gets the context that a module was created with.

Definition at line 222 of file IR.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::PyModule::forModule().

◆ mlirModuleGetOperation()

MlirOperation mlirModuleGetOperation ( MlirModule  module)

Views the module as a generic operation.

Definition at line 236 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirNamedAttributeGet()

MlirNamedAttribute mlirNamedAttributeGet ( MlirIdentifier  name,
MlirAttribute  attr 
)

Associates an attribute with the name. Takes ownership of neither.

Definition at line 843 of file IR.cpp.

Referenced by mlir::python::PyOperation::create(), and mlir::python::PyNamedAttribute::PyNamedAttribute().

◆ mlirOperationClone()

MlirOperation mlirOperationClone ( MlirOperation  op)

Creates a deep copy of an operation.

The operation is not inserted and ownership is transferred to the caller.

Definition at line 380 of file IR.cpp.

References mlir::clone(), unwrap(), and wrap().

Referenced by mlir::python::PyOperation::clone().

◆ mlirOperationCreate()

MlirOperation mlirOperationCreate ( MlirOperationState state)

Creates an operation and transfers ownership to the caller.

Note that caller owned child objects are transferred in this call and must not be further used. Particularly, this applies to any regions added to the state (the implementation may invalidate any such pointers).

This call can fail under the following conditions, in which case, it will return a null operation and emit diagnostics:

  • Result type inference is enabled and cannot be performed.

Definition at line 333 of file IR.cpp.

References mlir::OperationState::addAttribute(), mlir::OperationState::addOperands(), mlir::OperationState::addRegion(), mlir::OperationState::addSuccessors(), mlir::OperationState::addTypes(), MlirNamedAttribute::attribute, MlirOperationState::attributes, mlir::OperationState::attributes, mlir::Operation::create(), MlirOperationState::enableResultTypeInference, mlir::failed(), inferOperationTypes(), MlirOperationState::location, MlirNamedAttribute::name, MlirOperationState::name, MlirOperationState::nAttributes, MlirOperationState::nOperands, MlirOperationState::nRegions, MlirOperationState::nResults, MlirOperationState::nSuccessors, MlirOperationState::operands, MlirOperationState::regions, mlir::NamedAttrList::reserve(), MlirOperationState::results, MlirOperationState::successors, mlir::OperationState::types, unwrap(), unwrapList(), and wrap().

Referenced by mlir::python::PyOperation::create().

◆ mlirOperationCreateParse()

MlirOperation mlirOperationCreateParse ( MlirContext  context,
MlirStringRef  sourceStr,
MlirStringRef  sourceName 
)

Parses an operation, giving ownership to the caller.

If parsing fails a null operation will be returned, and an error diagnostic emitted.

sourceStr may be either the text assembly format, or binary bytecode format. sourceName is used as the file name of the source; any IR without locations will get a FileLineColLoc location with sourceName as the file name.

Definition at line 371 of file IR.cpp.

References mlir::parseSourceString(), unwrap(), and wrap().

Referenced by mlir::python::PyOperation::parse().

◆ mlirOperationDestroy()

void mlirOperationDestroy ( MlirOperation  op)

Takes an operation owned by the caller and destroys it.

Definition at line 384 of file IR.cpp.

References unwrap().

Referenced by mlir::python::PyOperation::erase(), and mlir::python::PyOperation::~PyOperation().

◆ mlirOperationDump()

void mlirOperationDump ( MlirOperation  op)

Prints an operation to stderr.

Definition at line 516 of file IR.cpp.

References unwrap().

◆ mlirOperationEqual()

bool mlirOperationEqual ( MlirOperation  op,
MlirOperation  other 
)

Checks whether two operation handles point to the same operation.

This does not perform deep comparison.

Definition at line 388 of file IR.cpp.

References unwrap().

◆ mlirOperationGetAttribute()

MlirNamedAttribute mlirOperationGetAttribute ( MlirOperation  op,
intptr_t  pos 
)

Return pos-th attribute of the operation.

Definition at line 479 of file IR.cpp.

References mlir::NamedAttribute::getName(), mlir::NamedAttribute::getValue(), unwrap(), and wrap().

◆ mlirOperationGetAttributeByName()

MlirAttribute mlirOperationGetAttributeByName ( MlirOperation  op,
MlirStringRef  name 
)

◆ mlirOperationGetBlock()

MlirBlock mlirOperationGetBlock ( MlirOperation  op)

Gets the block that owns this operation, returning null if the operation is not owned.

Definition at line 410 of file IR.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::PyOperation::getBlock().

◆ mlirOperationGetContext()

MlirContext mlirOperationGetContext ( MlirOperation  op)

Gets the context this operation is associated with.

Definition at line 392 of file IR.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::PyOperation::createFromCapsule(), and mlir::python::PyValue::createFromCapsule().

◆ mlirOperationGetFirstRegion()

MlirRegion mlirOperationGetFirstRegion ( MlirOperation  op)

Returns first region attached to the operation.

Definition at line 426 of file IR.cpp.

References mlir::Operation::getNumRegions(), mlir::Operation::getRegion(), unwrap(), and wrap().

◆ mlirOperationGetLocation()

MlirLocation mlirOperationGetLocation ( MlirOperation  op)

Gets the location of the operation.

Definition at line 396 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirOperationGetName()

MlirIdentifier mlirOperationGetName ( MlirOperation  op)

Gets the name of the operation as an identifier.

Definition at line 406 of file IR.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::PyOperation::createOpView(), and mlir::python::PyConcreteOpInterface< ConcreteIface >::PyConcreteOpInterface().

◆ mlirOperationGetNextInBlock()

MlirOperation mlirOperationGetNextInBlock ( MlirOperation  op)

Returns an operation immediately following the given operation it its enclosing block.

Definition at line 442 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirOperationGetNumAttributes()

intptr_t mlirOperationGetNumAttributes ( MlirOperation  op)

Returns the number of attributes attached to the operation.

Definition at line 475 of file IR.cpp.

References unwrap().

◆ mlirOperationGetNumOperands()

intptr_t mlirOperationGetNumOperands ( MlirOperation  op)

Returns the number of operands of the operation.

Definition at line 446 of file IR.cpp.

References unwrap().

◆ mlirOperationGetNumRegions()

intptr_t mlirOperationGetNumRegions ( MlirOperation  op)

Returns the number of regions attached to the given operation.

Definition at line 418 of file IR.cpp.

References unwrap().

◆ mlirOperationGetNumResults()

intptr_t mlirOperationGetNumResults ( MlirOperation  op)

Returns the number of results of the operation.

Definition at line 459 of file IR.cpp.

References unwrap().

◆ mlirOperationGetNumSuccessors()

intptr_t mlirOperationGetNumSuccessors ( MlirOperation  op)

Returns the number of successor blocks of the operation.

Definition at line 467 of file IR.cpp.

References unwrap().

◆ mlirOperationGetOperand()

MlirValue mlirOperationGetOperand ( MlirOperation  op,
intptr_t  pos 
)

Returns pos-th operand of the operation.

Definition at line 450 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirOperationGetParentOperation()

MlirOperation mlirOperationGetParentOperation ( MlirOperation  op)

Gets the operation that owns this operation, returning null if the operation is not owned.

Definition at line 414 of file IR.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::PyOperation::getParentOperation().

◆ mlirOperationGetRegion()

MlirRegion mlirOperationGetRegion ( MlirOperation  op,
intptr_t  pos 
)

Returns pos-th region attached to the operation.

Definition at line 422 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirOperationGetResult()

MlirValue mlirOperationGetResult ( MlirOperation  op,
intptr_t  pos 
)

Returns pos-th result of the operation.

Definition at line 463 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirOperationGetSuccessor()

MlirBlock mlirOperationGetSuccessor ( MlirOperation  op,
intptr_t  pos 
)

Returns pos-th successor of the operation.

Definition at line 471 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirOperationGetTypeID()

MlirTypeID mlirOperationGetTypeID ( MlirOperation  op)

Gets the type id of the operation.

Returns null if the operation does not have a registered operation description.

Definition at line 400 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirOperationMoveAfter()

void mlirOperationMoveAfter ( MlirOperation  op,
MlirOperation  other 
)

Moves the given operation immediately after the other operation in its parent block.

The given operation may be owned by the caller or by its current block. The other operation must belong to a block. In any case, the ownership is transferred to the block of the other operation.

Definition at line 522 of file IR.cpp.

References unwrap().

Referenced by mlir::python::PyOperationBase::moveAfter().

◆ mlirOperationMoveBefore()

void mlirOperationMoveBefore ( MlirOperation  op,
MlirOperation  other 
)

Moves the given operation immediately before the other operation in its parent block.

The given operation may be owner by the caller or by its current block. The other operation must belong to a block. In any case, the ownership is transferred to the block of the other operation.

Definition at line 526 of file IR.cpp.

References unwrap().

Referenced by mlir::python::PyOperationBase::moveBefore().

◆ mlirOperationPrint()

void mlirOperationPrint ( MlirOperation  op,
MlirStringCallback  callback,
void *  userData 
)

Prints an operation by sending chunks of the string representation and forwarding userData tocallback`.

Note that the callback may be called several times with consecutive chunks of the string.

Definition at line 498 of file IR.cpp.

References mlir::Diagnostic::print(), and unwrap().

◆ mlirOperationPrintWithFlags()

void mlirOperationPrintWithFlags ( MlirOperation  op,
MlirOpPrintingFlags  flags,
MlirStringCallback  callback,
void *  userData 
)

Same as mlirOperationPrint but accepts flags controlling the printing behavior.

Definition at line 504 of file IR.cpp.

References mlir::Diagnostic::print(), and unwrap().

Referenced by mlir::python::PyOperationBase::print().

◆ mlirOperationRemoveAttributeByName()

bool mlirOperationRemoveAttributeByName ( MlirOperation  op,
MlirStringRef  name 
)

Removes an attribute by name.

Returns false if the attribute was not found and true if removed.

Definition at line 494 of file IR.cpp.

References unwrap().

◆ mlirOperationRemoveFromParent()

void mlirOperationRemoveFromParent ( MlirOperation  op)

Removes the given operation from its parent block.

The operation is not destroyed. The ownership of the operation is transferred to the caller.

Definition at line 386 of file IR.cpp.

References unwrap().

Referenced by mlir::python::PyOperation::detachFromParent().

◆ mlirOperationSetAttributeByName()

void mlirOperationSetAttributeByName ( MlirOperation  op,
MlirStringRef  name,
MlirAttribute  attr 
)

Sets an attribute by name, replacing the existing if it exists or adding a new one otherwise.

Definition at line 489 of file IR.cpp.

References unwrap().

Referenced by mlir::python::PySymbolTable::setSymbolName(), and mlir::python::PySymbolTable::setVisibility().

◆ mlirOperationSetOperand()

void mlirOperationSetOperand ( MlirOperation  op,
intptr_t  pos,
MlirValue  newValue 
)

Sets the pos-th operand of the operation.

Definition at line 454 of file IR.cpp.

References unwrap().

◆ mlirOperationStateAddAttributes()

void mlirOperationStateAddAttributes ( MlirOperationState state,
intptr_t  n,
MlirNamedAttribute const *  attributes 
)

Definition at line 289 of file IR.cpp.

References APPEND_ELEMS.

Referenced by mlir::python::PyOperation::create().

◆ mlirOperationStateAddOperands()

void mlirOperationStateAddOperands ( MlirOperationState state,
intptr_t  n,
MlirValue const *  operands 
)

Definition at line 277 of file IR.cpp.

References APPEND_ELEMS.

Referenced by mlir::python::PyOperation::create().

◆ mlirOperationStateAddOwnedRegions()

void mlirOperationStateAddOwnedRegions ( MlirOperationState state,
intptr_t  n,
MlirRegion const *  regions 
)

Definition at line 281 of file IR.cpp.

References APPEND_ELEMS.

Referenced by mlir::python::PyOperation::create().

◆ mlirOperationStateAddResults()

void mlirOperationStateAddResults ( MlirOperationState state,
intptr_t  n,
MlirType const *  results 
)

Adds a list of components to the operation state.

Definition at line 272 of file IR.cpp.

References APPEND_ELEMS.

Referenced by mlir::python::PyOperation::create().

◆ mlirOperationStateAddSuccessors()

void mlirOperationStateAddSuccessors ( MlirOperationState state,
intptr_t  n,
MlirBlock const *  successors 
)

Definition at line 285 of file IR.cpp.

References APPEND_ELEMS.

Referenced by mlir::python::PyOperation::create().

◆ mlirOperationStateEnableResultTypeInference()

void mlirOperationStateEnableResultTypeInference ( MlirOperationState state)

Enables result type inference for the operation under construction.

If enabled, then the caller must not have called mlirOperationStateAddResults(). Note that if enabled, the mlirOperationCreate() call is failable: it will return a null operation on inference failure and will emit diagnostics.

Definition at line 294 of file IR.cpp.

References MlirOperationState::enableResultTypeInference.

◆ mlirOperationStateGet()

MlirOperationState mlirOperationStateGet ( MlirStringRef  name,
MlirLocation  loc 
)

◆ mlirOperationVerify()

bool mlirOperationVerify ( MlirOperation  op)

Verify the operation and return true if it passes, false if it fails.

Definition at line 518 of file IR.cpp.

References mlir::succeeded(), unwrap(), and mlir::verify().

Referenced by mlir::python::PyOperationBase::verify().

◆ mlirOperationWriteBytecode()

void mlirOperationWriteBytecode ( MlirOperation  op,
MlirStringCallback  callback,
void *  userData 
)

Same as mlirOperationPrint but writing the bytecode format out.

Definition at line 510 of file IR.cpp.

References unwrap(), and mlir::writeBytecodeToFile().

Referenced by mlir::python::PyOperationBase::writeBytecode().

◆ mlirOpOperandGetNextUse()

MlirOpOperand mlirOpOperandGetNextUse ( MlirOpOperand  opOperand)

Returns an op operand representing the next use of the value, or a null op operand if there is no next use.

Definition at line 768 of file IR.cpp.

References mlirOpOperandIsNull(), unwrap(), and wrap().

◆ mlirOpOperandGetOperandNumber()

unsigned mlirOpOperandGetOperandNumber ( MlirOpOperand  opOperand)

Returns the operand number of an op operand.

Definition at line 764 of file IR.cpp.

References unwrap().

◆ mlirOpOperandGetOwner()

MlirOperation mlirOpOperandGetOwner ( MlirOpOperand  opOperand)

Returns the owner operation of an op operand.

Definition at line 760 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirOpOperandIsNull()

bool mlirOpOperandIsNull ( MlirOpOperand  opOperand)

Returns whether the op operand is null.

Definition at line 758 of file IR.cpp.

Referenced by mlirOpOperandGetNextUse().

◆ mlirOpPrintingFlagsAssumeVerified()

void mlirOpPrintingFlagsAssumeVerified ( MlirOpPrintingFlags  flags)

Do not verify the operation when using custom operation printers.

Definition at line 144 of file IR.cpp.

References unwrap().

Referenced by mlir::python::PyOperationBase::print().

◆ mlirOpPrintingFlagsCreate()

MlirOpPrintingFlags mlirOpPrintingFlagsCreate ( void  )

Creates new printing flags with defaults, intended for customization.

Must be freed with a call to mlirOpPrintingFlagsDestroy().

Definition at line 118 of file IR.cpp.

References wrap().

Referenced by mlir::python::PyOperationBase::print().

◆ mlirOpPrintingFlagsDestroy()

void mlirOpPrintingFlagsDestroy ( MlirOpPrintingFlags  flags)

Destroys printing flags created with mlirOpPrintingFlagsCreate.

Definition at line 122 of file IR.cpp.

References unwrap().

Referenced by mlir::python::PyOperationBase::print().

◆ mlirOpPrintingFlagsElideLargeElementsAttrs()

void mlirOpPrintingFlagsElideLargeElementsAttrs ( MlirOpPrintingFlags  flags,
intptr_t  largeElementLimit 
)

Enables the elision of large elements attributes by printing a lexically valid but otherwise meaningless form instead of the element data.

The largeElementLimit is used to configure what is considered to be a "large" ElementsAttr by providing an upper limit to the number of elements.

Definition at line 126 of file IR.cpp.

References unwrap().

Referenced by mlir::python::PyOperationBase::print().

◆ mlirOpPrintingFlagsEnableDebugInfo()

void mlirOpPrintingFlagsEnableDebugInfo ( MlirOpPrintingFlags  flags,
bool  enable,
bool  prettyForm 
)

Enable or disable printing of debug information (based on enable).

If 'prettyForm' is set to true, debug information is printed in a more readable 'pretty' form. Note: The IR generated with 'prettyForm' is not parsable.

Definition at line 131 of file IR.cpp.

References unwrap().

Referenced by mlir::python::PyOperationBase::print().

◆ mlirOpPrintingFlagsPrintGenericOpForm()

void mlirOpPrintingFlagsPrintGenericOpForm ( MlirOpPrintingFlags  flags)

Always print operations in the generic form.

Definition at line 136 of file IR.cpp.

References unwrap().

Referenced by mlir::python::PyOperationBase::print().

◆ mlirOpPrintingFlagsUseLocalScope()

void mlirOpPrintingFlagsUseLocalScope ( MlirOpPrintingFlags  flags)

Use local scope when printing the operation.

This allows for using the printer in a more localized and thread-safe setting, but may not necessarily be identical to what the IR will look like when dumping the full module.

Definition at line 140 of file IR.cpp.

References unwrap().

Referenced by mlir::python::PyOperationBase::print().

◆ mlirOpResultGetOwner()

MlirOperation mlirOpResultGetOwner ( MlirValue  value)

Returns an operation that produced this value as its result.

Asserts if the value is not an op result.

Definition at line 723 of file IR.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::PyValue::createFromCapsule().

◆ mlirOpResultGetResultNumber()

intptr_t mlirOpResultGetResultNumber ( MlirValue  value)

Returns the position of the value in the list of results of the operation that produced it.

Definition at line 727 of file IR.cpp.

References unwrap().

◆ mlirRegionAppendOwnedBlock()

void mlirRegionAppendOwnedBlock ( MlirRegion  region,
MlirBlock  block 
)

Takes a block owned by the caller and appends it to the given region.

Definition at line 547 of file IR.cpp.

References unwrap().

Referenced by mlirRegionInsertOwnedBlockBefore().

◆ mlirRegionCreate()

MlirRegion mlirRegionCreate ( void  )

Creates a new empty region and transfers ownership to the caller.

Definition at line 534 of file IR.cpp.

References wrap().

Referenced by mlir::python::PyOperation::create().

◆ mlirRegionDestroy()

void mlirRegionDestroy ( MlirRegion  region)

Takes a region owned by the caller and destroys it.

Definition at line 582 of file IR.cpp.

◆ mlirRegionEqual()

bool mlirRegionEqual ( MlirRegion  region,
MlirRegion  other 
)

Checks whether two region handles point to the same region.

This does not perform deep comparison.

Definition at line 536 of file IR.cpp.

References unwrap().

◆ mlirRegionGetFirstBlock()

MlirBlock mlirRegionGetFirstBlock ( MlirRegion  region)

Gets the first block in the region.

Definition at line 540 of file IR.cpp.

References mlir::Region::empty(), mlir::Region::front(), unwrap(), and wrap().

◆ mlirRegionGetNextInOperation()

MlirRegion mlirRegionGetNextInOperation ( MlirRegion  region)

Returns the region immediately following the given region in its parent operation.

Definition at line 433 of file IR.cpp.

References mlir::Operation::getNumRegions(), mlir::Region::getParentOp(), mlir::Operation::getRegion(), mlir::Region::getRegionNumber(), unwrap(), and wrap().

◆ mlirRegionInsertOwnedBlock()

void mlirRegionInsertOwnedBlock ( MlirRegion  region,
intptr_t  pos,
MlirBlock  block 
)

Takes a block owned by the caller and inserts it at pos to the given region.

This is an expensive operation that linearly scans the region, prefer insertAfter/Before instead.

Definition at line 551 of file IR.cpp.

References unwrap().

◆ mlirRegionInsertOwnedBlockAfter()

void mlirRegionInsertOwnedBlockAfter ( MlirRegion  region,
MlirBlock  reference,
MlirBlock  block 
)

Takes a block owned by the caller and inserts it after the (non-owned) reference block in the given region.

The reference block must belong to the region. If the reference block is null, prepends the block to the region.

Definition at line 557 of file IR.cpp.

References mlir::Region::begin(), mlir::Region::getBlocks(), mlirBlockIsNull(), and unwrap().

◆ mlirRegionInsertOwnedBlockBefore()

void mlirRegionInsertOwnedBlockBefore ( MlirRegion  region,
MlirBlock  reference,
MlirBlock  block 
)

Takes a block owned by the caller and inserts it before the (non-owned) reference block in the given region.

The reference block must belong to the region. If the reference block is null, appends the block to the region.

Definition at line 571 of file IR.cpp.

References mlirBlockIsNull(), mlirRegionAppendOwnedBlock(), and unwrap().

◆ mlirSymbolTableCreate()

MlirSymbolTable mlirSymbolTableCreate ( MlirOperation  operation)

Creates a symbol table for the given operation.

If the operation does not have the SymbolTable trait, returns a null symbol table.

Definition at line 880 of file IR.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::PySymbolTable::PySymbolTable().

◆ mlirSymbolTableDestroy()

void mlirSymbolTableDestroy ( MlirSymbolTable  symbolTable)

Destroys the symbol table created with mlirSymbolTableCreate.

This does not affect the operations in the table.

Definition at line 886 of file IR.cpp.

References unwrap().

Referenced by mlir::python::PySymbolTable::~PySymbolTable().

◆ mlirSymbolTableErase()

void mlirSymbolTableErase ( MlirSymbolTable  symbolTable,
MlirOperation  operation 
)

Removes the given operation from the symbol table and erases it.

Definition at line 900 of file IR.cpp.

References unwrap().

Referenced by mlir::python::PySymbolTable::erase().

◆ mlirSymbolTableGetSymbolAttributeName()

MlirStringRef mlirSymbolTableGetSymbolAttributeName ( void  )

Returns the name of the attribute used to store symbol names compatible with symbol tables.

Definition at line 872 of file IR.cpp.

References mlir::SymbolTable::getSymbolAttrName(), and wrap().

Referenced by mlir::python::PySymbolTable::getSymbolName(), mlir::python::PySymbolTable::insert(), and mlir::python::PySymbolTable::setSymbolName().

◆ mlirSymbolTableGetVisibilityAttributeName()

MlirStringRef mlirSymbolTableGetVisibilityAttributeName ( void  )

Returns the name of the attribute used to store symbol visibility.

Definition at line 876 of file IR.cpp.

References mlir::SymbolTable::getVisibilityAttrName(), and wrap().

Referenced by mlir::python::PySymbolTable::getVisibility(), and mlir::python::PySymbolTable::setVisibility().

◆ mlirSymbolTableInsert()

MlirAttribute mlirSymbolTableInsert ( MlirSymbolTable  symbolTable,
MlirOperation  operation 
)

Inserts the given operation into the given symbol table.

The operation must have the symbol trait. If the symbol table already has a symbol with the same name, renames the symbol being inserted to ensure name uniqueness. Note that this does not move the operation itself into the block of the symbol table operation, this should be done separately. Returns the name of the symbol after insertion.

Definition at line 895 of file IR.cpp.

References unwrap(), and wrap().

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

◆ mlirSymbolTableLookup()

MlirOperation mlirSymbolTableLookup ( MlirSymbolTable  symbolTable,
MlirStringRef  name 
)

Looks up a symbol with the given name in the given symbol table and returns the operation that corresponds to the symbol.

If the symbol cannot be found, returns a null operation.

Definition at line 890 of file IR.cpp.

References MlirStringRef::data, MlirStringRef::length, unwrap(), and wrap().

Referenced by mlir::python::PySymbolTable::dunderGetItem().

◆ mlirSymbolTableReplaceAllSymbolUses()

MlirLogicalResult mlirSymbolTableReplaceAllSymbolUses ( MlirStringRef  oldSymbol,
MlirStringRef  newSymbol,
MlirOperation  from 
)

Attempt to replace all uses that are nested within the given operation of the given symbol 'oldSymbol' with the provided 'newSymbol'.

This does not traverse into nested symbol tables. Will fail atomically if there are any unknown operations that may be potential symbol tables.

Definition at line 905 of file IR.cpp.

References mlir::SymbolTable::replaceAllSymbolUses(), unwrap(), and wrap().

Referenced by mlir::python::PySymbolTable::replaceAllSymbolUses().

◆ mlirSymbolTableWalkSymbolTables()

void mlirSymbolTableWalkSymbolTables ( MlirOperation  from,
bool  allSymUsesVisible,
void(*)(MlirOperation, bool, void *userData)  callback,
void *  userData 
)

Walks all symbol table operations nested within, and including, op.

For each symbol table operation, the provided callback is invoked with the op and a boolean signifying if the symbols within that symbol table can be treated as if all uses within the IR are visible to the caller. allSymUsesVisible identifies whether all of the symbol uses of symbols within op are visible.

Definition at line 916 of file IR.cpp.

References unwrap(), mlir::SymbolTable::walkSymbolTables(), and wrap().

Referenced by mlir::python::PySymbolTable::walkSymbolTables().

◆ mlirTypeDump()

void mlirTypeDump ( MlirType  type)

Prints the type to the standard error stream.

Definition at line 806 of file IR.cpp.

References unwrap().

◆ mlirTypeEqual()

bool mlirTypeEqual ( MlirType  t1,
MlirType  t2 
)

Checks if two types are equal.

Definition at line 797 of file IR.cpp.

References unwrap().

Referenced by mlir::python::PyType::operator==().

◆ mlirTypeGetContext()

MlirContext mlirTypeGetContext ( MlirType  type)

Gets the context that a type was created with.

Definition at line 789 of file IR.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::PyType::createFromCapsule().

◆ mlirTypeGetTypeID()

MlirTypeID mlirTypeGetTypeID ( MlirType  type)

Gets the type ID of the type.

Definition at line 793 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirTypeParseGet()

MlirType mlirTypeParseGet ( MlirContext  context,
MlirStringRef  type 
)

Parses a type. The type is owned by the context.

Definition at line 785 of file IR.cpp.

References mlir::parseType(), unwrap(), and wrap().

◆ mlirTypePrint()

void mlirTypePrint ( MlirType  type,
MlirStringCallback  callback,
void *  userData 
)

Prints a location by sending chunks of the string representation and forwarding userData tocallback`.

Note that the callback may be called several times with consecutive chunks of the string.

Definition at line 801 of file IR.cpp.

References mlir::Diagnostic::print(), and unwrap().

◆ mlirValueDump()

void mlirValueDump ( MlirValue  value)

Prints the value to the standard error stream.

Definition at line 736 of file IR.cpp.

References unwrap().

◆ mlirValueEqual()

bool mlirValueEqual ( MlirValue  value1,
MlirValue  value2 
)

Returns 1 if two values are equal, 0 otherwise.

Definition at line 698 of file IR.cpp.

References unwrap().

◆ mlirValueGetFirstUse()

MlirOpOperand mlirValueGetFirstUse ( MlirValue  value)

Returns an op operand representing the first use of the value, or a null op operand if there are no uses.

Definition at line 744 of file IR.cpp.

References mlir::ValueUseIterator< OperandType >::getOperand(), unwrap(), mlir::Value::use_begin(), mlir::Value::use_empty(), and wrap().

◆ mlirValueGetType()

MlirType mlirValueGetType ( MlirValue  value)

Returns the type of the value.

Definition at line 732 of file IR.cpp.

References unwrap(), and wrap().

◆ mlirValueIsABlockArgument()

bool mlirValueIsABlockArgument ( MlirValue  value)

Returns 1 if the value is a block argument, 0 otherwise.

Definition at line 702 of file IR.cpp.

References unwrap().

Referenced by mlir::python::PyValue::createFromCapsule().

◆ mlirValueIsAOpResult()

bool mlirValueIsAOpResult ( MlirValue  value)

Returns 1 if the value is an operation result, 0 otherwise.

Definition at line 706 of file IR.cpp.

References unwrap().

Referenced by mlir::python::PyValue::createFromCapsule().

◆ mlirValuePrint()

void mlirValuePrint ( MlirValue  value,
MlirStringCallback  callback,
void *  userData 
)

Prints a value by sending chunks of the string representation and forwarding userData tocallback`.

Note that the callback may be called several times with consecutive chunks of the string.

Definition at line 738 of file IR.cpp.

References mlir::Diagnostic::print(), and unwrap().