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?