<html>
<head>
<base href="https://llvm.org/bugs/" />
</head>
<body><span class="vcard"><a class="email" href="mailto:doerfert@cs.uni-saarland.de" title="Johannes Doerfert <doerfert@cs.uni-saarland.de>"> <span class="fn">Johannes Doerfert</span></a>
</span> changed
<a class="bz_bug_link
bz_status_REOPENED "
title="REOPENED --- - Delinearization fails to recognize the correct access function"
href="https://llvm.org/bugs/show_bug.cgi?id=27195">bug 27195</a>
<br>
<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>What</th>
<th>Removed</th>
<th>Added</th>
</tr>
<tr>
<td style="text-align:right;">Status</td>
<td>RESOLVED
</td>
<td>REOPENED
</td>
</tr>
<tr>
<td style="text-align:right;">Resolution</td>
<td>FIXED
</td>
<td>---
</td>
</tr></table>
<p>
<div>
<b><a class="bz_bug_link
bz_status_REOPENED "
title="REOPENED --- - Delinearization fails to recognize the correct access function"
href="https://llvm.org/bugs/show_bug.cgi?id=27195#c2">Comment # 2</a>
on <a class="bz_bug_link
bz_status_REOPENED "
title="REOPENED --- - Delinearization fails to recognize the correct access function"
href="https://llvm.org/bugs/show_bug.cgi?id=27195">bug 27195</a>
from <span class="vcard"><a class="email" href="mailto:doerfert@cs.uni-saarland.de" title="Johannes Doerfert <doerfert@cs.uni-saarland.de>"> <span class="fn">Johannes Doerfert</span></a>
</span></b>
<pre>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.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>