MLIR 22.0.0git
mlir::sparse_tensor::SparseIterator Class Referenceabstract

Helper class that generates loop conditions, etc, to traverse a sparse tensor level. More...

#include "Dialect/SparseTensor/Transforms/Utils/SparseTensorIterator.h"

Public Member Functions

virtual ~SparseIterator ()=default
virtual void setSparseEmitStrategy (SparseEmitStrategy strategy)
virtual SparseEmitStrategy getSparseEmitStrategy () const
virtual std::string getDebugInterfacePrefix () const =0
virtual SmallVector< TypegetCursorValTypes (OpBuilder &b) const =0
Value getCrd () const
ValueRange getBatchCrds () const
ValueRange getCursor () const
void seek (ValueRange vals)
SmallVector< ValuetoValues () const
virtual bool isBatchIterator () const =0
virtual bool randomAccessible () const =0
virtual bool iteratableByFor () const
virtual Value upperBound (OpBuilder &b, Location l) const =0
virtual SmallVector< Valueserialize () const
virtual void deserialize (ValueRange vs)
void genInit (OpBuilder &b, Location l, const SparseIterator *p)
ValueRange forward (OpBuilder &b, Location l)
void locate (OpBuilder &b, Location l, Value crd)
Value genNotEnd (OpBuilder &b, Location l)
Value deref (OpBuilder &b, Location l)
virtual void genInitImpl (OpBuilder &, Location, const SparseIterator *)=0
virtual ValueRange forwardImpl (OpBuilder &b, Location l)=0
virtual void locateImpl (OpBuilder &b, Location l, Value crd)
virtual Value genNotEndImpl (OpBuilder &b, Location l)=0
virtual Value derefImpl (OpBuilder &b, Location l)=0
virtual ValueRange getCurPosition () const
virtual std::pair< Value, ValuegenForCond (OpBuilder &b, Location l)
std::pair< Value, ValueRangegenWhileCond (OpBuilder &b, Location l, ValueRange vs)
virtual ValueRange forwardIf (OpBuilder &b, Location l, Value cond)
ValueRange linkNewScope (ValueRange pos)

Static Public Member Functions

static std::unique_ptr< SparseIteratorfromValues (IteratorType dstTp, ValueRange values, unsigned tid)

Public Attributes

const IterKind kind
const unsigned tid
const unsigned lvl

Protected Member Functions

 SparseIterator (IterKind kind, unsigned tid, unsigned lvl, unsigned cursorValsCnt, SmallVectorImpl< Value > &cursorValStorage)
 SparseIterator (IterKind kind, unsigned cursorValsCnt, SmallVectorImpl< Value > &cursorValStorage, const SparseIterator &delegate)
 SparseIterator (IterKind kind, const SparseIterator &wrap, unsigned extraCursorCnt=0)
void updateCrd (Value crd)
MutableArrayRef< ValuegetMutCursorVals ()
void inherentBatch (const SparseIterator &parent)

Protected Attributes

SparseEmitStrategy emitStrategy
SmallVector< ValuebatchCrds

Detailed Description

Helper class that generates loop conditions, etc, to traverse a sparse tensor level.

Definition at line 148 of file SparseTensorIterator.h.

Constructor & Destructor Documentation

◆ SparseIterator() [1/3]

mlir::sparse_tensor::SparseIterator::SparseIterator ( IterKind kind,
unsigned tid,
unsigned lvl,
unsigned cursorValsCnt,
SmallVectorImpl< Value > & cursorValStorage )
inlineprotected

Definition at line 155 of file SparseTensorIterator.h.

References batchCrds, kind, lvl, nullptr, and tid.

◆ SparseIterator() [2/3]

mlir::sparse_tensor::SparseIterator::SparseIterator ( IterKind kind,
unsigned cursorValsCnt,
SmallVectorImpl< Value > & cursorValStorage,
const SparseIterator & delegate )
inlineprotected

Definition at line 161 of file SparseTensorIterator.h.

References kind, lvl, and tid.

◆ SparseIterator() [3/3]

mlir::sparse_tensor::SparseIterator::SparseIterator ( IterKind kind,
const SparseIterator & wrap,
unsigned extraCursorCnt = 0 )
inlineprotected

Definition at line 167 of file SparseTensorIterator.h.

References kind, lvl, tid, and wrap().

◆ ~SparseIterator()

virtual mlir::sparse_tensor::SparseIterator::~SparseIterator ( )
virtualdefault

Member Function Documentation

◆ deref()

◆ derefImpl()

virtual Value mlir::sparse_tensor::SparseIterator::derefImpl ( OpBuilder & b,
Location l )
pure virtual

References b.

Referenced by deref().

◆ deserialize()

virtual void mlir::sparse_tensor::SparseIterator::deserialize ( ValueRange vs)
inlinevirtual

Definition at line 243 of file SparseTensorIterator.h.

◆ forward()

◆ forwardIf()

ValueRange SparseIterator::forwardIf ( OpBuilder & b,
Location l,
Value cond )
virtual

Definition at line 1053 of file SparseTensorIterator.cpp.

References b, forward(), getCursor(), seek(), and YIELD.

◆ forwardImpl()

virtual ValueRange mlir::sparse_tensor::SparseIterator::forwardImpl ( OpBuilder & b,
Location l )
pure virtual

References b.

Referenced by forward().

◆ fromValues()

std::unique_ptr< SparseIterator > mlir::sparse_tensor::SparseIterator::fromValues ( IteratorType dstTp,
ValueRange values,
unsigned tid )
static

References tid.

◆ genForCond()

virtual std::pair< Value, Value > mlir::sparse_tensor::SparseIterator::genForCond ( OpBuilder & b,
Location l )
inlinevirtual

Definition at line 289 of file SparseTensorIterator.h.

References b, getCrd(), randomAccessible(), and upperBound().

Referenced by genLoopWithIterator().

◆ genInit()

◆ genInitImpl()

virtual void mlir::sparse_tensor::SparseIterator::genInitImpl ( OpBuilder & ,
Location ,
const SparseIterator *  )
pure virtual

Referenced by genInit().

◆ genNotEnd()

◆ genNotEndImpl()

virtual Value mlir::sparse_tensor::SparseIterator::genNotEndImpl ( OpBuilder & b,
Location l )
pure virtual

References b.

Referenced by genNotEnd().

◆ genWhileCond()

std::pair< Value, ValueRange > mlir::sparse_tensor::SparseIterator::genWhileCond ( OpBuilder & b,
Location l,
ValueRange vs )
inline

Definition at line 296 of file SparseTensorIterator.h.

References b, genNotEnd(), linkNewScope(), and rem.

Referenced by mlir::sparse_tensor::genCoIteration(), and genLoopWithIterator().

◆ getBatchCrds()

ValueRange mlir::sparse_tensor::SparseIterator::getBatchCrds ( ) const
inline

Definition at line 192 of file SparseTensorIterator.h.

References batchCrds.

◆ getCrd()

Value mlir::sparse_tensor::SparseIterator::getCrd ( ) const
inline

◆ getCurPosition()

virtual ValueRange mlir::sparse_tensor::SparseIterator::getCurPosition ( ) const
inlinevirtual

Definition at line 286 of file SparseTensorIterator.h.

References getCursor().

◆ getCursor()

ValueRange mlir::sparse_tensor::SparseIterator::getCursor ( ) const
inline

◆ getCursorValTypes()

virtual SmallVector< Type > mlir::sparse_tensor::SparseIterator::getCursorValTypes ( OpBuilder & b) const
pure virtual

References b.

Referenced by forward(), genInit(), and locate().

◆ getDebugInterfacePrefix()

virtual std::string mlir::sparse_tensor::SparseIterator::getDebugInterfacePrefix ( ) const
pure virtual

◆ getMutCursorVals()

MutableArrayRef< Value > mlir::sparse_tensor::SparseIterator::getMutCursorVals ( )
inlineprotected

Definition at line 327 of file SparseTensorIterator.h.

◆ getSparseEmitStrategy()

virtual SparseEmitStrategy mlir::sparse_tensor::SparseIterator::getSparseEmitStrategy ( ) const
inlinevirtual

Definition at line 184 of file SparseTensorIterator.h.

References emitStrategy.

Referenced by deref(), forward(), genInit(), genNotEnd(), and locate().

◆ inherentBatch()

void mlir::sparse_tensor::SparseIterator::inherentBatch ( const SparseIterator & parent)
inlineprotected

Definition at line 332 of file SparseTensorIterator.h.

References batchCrds.

Referenced by genInit().

◆ isBatchIterator()

virtual bool mlir::sparse_tensor::SparseIterator::isBatchIterator ( ) const
pure virtual

◆ iteratableByFor()

virtual bool mlir::sparse_tensor::SparseIterator::iteratableByFor ( ) const
inlinevirtual

Definition at line 224 of file SparseTensorIterator.h.

Referenced by genLoopWithIterator().

◆ linkNewScope()

ValueRange mlir::sparse_tensor::SparseIterator::linkNewScope ( ValueRange pos)
inline

◆ locate()

◆ locateImpl()

virtual void mlir::sparse_tensor::SparseIterator::locateImpl ( OpBuilder & b,
Location l,
Value crd )
inlinevirtual

Definition at line 271 of file SparseTensorIterator.h.

References b.

Referenced by locate().

◆ randomAccessible()

virtual bool mlir::sparse_tensor::SparseIterator::randomAccessible ( ) const
pure virtual

◆ seek()

void mlir::sparse_tensor::SparseIterator::seek ( ValueRange vals)
inline

Definition at line 198 of file SparseTensorIterator.h.

Referenced by forward(), forwardIf(), genInit(), linkNewScope(), and locate().

◆ serialize()

virtual SmallVector< Value > mlir::sparse_tensor::SparseIterator::serialize ( ) const
inlinevirtual

Definition at line 240 of file SparseTensorIterator.h.

◆ setSparseEmitStrategy()

virtual void mlir::sparse_tensor::SparseIterator::setSparseEmitStrategy ( SparseEmitStrategy strategy)
inlinevirtual

Definition at line 180 of file SparseTensorIterator.h.

References emitStrategy.

Referenced by mlir::sparse_tensor::makeSynLevelAndIterator().

◆ toValues()

SmallVector< Value > mlir::sparse_tensor::SparseIterator::toValues ( ) const
inline

Definition at line 210 of file SparseTensorIterator.h.

◆ updateCrd()

void mlir::sparse_tensor::SparseIterator::updateCrd ( Value crd)
inlineprotected

Definition at line 325 of file SparseTensorIterator.h.

Referenced by deref(), and locate().

◆ upperBound()

virtual Value mlir::sparse_tensor::SparseIterator::upperBound ( OpBuilder & b,
Location l ) const
pure virtual

References b.

Referenced by genForCond().

Member Data Documentation

◆ batchCrds

SmallVector<Value> mlir::sparse_tensor::SparseIterator::batchCrds
protected

Definition at line 337 of file SparseTensorIterator.h.

Referenced by getBatchCrds(), inherentBatch(), and SparseIterator().

◆ emitStrategy

SparseEmitStrategy mlir::sparse_tensor::SparseIterator::emitStrategy
protected

Definition at line 336 of file SparseTensorIterator.h.

Referenced by getSparseEmitStrategy(), and setSparseEmitStrategy().

◆ kind

const IterKind mlir::sparse_tensor::SparseIterator::kind

◆ lvl

const unsigned mlir::sparse_tensor::SparseIterator::lvl

◆ tid


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