LLVM
15.0.0git
|
A helper struct to create IR loop nests for tiling in IR of the following form: for CurrentColumn = 0..NumColumns for CurrentRow = 0..NumRows for CurrentInner = 0..NumInner. More...
#include "llvm/Transforms/Utils/MatrixUtils.h"
Public Member Functions | |
TileInfo (unsigned NumRows, unsigned NumColumns, unsigned NumInner, unsigned TileSize) | |
BasicBlock * | CreateTiledLoops (BasicBlock *Start, BasicBlock *End, IRBuilderBase &B, DomTreeUpdater &DTU, LoopInfo &LI) |
Creates an IR loop nests for tiling of the form below. More... | |
Public Attributes | |
unsigned | NumRows |
Number of rows of the matrix. More... | |
unsigned | NumColumns |
Number of columns of the matrix. More... | |
unsigned | NumInner |
Number of columns of the first matrix of a multiply / number of rows of the second matrix of a multiply. More... | |
unsigned | TileSize = -1 |
Number of rows/columns in a tile. More... | |
Value * | CurrentRow |
Start row of the current tile to compute. More... | |
Value * | CurrentCol |
Start column of the current tile to compute. More... | |
Value * | CurrentK |
Current tile offset during the tile computation. More... | |
BasicBlock * | ColumnLoopHeader = nullptr |
Header of the outermost loop iterating from 0..NumColumns. More... | |
BasicBlock * | RowLoopHeader = nullptr |
Header of the second loop iterating from 0..NumRows. More... | |
BasicBlock * | RowLoopLatch = nullptr |
Latch of the second loop iterating from 0..NumRows. More... | |
BasicBlock * | InnerLoopHeader = nullptr |
Header of the innermost loop iterating from 0..NumInner. More... | |
BasicBlock * | InnerLoopLatch = nullptr |
Latch of the innermost loop iterating from 0..NumInner. More... | |
A helper struct to create IR loop nests for tiling in IR of the following form: for CurrentColumn = 0..NumColumns for CurrentRow = 0..NumRows for CurrentInner = 0..NumInner.
Definition at line 31 of file MatrixUtils.h.
|
inline |
Definition at line 66 of file MatrixUtils.h.
BasicBlock * TileInfo::CreateTiledLoops | ( | BasicBlock * | Start, |
BasicBlock * | End, | ||
IRBuilderBase & | B, | ||
DomTreeUpdater & | DTU, | ||
LoopInfo & | LI | ||
) |
Creates an IR loop nests for tiling of the form below.
Returns the block for the inner loop body and sets {Column,Row,Inner}LoopHeader/Latch fields.
for CurrentColumn = 0..NumColumns for CurrentRow = 0..NumRows for CurrentInner = 0..NumInner
Definition at line 70 of file MatrixUtils.cpp.
BasicBlock* llvm::TileInfo::ColumnLoopHeader = nullptr |
Header of the outermost loop iterating from 0..NumColumns.
Definition at line 55 of file MatrixUtils.h.
Value* llvm::TileInfo::CurrentCol |
Start column of the current tile to compute.
Definition at line 49 of file MatrixUtils.h.
Value* llvm::TileInfo::CurrentK |
Current tile offset during the tile computation.
Definition at line 52 of file MatrixUtils.h.
Value* llvm::TileInfo::CurrentRow |
Start row of the current tile to compute.
Definition at line 46 of file MatrixUtils.h.
BasicBlock* llvm::TileInfo::InnerLoopHeader = nullptr |
Header of the innermost loop iterating from 0..NumInner.
Definition at line 62 of file MatrixUtils.h.
BasicBlock* llvm::TileInfo::InnerLoopLatch = nullptr |
Latch of the innermost loop iterating from 0..NumInner.
Definition at line 64 of file MatrixUtils.h.
unsigned llvm::TileInfo::NumColumns |
Number of columns of the matrix.
Definition at line 36 of file MatrixUtils.h.
unsigned llvm::TileInfo::NumInner |
Number of columns of the first matrix of a multiply / number of rows of the second matrix of a multiply.
Definition at line 40 of file MatrixUtils.h.
unsigned llvm::TileInfo::NumRows |
Number of rows of the matrix.
Definition at line 33 of file MatrixUtils.h.
BasicBlock* llvm::TileInfo::RowLoopHeader = nullptr |
Header of the second loop iterating from 0..NumRows.
Definition at line 58 of file MatrixUtils.h.
BasicBlock* llvm::TileInfo::RowLoopLatch = nullptr |
Latch of the second loop iterating from 0..NumRows.
Definition at line 60 of file MatrixUtils.h.
unsigned llvm::TileInfo::TileSize = -1 |
Number of rows/columns in a tile.
Definition at line 43 of file MatrixUtils.h.