Go to the documentation of this file.
13 #ifndef LLVM_TRANSFORMS_UTILS_MATRIXUTILS_H
14 #define LLVM_TRANSFORMS_UTILS_MATRIXUTILS_H
This is an optimization pass for GlobalISel generic memory operations.
BasicBlock * RowLoopLatch
Latch of the second loop iterating from 0..NumRows.
BasicBlock * InnerLoopLatch
Latch of the innermost loop iterating from 0..NumInner.
Represents a single loop in the control flow graph.
unsigned NumColumns
Number of columns of the matrix.
unsigned NumInner
Number of columns of the first matrix of a multiply / number of rows of the second matrix of a multip...
A helper struct to create IR loop nests for tiling in IR of the following form: for CurrentColumn = 0...
LLVM Basic Block Representation.
TileInfo(unsigned NumRows, unsigned NumColumns, unsigned NumInner, unsigned TileSize)
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
unsigned NumRows
Number of rows of the matrix.
Value * CurrentCol
Start column of the current tile to compute.
@ BasicBlock
Various leaf nodes.
BasicBlock * InnerLoopHeader
Header of the innermost loop iterating from 0..NumInner.
BasicBlock * RowLoopHeader
Header of the second loop iterating from 0..NumRows.
StringRef - Represent a constant reference to a string, i.e.
Common base class shared among various IRBuilders.
unsigned TileSize
Number of rows/columns in a tile.
Value * CurrentRow
Start row of the current tile to compute.
BasicBlock * ColumnLoopHeader
Header of the outermost loop iterating from 0..NumColumns.
BasicBlock * CreateTiledLoops(BasicBlock *Start, BasicBlock *End, IRBuilderBase &B, DomTreeUpdater &DTU, LoopInfo &LI)
Creates an IR loop nests for tiling of the form below.
Value * CurrentK
Current tile offset during the tile computation.
LLVM Value Representation.