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).Details
Diff Detail
- Repository
 - rG LLVM Github Monorepo
 
Event Timeline
Thanks for the patch. I have one concern with the the regression test: A single CHECK-NOT test is not a robust test to check anything, the test would succeed even if nothing is printed at all.
I am still accepting the patch in the interest of getting this fixed. However, I may replace the test by something else, e.g. by checking that the output with and without the flag is the same.
The test need an assertions-enabled build (REQUIRES: asserts) to print anything. That is, it will always pass on non-assert builds.
Thanks for the review! I have updated the test case to take it into the account.
I am still accepting the patch in the interest of getting this fixed. However, I may replace the test by something else, e.g. by checking that the output with and without the flag is the same.
Could the ast be checked for this purpose?