|
MLIR 24.0.0git
|
#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. | |
| 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().
| MlirSpeculatability mlirConditionallySpeculatableOpInterfaceGetSpeculatability | ( | MlirOperation | operation | ) |
Returns the speculatability of the given operation.
The operation must implement the ConditionallySpeculatable interface.
Definition at line 264 of file Interfaces.cpp.
References MlirSpeculatabilityNotSpeculatable, MlirSpeculatabilityRecursivelySpeculatable, MlirSpeculatabilitySpeculatable, mlir::Speculation::NotSpeculatable, mlir::Speculation::RecursivelySpeculatable, mlir::Speculation::Speculatable, and unwrap().
Referenced by mlir::python::MLIR_BINDINGS_PYTHON_DOMAIN::PyConditionallySpeculatableOpInterface::bindDerived().
| MlirTypeID mlirConditionallySpeculatableOpInterfaceTypeID | ( | void | ) |
Returns the interface TypeID of the ConditionallySpeculatable interface.
Definition at line 187 of file Interfaces.cpp.
References wrap().
| 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().
| MlirTypeID mlirInferShapedTypeOpInterfaceTypeID | ( | void | ) |
Returns the interface TypeID of the InferShapedTypeOpInterface.
Definition at line 130 of file Interfaces.cpp.
References wrap().
| 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().
| MlirTypeID mlirInferTypeOpInterfaceTypeID | ( | void | ) |
Returns the interface TypeID of the InferTypeOpInterface.
Definition at line 89 of file Interfaces.cpp.
References wrap().
| 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().
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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().
| 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().
| 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().
| 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().
| 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().
| 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().
| 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().
| 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().
| 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().
| 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().
| 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().
| 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().
| MlirTypeID mlirMemoryEffectsOpInterfaceTypeID | ( | void | ) |
Returns the interface TypeID of the MemoryEffectsOpInterface.
Definition at line 393 of file Interfaces.cpp.
References wrap().
| 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().
| 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().
| 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().
| 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().
| 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().