MLIR 23.0.0git
mlir::SideEffects::Resource Class Referenceabstract

This class represents a specific resource that an effect applies to. More...

#include "mlir/Interfaces/SideEffectInterfaces.h"

Inheritance diagram for mlir::SideEffects::Resource:

Classes

class  Base
 This base class is used for derived effects that are non-parametric. More...

Public Member Functions

virtual ~Resource ()=default
TypeID getResourceID () const
 Return the unique identifier for the base resource class.
virtual StringRef getName () const =0
 Return a string name of the resource.
virtual ResourcegetParent () const
 Return the parent resource in the hierarchy, or nullptr for a root.
virtual bool isAddressable () const
 Returns true if this resource is addressable (effects on it can alias pointer-based memory).
bool isSubresourceOf (const Resource *other) const
 Returns true if this resource is a subresource of (or equal to) another.
bool isDisjointFrom (const Resource *other) const
 Returns true if this resource is disjoint from another.

Protected Member Functions

 Resource (TypeID id)

Detailed Description

This class represents a specific resource that an effect applies to.

This class represents an abstract interface for a given resource. Resources form a hierarchy via getParent(); disjointness (isDisjointFrom) is used to determine whether effects can conflict.

Scope: The resource hierarchy is for disjointness of abstract resources (e.g. addressable memory vs. runtime state). It is deliberately not intended for fine-grained regions with specific addresses/sizes, or for alias classes / offset-based disambiguation; such concerns are out of scope and should be handled by alias analysis or other mechanisms.

Definition at line 88 of file SideEffectInterfaces.h.

Constructor & Destructor Documentation

◆ ~Resource()

virtual mlir::SideEffects::Resource::~Resource ( )
virtualdefault

◆ Resource()

mlir::SideEffects::Resource::Resource ( TypeID id)
inlineprotected

Member Function Documentation

◆ getName()

◆ getParent()

virtual Resource * mlir::SideEffects::Resource::getParent ( ) const
inlinevirtual

Return the parent resource in the hierarchy, or nullptr for a root.

Reimplemented in mlir::SideEffects::AutomaticAllocationScopeResource.

Definition at line 131 of file SideEffectInterfaces.h.

References Resource().

◆ getResourceID()

TypeID mlir::SideEffects::Resource::getResourceID ( ) const
inline

Return the unique identifier for the base resource class.

Definition at line 125 of file SideEffectInterfaces.h.

Referenced by mayAlias().

◆ isAddressable()

virtual bool mlir::SideEffects::Resource::isAddressable ( ) const
inlinevirtual

Returns true if this resource is addressable (effects on it can alias pointer-based memory).

Default is true.

Reimplemented in mlir::acc::ConstructResource, mlir::acc::CurrentDeviceIdResource, and mlir::acc::RuntimeCounters.

Definition at line 135 of file SideEffectInterfaces.h.

◆ isDisjointFrom()

bool mlir::SideEffects::Resource::isDisjointFrom ( const Resource * other) const
inline

Returns true if this resource is disjoint from another.

Two resources are disjoint if neither is an ancestor of the other.

Definition at line 151 of file SideEffectInterfaces.h.

References isSubresourceOf(), and Resource().

◆ isSubresourceOf()

bool mlir::SideEffects::Resource::isSubresourceOf ( const Resource * other) const
inline

Returns true if this resource is a subresource of (or equal to) another.

Definition at line 138 of file SideEffectInterfaces.h.

References Resource().

Referenced by mlir::SideEffects::Resource::Base< DerivedResource, BaseResource >::classof(), and isDisjointFrom().


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