LLVM: lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp File Reference (original) (raw)

Go to the source code of this file.

Macros
#define DEBUG_TYPE "lower-matrix-intrinsics"
Functions
static DISubprogram * getSubprogram (DIScope *Scope)
Helper function to either return Scope, if it is a subprogram or the attached subprogram for a local scope.
static bool isSplat (Value *V)
Return true if V is a splat of a value (which is used when multiplying a matrix with a scalar).
template<typename LTy , typename RTy >
auto m_AnyMul (const LTy &L, const RTy &R)
Match any mul operation (fp or integer).
template<typename LTy , typename RTy >
auto m_AnyAdd (const LTy &L, const RTy &R)
Match any add operation (fp or integer).
Variables
static cl::opt< bool > FuseMatrix ("fuse-matrix", cl::init(true), cl::Hidden, cl::desc("Enable/disable fusing matrix instructions."))
static cl::opt< unsigned > TileSize ("fuse-matrix-tile-size", cl::init(4), cl::Hidden, cl::desc("Tile size for matrix instruction fusion using square-shaped tiles."))
static cl::opt< bool > TileUseLoops ("fuse-matrix-use-loops", cl::init(false), cl::Hidden, cl::desc("Generate loop nest for tiling."))
static cl::opt< bool > ForceFusion ("force-fuse-matrix", cl::init(false), cl::Hidden, cl::desc("Force matrix instruction fusion even if not profitable."))
static cl::opt< bool > AllowContractEnabled ("matrix-allow-contract", cl::init(false), cl::Hidden, cl::desc("Allow the use of FMAs if available and profitable. This may " "result in different results, due to less rounding error."))
static cl::opt< bool > VerifyShapeInfo ("verify-matrix-shapes", cl::Hidden, cl::desc("Enable/disable matrix shape verification."), cl::init(false))
static cl::opt< MatrixLayoutTy > MatrixLayout ("matrix-default-layout", cl::init(MatrixLayoutTy::ColumnMajor), cl::desc("Sets the default matrix layout"), cl::values(clEnumValN(MatrixLayoutTy::ColumnMajor, "column-major", "Use column-major layout"), clEnumValN(MatrixLayoutTy::RowMajor, "row-major", "Use row-major layout")))
static cl::opt< bool > PrintAfterTransposeOpt ("matrix-print-after-transpose-opt", cl::init(false))

DEBUG_TYPE

#define DEBUG_TYPE "lower-matrix-intrinsics"

MatrixLayoutTy

getSubprogram()

isSplat()

m_AnyAdd()

template<typename LTy , typename RTy >

auto m_AnyAdd ( const LTy & L,
const RTy & R
)

m_AnyMul()

template<typename LTy , typename RTy >

auto m_AnyMul ( const LTy & L,
const RTy & R
)

AllowContractEnabled

cl::opt< bool > AllowContractEnabled("matrix-allow-contract", cl::init(false), cl::Hidden, cl::desc("Allow the use of FMAs if available and profitable. This may " "result in different results, due to less rounding error.")) ( "matrix-allow-contract" , cl::init(false) , cl::Hidden , cl::desc("Allow the use of FMAs if available and profitable. This may " "result in different results, due to less rounding error.") ) static

ForceFusion

cl::opt< bool > ForceFusion("force-fuse-matrix", cl::init(false), cl::Hidden, cl::desc("Force matrix instruction fusion even if not profitable.")) ( "force-fuse-matrix" , cl::init(false) , cl::Hidden , cl::desc("Force matrix instruction fusion even if not profitable.") ) static

FuseMatrix

cl::opt< bool > FuseMatrix("fuse-matrix", cl::init(true), cl::Hidden, cl::desc("Enable/disable fusing matrix instructions.")) ( "fuse-matrix" , cl::init(true) , cl::Hidden , cl::desc("Enable/disable fusing matrix instructions.") ) static

MatrixLayout

cl::opt< MatrixLayoutTy > MatrixLayout("matrix-default-layout", cl::init(MatrixLayoutTy::ColumnMajor), cl::desc("Sets the default matrix layout"), cl::values(clEnumValN(MatrixLayoutTy::ColumnMajor, "column-major", "Use column-major layout"), clEnumValN(MatrixLayoutTy::RowMajor, "row-major", "Use row-major layout"))) ( "matrix-default-layout" , cl::init(MatrixLayoutTy::ColumnMajor) , cl::desc("Sets the default matrix layout") , cl::values(clEnumValN(MatrixLayoutTy::ColumnMajor, "column-major", "Use column-major layout"), clEnumValN(MatrixLayoutTy::RowMajor, "row-major", "Use row-major layout")) ) static

PrintAfterTransposeOpt

cl::opt< bool > PrintAfterTransposeOpt("matrix-print-after-transpose-opt", cl::init(false)) ( "matrix-print-after-transpose-opt" , cl::init(false) ) static

TileSize

cl::opt< unsigned > TileSize("fuse-matrix-tile-size", cl::init(4), cl::Hidden, cl::desc( "Tile size for matrix instruction fusion using square-shaped tiles.")) ( "fuse-matrix-tile-size" , cl::init(4) , cl::Hidden , cl::desc( "Tile size for matrix instruction fusion using square-shaped tiles.") ) static

TileUseLoops

cl::opt< bool > TileUseLoops("fuse-matrix-use-loops", cl::init(false), cl::Hidden, cl::desc("Generate loop nest for tiling.")) ( "fuse-matrix-use-loops" , cl::init(false) , cl::Hidden , cl::desc("Generate loop nest for tiling.") ) static

VerifyShapeInfo

cl::opt< bool > VerifyShapeInfo("verify-matrix-shapes", cl::Hidden, cl::desc("Enable/disable matrix shape verification."), cl::init(false)) ( "verify-matrix-shapes" , cl::Hidden , cl::desc("Enable/disable matrix shape verification.") , cl::init(false) ) static