MLIR 24.0.0git
Interfaces.cpp File Reference
#include "mlir-c/Interfaces.h"
#include "mlir/CAPI/IR.h"
#include "mlir/CAPI/Interfaces.h"
#include "mlir/CAPI/Support.h"
#include "mlir/CAPI/Wrap.h"
#include "mlir/IR/ValueRange.h"
#include "mlir/Interfaces/InferTypeOpInterface.h"
#include "mlir/Interfaces/SideEffectInterfaces.h"
#include "llvm/ADT/ScopeExit.h"
#include <optional>

Go to the source code of this file.

Classes

class  ConditionallySpeculatableOpInterfaceFallbackModel
 Fallback model for the ConditionallySpeculatable interface that uses C API callbacks. More...
class  MemoryEffectOpInterfaceFallbackModel
 Fallback model for the MemoryEffectsOpInterface that uses C API callbacks. More...

Functions

bool mlirOperationImplementsInterface (MlirOperation operation, MlirTypeID interfaceTypeID)
 Returns true if the given operation implements an interface identified by its TypeID.
bool mlirOperationImplementsInterfaceStatic (MlirStringRef operationName, MlirContext context, MlirTypeID interfaceTypeID)
 Returns true if the operation identified by its canonical string name implements the interface identified by its TypeID in the given context.
MlirTypeID mlirInferTypeOpInterfaceTypeID ()
 Returns the interface TypeID of the InferTypeOpInterface.
MlirLogicalResult mlirInferTypeOpInterfaceInferReturnTypes (MlirStringRef opName, MlirContext context, MlirLocation location, intptr_t nOperands, MlirValue *operands, MlirAttribute attributes, void *properties, intptr_t nRegions, MlirRegion *regions, MlirTypesCallback callback, void *userData)
 Infers the return types of the operation identified by its canonical given the arguments that will be supplied to its generic builder.
MlirTypeID mlirInferShapedTypeOpInterfaceTypeID ()
 Returns the interface TypeID of the InferShapedTypeOpInterface.
MlirLogicalResult mlirInferShapedTypeOpInterfaceInferReturnTypes (MlirStringRef opName, MlirContext context, MlirLocation location, intptr_t nOperands, MlirValue *operands, MlirAttribute attributes, void *properties, intptr_t nRegions, MlirRegion *regions, MlirShapedTypeComponentsCallback callback, void *userData)
 Infers the return shaped type components of the operation.
MlirTypeID mlirConditionallySpeculatableOpInterfaceTypeID ()
 Returns the interface TypeID of the ConditionallySpeculatable interface.
void mlirConditionallySpeculatableOpInterfaceAttachFallbackModel (MlirContext ctx, MlirStringRef opName, MlirConditionallySpeculatableOpInterfaceCallbacks callbacks)
 Attach a ConditionallySpeculatable FallbackModel to the given named op.
MlirSpeculatability mlirConditionallySpeculatableOpInterfaceGetSpeculatability (MlirOperation operation)
 Returns the speculatability of the given operation.
MlirMemoryEffect mlirMemoryEffectsAllocateGet ()
 Returns the singleton instance of the allocate memory effect.
MlirMemoryEffect mlirMemoryEffectsFreeGet ()
 Returns the singleton instance of the free memory effect.
MlirMemoryEffect mlirMemoryEffectsReadGet ()
 Returns the singleton instance of the read memory effect.
MlirMemoryEffect mlirMemoryEffectsWriteGet ()
 Returns the singleton instance of the write memory effect.
MlirTypeID mlirMemoryEffectGetEffectID (MlirMemoryEffect effect)
 Returns the TypeID identifying the concrete type of the given memory effect.
MlirSideEffectResource mlirSideEffectsDefaultResourceGet ()
 Returns the singleton instance of the default side effect resource.
MlirMemoryEffectInstance mlirMemoryEffectInstanceCreate (MlirMemoryEffect effect, MlirAttribute parameters, int stage, bool effectOnFullRegion, MlirSideEffectResource resource)
 Creates a memory effect instance without an associated IR entity.
MlirMemoryEffectInstance mlirMemoryEffectInstanceCreateForOpOperand (MlirMemoryEffect effect, MlirOpOperand opOperand, MlirAttribute parameters, int stage, bool effectOnFullRegion, MlirSideEffectResource resource)
 Creates a memory effect instance associated with an operation operand.
MlirMemoryEffectInstance mlirMemoryEffectInstanceCreateForOpResult (MlirMemoryEffect effect, MlirValue result, MlirAttribute parameters, int stage, bool effectOnFullRegion, MlirSideEffectResource resource)
 Creates a memory effect instance associated with an operation result.
MlirMemoryEffectInstance mlirMemoryEffectInstanceCreateForBlockArgument (MlirMemoryEffect effect, MlirValue blockArgument, MlirAttribute parameters, int stage, bool effectOnFullRegion, MlirSideEffectResource resource)
 Creates a memory effect instance associated with a block argument.
MlirMemoryEffectInstance mlirMemoryEffectInstanceCreateForSymbol (MlirMemoryEffect effect, MlirAttribute symbol, MlirAttribute parameters, int stage, bool effectOnFullRegion, MlirSideEffectResource resource)
 Creates a memory effect instance associated with a symbol.
void mlirMemoryEffectInstanceDestroy (MlirMemoryEffectInstance instance)
 Destroys a memory effect instance created or cloned by APIs above.
MlirMemoryEffectInstance mlirMemoryEffectInstanceClone (MlirMemoryEffectInstance instance)
 Creates a copy of a memory effect instance.
MlirMemoryEffect mlirMemoryEffectInstanceGetEffect (MlirMemoryEffectInstance instance)
 Returns the memory effect of the given instance.
MlirSideEffectResource mlirMemoryEffectInstanceGetResource (MlirMemoryEffectInstance instance)
 Returns the side effect resource of the given instance.
int mlirMemoryEffectInstanceGetStage (MlirMemoryEffectInstance instance)
 Returns the stage of the given instance.
bool mlirMemoryEffectInstanceGetEffectOnFullRegion (MlirMemoryEffectInstance instance)
 Returns true if the given instance has effect on every single value of the resource.
MlirAttribute mlirMemoryEffectInstanceGetParameters (MlirMemoryEffectInstance instance)
 Returns the parameters of the given instance, or a null attribute if there are no parameters.
MlirValue mlirMemoryEffectInstanceGetValue (MlirMemoryEffectInstance instance)
 Returns the value (OpOperand, OpResult, or BlockArgument) of the given instance, or a null value if there is no associated value.
MlirAttribute mlirMemoryEffectInstanceGetSymbolRef (MlirMemoryEffectInstance instance)
 Returns the symbol reference of the given instance, or a null attribute if there is no associated symbol.
MlirTypeID mlirMemoryEffectsOpInterfaceTypeID ()
 Returns the interface TypeID of the MemoryEffectsOpInterface.
void mlirMemoryEffectsOpInterfaceAttachFallbackModel (MlirContext ctx, MlirStringRef opName, MlirMemoryEffectsOpInterfaceCallbacks callbacks)
 Attach a MemoryEffectsOpInterface FallbackModel to the given named op.
void mlirMemoryEffectsOpInterfaceGetEffects (MlirOperation operation, MlirMemoryEffectInstancesCallback callback, void *userData)
 Gets the memory effects of the given operation.

Function Documentation

◆ mlirConditionallySpeculatableOpInterfaceAttachFallbackModel()

void mlirConditionallySpeculatableOpInterfaceAttachFallbackModel ( MlirContext ctx,
MlirStringRef opName,
MlirConditionallySpeculatableOpInterfaceCallbacks callbacks )

Attach a ConditionallySpeculatable FallbackModel to the given named op.

Attach a new FallbackModel for the ConditionallySpeculatable interface to the named operation.

The FallbackModel uses the provided callbacks to implement the interface.

Definition at line 243 of file Interfaces.cpp.

References mlir::RegisteredOperationName::lookup(), ConditionallySpeculatableOpInterfaceFallbackModel::setCallbacks(), and unwrap().

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::PyConditionallySpeculatableOpInterface::attach().

◆ mlirConditionallySpeculatableOpInterfaceGetSpeculatability()

MlirSpeculatability mlirConditionallySpeculatableOpInterfaceGetSpeculatability ( MlirOperation operation)

◆ mlirConditionallySpeculatableOpInterfaceTypeID()

MlirTypeID mlirConditionallySpeculatableOpInterfaceTypeID ( void )

Returns the interface TypeID of the ConditionallySpeculatable interface.

Definition at line 187 of file Interfaces.cpp.

References wrap().

◆ mlirInferShapedTypeOpInterfaceInferReturnTypes()

MlirLogicalResult mlirInferShapedTypeOpInterfaceInferReturnTypes ( MlirStringRef opName,
MlirContext context,
MlirLocation location,
intptr_t nOperands,
MlirValue * operands,
MlirAttribute attributes,
void * properties,
intptr_t nRegions,
MlirRegion * regions,
MlirShapedTypeComponentsCallback callback,
void * userData )

Infers the return shaped type components of the operation.

Calls callback with the types of inferred arguments on success. Returns failure otherwise.

Definition at line 134 of file Interfaces.cpp.

References mlirLogicalResultFailure(), mlirLogicalResultSuccess(), unwrap(), and wrap().

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::PyInferShapedTypeOpInterface::inferReturnTypeComponents().

◆ mlirInferShapedTypeOpInterfaceTypeID()

MlirTypeID mlirInferShapedTypeOpInterfaceTypeID ( void )

Returns the interface TypeID of the InferShapedTypeOpInterface.

Definition at line 130 of file Interfaces.cpp.

References wrap().

◆ mlirInferTypeOpInterfaceInferReturnTypes()

MlirLogicalResult mlirInferTypeOpInterfaceInferReturnTypes ( MlirStringRef opName,
MlirContext context,
MlirLocation location,
intptr_t nOperands,
MlirValue * operands,
MlirAttribute attributes,
void * properties,
intptr_t nRegions,
MlirRegion * regions,
MlirTypesCallback callback,
void * userData )

Infers the return types of the operation identified by its canonical given the arguments that will be supplied to its generic builder.

Calls callback with the types of inferred arguments, potentially several times, on success. Returns failure otherwise.

Definition at line 93 of file Interfaces.cpp.

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

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::PyInferTypeOpInterface::inferReturnTypes().

◆ mlirInferTypeOpInterfaceTypeID()

MlirTypeID mlirInferTypeOpInterfaceTypeID ( void )

Returns the interface TypeID of the InferTypeOpInterface.

Definition at line 89 of file Interfaces.cpp.

References wrap().

◆ mlirMemoryEffectGetEffectID()

MlirTypeID mlirMemoryEffectGetEffectID ( MlirMemoryEffect effect)

Returns the TypeID identifying the concrete type of the given memory effect.

Definition at line 302 of file Interfaces.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::populateIRInterfaces().

◆ mlirMemoryEffectInstanceClone()

MlirMemoryEffectInstance mlirMemoryEffectInstanceClone ( MlirMemoryEffectInstance instance)

Creates a copy of a memory effect instance.

The caller must destroy the returned instance with mlirMemoryEffectInstanceDestroy.

Definition at line 356 of file Interfaces.cpp.

References unwrap(), and wrap().

◆ mlirMemoryEffectInstanceCreate()

MlirMemoryEffectInstance mlirMemoryEffectInstanceCreate ( MlirMemoryEffect effect,
MlirAttribute parameters,
int stage,
bool effectOnFullRegion,
MlirSideEffectResource resource )

Creates a memory effect instance without an associated IR entity.

parameters may be a null attribute. The caller owns the returned instance and must destroy it with mlirMemoryEffectInstanceDestroy.

Definition at line 311 of file Interfaces.cpp.

References unwrap(), and wrap().

◆ mlirMemoryEffectInstanceCreateForBlockArgument()

MlirMemoryEffectInstance mlirMemoryEffectInstanceCreateForBlockArgument ( MlirMemoryEffect effect,
MlirValue blockArgument,
MlirAttribute parameters,
int stage,
bool effectOnFullRegion,
MlirSideEffectResource resource )

Creates a memory effect instance associated with a block argument.

blockArgument must wrap a BlockArgument. parameters may be a null attribute. The caller owns the returned instance and must destroy it with mlirMemoryEffectInstanceDestroy.

Definition at line 335 of file Interfaces.cpp.

References unwrap(), and wrap().

◆ mlirMemoryEffectInstanceCreateForOpOperand()

MlirMemoryEffectInstance mlirMemoryEffectInstanceCreateForOpOperand ( MlirMemoryEffect effect,
MlirOpOperand opOperand,
MlirAttribute parameters,
int stage,
bool effectOnFullRegion,
MlirSideEffectResource resource )

Creates a memory effect instance associated with an operation operand.

parameters may be a null attribute. The caller owns the returned instance and must destroy it with mlirMemoryEffectInstanceDestroy.

Definition at line 319 of file Interfaces.cpp.

References unwrap(), and wrap().

◆ mlirMemoryEffectInstanceCreateForOpResult()

MlirMemoryEffectInstance mlirMemoryEffectInstanceCreateForOpResult ( MlirMemoryEffect effect,
MlirValue result,
MlirAttribute parameters,
int stage,
bool effectOnFullRegion,
MlirSideEffectResource resource )

Creates a memory effect instance associated with an operation result.

result must wrap an OpResult. parameters may be a null attribute. The caller owns the returned instance and must destroy it with mlirMemoryEffectInstanceDestroy.

Definition at line 327 of file Interfaces.cpp.

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

◆ mlirMemoryEffectInstanceCreateForSymbol()

MlirMemoryEffectInstance mlirMemoryEffectInstanceCreateForSymbol ( MlirMemoryEffect effect,
MlirAttribute symbol,
MlirAttribute parameters,
int stage,
bool effectOnFullRegion,
MlirSideEffectResource resource )

Creates a memory effect instance associated with a symbol.

symbol must be a SymbolRefAttr. parameters may be a null attribute. The caller owns the returned instance and must destroy it with mlirMemoryEffectInstanceDestroy.

Definition at line 343 of file Interfaces.cpp.

References unwrap(), and wrap().

◆ mlirMemoryEffectInstanceDestroy()

void mlirMemoryEffectInstanceDestroy ( MlirMemoryEffectInstance instance)

Destroys a memory effect instance created or cloned by APIs above.

Definition at line 351 of file Interfaces.cpp.

References unwrap().

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::PyMemoryEffectInstance::~PyMemoryEffectInstance().

◆ mlirMemoryEffectInstanceGetEffect()

MlirMemoryEffect mlirMemoryEffectInstanceGetEffect ( MlirMemoryEffectInstance instance)

Returns the memory effect of the given instance.

Definition at line 361 of file Interfaces.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::PyMemoryEffectInstance::getEffect().

◆ mlirMemoryEffectInstanceGetEffectOnFullRegion()

bool mlirMemoryEffectInstanceGetEffectOnFullRegion ( MlirMemoryEffectInstance instance)

Returns true if the given instance has effect on every single value of the resource.

Definition at line 374 of file Interfaces.cpp.

References unwrap().

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::PyMemoryEffectInstance::getEffectOnFullRegion().

◆ mlirMemoryEffectInstanceGetParameters()

MlirAttribute mlirMemoryEffectInstanceGetParameters ( MlirMemoryEffectInstance instance)

Returns the parameters of the given instance, or a null attribute if there are no parameters.

Definition at line 380 of file Interfaces.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::PyMemoryEffectInstance::getParameters().

◆ mlirMemoryEffectInstanceGetResource()

MlirSideEffectResource mlirMemoryEffectInstanceGetResource ( MlirMemoryEffectInstance instance)

Returns the side effect resource of the given instance.

Definition at line 366 of file Interfaces.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::PyMemoryEffectInstance::getResource().

◆ mlirMemoryEffectInstanceGetStage()

int mlirMemoryEffectInstanceGetStage ( MlirMemoryEffectInstance instance)

Returns the stage of the given instance.

Definition at line 370 of file Interfaces.cpp.

References unwrap().

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::PyMemoryEffectInstance::getStage().

◆ mlirMemoryEffectInstanceGetSymbolRef()

MlirAttribute mlirMemoryEffectInstanceGetSymbolRef ( MlirMemoryEffectInstance instance)

Returns the symbol reference of the given instance, or a null attribute if there is no associated symbol.

Definition at line 389 of file Interfaces.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::PyMemoryEffectInstance::getSymbolRef().

◆ mlirMemoryEffectInstanceGetValue()

MlirValue mlirMemoryEffectInstanceGetValue ( MlirMemoryEffectInstance instance)

Returns the value (OpOperand, OpResult, or BlockArgument) of the given instance, or a null value if there is no associated value.

Definition at line 384 of file Interfaces.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::PyMemoryEffectInstance::getValue().

◆ mlirMemoryEffectsAllocateGet()

MlirMemoryEffect mlirMemoryEffectsAllocateGet ( void )

Returns the singleton instance of the allocate memory effect.

Definition at line 284 of file Interfaces.cpp.

References mlir::SideEffects::Effect::Base< DerivedEffect, Effect >::get(), and wrap().

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::populateIRInterfaces().

◆ mlirMemoryEffectsFreeGet()

MlirMemoryEffect mlirMemoryEffectsFreeGet ( void )

Returns the singleton instance of the free memory effect.

Definition at line 289 of file Interfaces.cpp.

References mlir::SideEffects::Effect::Base< DerivedEffect, Effect >::get(), and wrap().

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::populateIRInterfaces().

◆ mlirMemoryEffectsOpInterfaceAttachFallbackModel()

void mlirMemoryEffectsOpInterfaceAttachFallbackModel ( MlirContext ctx,
MlirStringRef opName,
MlirMemoryEffectsOpInterfaceCallbacks callbacks )

Attach a MemoryEffectsOpInterface FallbackModel to the given named op.

Attach a new FallbackModel for the MemoryEffectsOpInterface to the named operation.

The FallbackModel uses the provided callbacks to implement the interface.

Definition at line 450 of file Interfaces.cpp.

References mlir::RegisteredOperationName::lookup(), MemoryEffectOpInterfaceFallbackModel::setCallbacks(), and unwrap().

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::PyMemoryEffectsOpInterface::attach().

◆ mlirMemoryEffectsOpInterfaceGetEffects()

void mlirMemoryEffectsOpInterfaceGetEffects ( MlirOperation operation,
MlirMemoryEffectInstancesCallback callback,
void * userData )

Gets the memory effects of the given operation.

The operation must implement the MemoryEffectsOpInterface. Invokes callback once with all effects. Ownership is not transferred; call mlirMemoryEffectInstanceClone from the callback to keep a copy after the callback returns.

Definition at line 469 of file Interfaces.cpp.

References unwrap(), and wrap().

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::PyMemoryEffectsOpInterface::getEffects().

◆ mlirMemoryEffectsOpInterfaceTypeID()

MlirTypeID mlirMemoryEffectsOpInterfaceTypeID ( void )

Returns the interface TypeID of the MemoryEffectsOpInterface.

Definition at line 393 of file Interfaces.cpp.

References wrap().

◆ mlirMemoryEffectsReadGet()

MlirMemoryEffect mlirMemoryEffectsReadGet ( void )

Returns the singleton instance of the read memory effect.

Definition at line 293 of file Interfaces.cpp.

References mlir::SideEffects::Effect::Base< DerivedEffect, Effect >::get(), and wrap().

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::populateIRInterfaces().

◆ mlirMemoryEffectsWriteGet()

MlirMemoryEffect mlirMemoryEffectsWriteGet ( void )

Returns the singleton instance of the write memory effect.

Definition at line 297 of file Interfaces.cpp.

References mlir::SideEffects::Effect::Base< DerivedEffect, Effect >::get(), and wrap().

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::populateIRInterfaces().

◆ mlirOperationImplementsInterface()

bool mlirOperationImplementsInterface ( MlirOperation operation,
MlirTypeID interfaceTypeID )

Returns true if the given operation implements an interface identified by its TypeID.

Definition at line 74 of file Interfaces.cpp.

References unwrap().

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::PyConcreteOpInterface< ConcreteIface >::PyConcreteOpInterface().

◆ mlirOperationImplementsInterfaceStatic()

bool mlirOperationImplementsInterfaceStatic ( MlirStringRef operationName,
MlirContext context,
MlirTypeID interfaceTypeID )

Returns true if the operation identified by its canonical string name implements the interface identified by its TypeID in the given context.

Note that interfaces may be attached to operations in some contexts and not others.

Definition at line 81 of file Interfaces.cpp.

References MlirStringRef::data, MlirStringRef::length, mlir::RegisteredOperationName::lookup(), and unwrap().

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::PyConcreteOpInterface< ConcreteIface >::PyConcreteOpInterface().

◆ mlirSideEffectsDefaultResourceGet()

MlirSideEffectResource mlirSideEffectsDefaultResourceGet ( void )

Returns the singleton instance of the default side effect resource.

Definition at line 306 of file Interfaces.cpp.

References mlir::SideEffects::Resource::Base< DefaultResource >::get(), and wrap().

Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::populateIRInterfaces().