[Matrix] Use TileInfo to create tiled loop nest for matrix multiply.
authorFlorian Hahn <flo@fhahn.com>
Mon, 20 Jul 2020 19:50:49 +0000 (20:50 +0100)
committerFlorian Hahn <flo@fhahn.com>
Mon, 20 Jul 2020 20:11:53 +0000 (21:11 +0100)
commitf13a59bcff79293f1424a32f6f14d47a4a4b3d46
treedc87fff8928e27ab656d34095329d20e62b70e1d
parentb8f765a1e17f8d212ab1cd8f630d35adc7495556
[Matrix] Use TileInfo to create tiled loop nest for matrix multiply.

This patch uses the TileInfo introduced in D77550 to generate a loop
nest for tiled matrix multiplication, instead of generating the
unrolled code for the whole multiplication. This makes code-generation
more scalable for larger matrixes.

Initially loops are only used if both the number of rows and columns are
divisible by the tile size. Other cases will be added as follow-up.

Reviewers: anemet, Gerolf, hfinkel, andrew.w.kaylor, LuoYuanke, nicolasvasilache

Reviewed By: anemet

Differential Revision: https://reviews.llvm.org/D81308
llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp
llvm/test/Transforms/LowerMatrixIntrinsics/multiply-fused-loops.ll [new file with mode: 0644]
llvm/test/Transforms/LowerMatrixIntrinsics/multiply-fused-volatile.ll
llvm/test/Transforms/LowerMatrixIntrinsics/multiply-fused.ll