My Project
Public Member Functions | Public Attributes | List of all members
mlir::MemRefAccess Struct Reference

Encapsulates a memref load or store access information. More...

#include <AffineAnalysis.h>

Collaboration diagram for mlir::MemRefAccess:
Collaboration graph
[legend]

Public Member Functions

 MemRefAccess (Operation *opInst)
 Constructs a MemRefAccess from a load or store operation. More...
 
unsigned getRank () const
 
bool isStore () const
 
void getAccessMap (AffineValueMap *accessMap) const
 
bool operator== (const MemRefAccess &rhs) const
 
bool operator!= (const MemRefAccess &rhs) const
 

Public Attributes

Value memref
 
OperationopInst
 
SmallVector< Value, 4 > indices
 

Detailed Description

Encapsulates a memref load or store access information.

Constructor & Destructor Documentation

◆ MemRefAccess()

MemRefAccess::MemRefAccess ( Operation opInst)
explicit

Constructs a MemRefAccess from a load or store operation.

Member Function Documentation

◆ getAccessMap()

void MemRefAccess::getAccessMap ( AffineValueMap accessMap) const

Populates 'accessMap' with composition of AffineApplyOps reachable from 'indices'.

◆ getRank()

unsigned MemRefAccess::getRank ( ) const

◆ isStore()

bool MemRefAccess::isStore ( ) const

◆ operator!=()

bool mlir::MemRefAccess::operator!= ( const MemRefAccess rhs) const
inline

◆ operator==()

bool MemRefAccess::operator== ( const MemRefAccess rhs) const

Equal if both affine accesses can be proved to be equivalent at compile time (considering the memrefs, their respective affine access maps and operands). The equality of access functions + operands is checked by subtracting fully composed value maps, and then simplifying the difference using the expression flattener. TODO: this does not account for aliasing of memrefs.

Equal if both affine accesses are provably equivalent (at compile time) when considering the memref, the affine maps and their respective operands. The equality of access functions + operands is checked by subtracting fully composed value maps, and then simplifying the difference using the expression flattener. TODO: this does not account for aliasing of memrefs.

Member Data Documentation

◆ indices

SmallVector<Value, 4> mlir::MemRefAccess::indices

◆ memref

Value mlir::MemRefAccess::memref

◆ opInst

Operation* mlir::MemRefAccess::opInst

The documentation for this struct was generated from the following files: