[PATCH] D81308: [Matrix] Use TileInfo to create tiled loop nest for matrix multiply.

Florian Hahn via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 20 08:14:54 PDT 2020


fhahn marked 3 inline comments as done.
fhahn added inline comments.


================
Comment at: llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp:1203
+    for (unsigned I = 0; I < TileSize; I++) {
+      auto *Phi = Builder.CreatePHI(TileVecTy, 2);
+      Phi->addIncoming(ConstantAggregateZero::get(TileVecTy),
----------------
anemet wrote:
> Should we name these something better than the default TMP?  I would even include ā€œIā€ in the name.
Done, it's `result.vec.I` now.


================
Comment at: llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp:1218
+                            {TileSize, TileSize}, EltType, Builder);
+    emitMatrixMultiply(TileResult, A, B, AllowContract, Builder, true);
+    // Store result after the inner loop is done.
----------------
anemet wrote:
> Can we name the Value for this as well (ok as a follow-on)?
I'll do that as follow-on.


================
Comment at: llvm/test/Transforms/LowerMatrixIntrinsics/multiply-fused.ll:9
 
-define void @multiply(<16 x double> * %A, <16 x double> * %B, <16 x double>* %C) {
+define void @multiply(<15 x double> * %A, <6 x double> * %B, <10 x double>* %C) {
 ; CHECK-LABEL: @multiply(
----------------
anemet wrote:
> You should clarify in the description that you're changing this test to prevent tiling.
I added a separate option to control loop generation for now, as there is a bit of tuning left to do to make sure there are no performance regressions. This is also handy for the test.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D81308/new/

https://reviews.llvm.org/D81308





More information about the llvm-commits mailing list