13#ifndef LLVM_TRANSFORMS_UTILS_MATRIXUTILS_H
14#define LLVM_TRANSFORMS_UTILS_MATRIXUTILS_H
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
LLVM Basic Block Representation.
Common base class shared among various IRBuilders.
Represents a single loop in the control flow graph.
StringRef - Represent a constant reference to a string, i.e.
LLVM Value Representation.
@ BasicBlock
Various leaf nodes.
This is an optimization pass for GlobalISel generic memory operations.
Properties of a single loop used when generating the tiled loop nest.
BasicBlock * Header
The header and latch of the loop.
Value * Index
The index updated on every iteration.
A helper struct to create IR loop nests for tiling in IR of the following form: for ColumnLoop....
unsigned NumInner
Number of columns of the first matrix of a multiply / number of rows of the second matrix of a multip...
MatrixLoop ColumnLoop
The loop iterating on the columns.
MatrixLoop RowLoop
The loop iterating on the rows.
unsigned NumRows
Number of rows of the matrix.
BasicBlock * CreateTiledLoops(BasicBlock *Start, BasicBlock *End, IRBuilderBase &B, DomTreeUpdater &DTU, LoopInfo &LI)
Creates an IR loop nests for tiling of the form below.
unsigned NumColumns
Number of columns of the matrix.
TileInfo(unsigned NumRows, unsigned NumColumns, unsigned NumInner, unsigned TileSize)
unsigned TileSize
Number of rows/columns in a tile.
MatrixLoop KLoop
The loop iterating on k (inner dimension).