[Polly] Check the properties of accesses to operands of a matrix-matrix
authorRoman Gareev <gareevroman@gmail.com>
Sat, 25 Sep 2021 14:19:33 +0000 (19:19 +0500)
committerRoman Gareev <gareevroman@gmail.com>
Tue, 28 Sep 2021 17:58:57 +0000 (22:58 +0500)
commit113fa82c3ca4d4fc8310a1de3c4ec31343f81542
tree37b5423b6904ed907f6533f714918f7e218e84e0
parentbe610932fa068ed2228b0f694ae80c9294f0293f
[Polly] Check the properties of accesses to operands of a matrix-matrix
multiplication

The following code modifies elements of the array D.

    for (i = 0; i < _PB_NI; i++)
      for (j = 0; j < _PB_NJ; j++)
      {
        for (k = 0; k < _PB_NK; k++)
        {
          double Mul = A[i][k] * B[k][j];
          D[i][j][k] += Mul;
          C[i][j] += Mul;
        }
      }

Nevertheless, the code is recognised as a matrix-matrix multiplication, since
the second and third dimensions of D are accessed with non-zero strides.

This fixes the typo, which was made during the translation to C++ bindings
(https://reviews.llvm.org/D35845).

Reviewed By: Michael Kruse <llvm@meinersbur.de>

Differential Revision: https://reviews.llvm.org/D110491
polly/lib/Transform/MatmulOptimizer.cpp
polly/test/ScheduleOptimizer/pattern-matching-based-opts_15.ll [new file with mode: 0644]