<br><br><div class="gmail_quote">On Tue, Oct 4, 2011 at 3:53 PM, Peter Collingbourne <span dir="ltr"><<a href="mailto:peter@pcc.me.uk">peter@pcc.me.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im">On Tue, Oct 04, 2011 at 07:28:26PM +0100, Peter Collingbourne wrote:<br>
> > and the OpenCL frontend seems to respect the address<br>
> >    mapping but does not emit complete array definitions for locally-defined<br>
> >    __local arrays.  Does the front-end currently not support __local arrays<br>
> >    embedded in the code?  It seems to work if the __local arrays are passed as<br>
> >    pointers to the kernel.<br>
><br>
> Clang should support __local arrays, and this looks like a genuine<br>
> bug in the IR generator.  I will investigate.<br>
<br>
</div>This actually seems to be an optimisation.  Since only the first<br>
element of the array is accessed, LLVM will only allocate storage for<br>
that element.  If you compile your example with -O0 (OpenCL compiles<br>
with optimisations turned on by default), you will see that the 64<br>
element array is created.<br></blockquote><div> </div><div>I'm not really convinced this is a legal optimization.  What if you purposely allocate arrays with extra padding to prevent bank conflicts in the kernel?<br>
 </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
Thanks,<br>
<font color="#888888">--<br>
Peter<br>
</font></blockquote></div><br><br clear="all"><br>-- <br><br><div>Thanks,</div><div><br></div><div>Justin Holewinski</div><br>
<div style="visibility: hidden; left: -5000px; position: absolute; z-index: 9999; padding: 0px; margin-left: 0px; margin-top: 0px; overflow: hidden; word-wrap: break-word; color: black; font-size: 10px; text-align: left; line-height: 130%;" id="avg_ls_inline_popup">
</div>