[llvm-bugs] [Bug 27195] Delinearization fails to recognize the correct access function
via llvm-bugs
llvm-bugs at lists.llvm.org
Tue Apr 5 08:04:21 PDT 2016
https://llvm.org/bugs/show_bug.cgi?id=27195
Johannes Doerfert <doerfert at cs.uni-saarland.de> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |REOPENED
Resolution|FIXED |---
--- Comment #2 from Johannes Doerfert <doerfert at cs.uni-saarland.de> ---
For the attached test case we get the following delinearization after r265379:
Arrays {
<4 x i16> MemRef_A[*][4]; // Element size 8
}
ReadAccess := [Reduction Type: NONE] [Scalar: 0]
[N, P] -> { Stmt_for_body[i0] -> MemRef_A[0, P + 7i0] };
MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
[N, P] -> { Stmt_for_body[i0] -> MemRef_A[7i0, 0] };
However, this is not correct as it should be
ReadAccess := [Reduction Type: NONE] [Scalar: 0]
[N, P] -> { Stmt_for_body[i0] -> MemRef_A[7i0 + P, 0] };
which is not equivalent.
If we turn of delinearization here we get the correct (one dimensional) result:
Arrays {
<4 x i16> MemRef_A[*]; // Element size 8
}
ReadAccess := [Reduction Type: NONE] [Scalar: 0]
[N, P] -> { Stmt_for_body[i0] -> MemRef_A[P + 7i0] };
MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
[N, P] -> { Stmt_for_body[i0] -> MemRef_A[7i0] };
Note that the access functions are the same as they are after r265379 __but__
the base structure is not. Especially the write access functions after r265379
is in the first dimension, thus will be multiplied by 4 during linearization.
This does not then not match the read access function.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20160405/4f841606/attachment.html>
More information about the llvm-bugs
mailing list