<div dir="ltr">Lanai side looks fine to me.<div><br></div><div>Thanks,</div><div><br></div><div>Jacques</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Nov 8, 2016 at 3:34 PM, Krzysztof Parzyszek via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The idea on Hexagon is that const objects should not be placed in a writable section, and there is no such thing as read-only small-data on Hexagon (we only have one global pointer register).<br>
At the same time, there are instructions that load large integer immediates into registers (CONST32/CONST64), and they way they do it is by loading them from small-data (where the assembler/linker would place them), so this is not something carved in silicone...<br>
<br>
One issue we had was that small-data filled up quite quickly for large applications, so we needed some heuristics to limit the amount of stuff that ended up there.<br>
<br>
-Krzysztof<div class="HOEnZb"><div class="h5"><br>
<br>
<br>
<br>
On 11/8/2016 5:23 PM, Jack Andersen via llvm-dev wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On second thought, a third arg will add a burdensome caller constraint in several areas.<br>
<br>
The GlobalObject itself has isConstant(), so that should be sufficient for rejecting ReadOnly cases (Hexagon does it already).<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 8 Nov 2016, at 12:33, Jack Andersen <<a href="mailto:jackoalan@gmail.com" target="_blank">jackoalan@gmail.com</a>> wrote:<br>
<br>
Oh, one thing I forgot to mention:<br>
<br>
ReadOnly objects are also counted as small data globals on PPC (on top of BSS, Data, Common). That's what the r2 base is for (.sdata2, defined to be constant data). 32-bit immediate loads take 2 ops minimum on PPC, so even constant loading benefits from small data.<br>
<br>
It'd be handy to add a third argument containing what kind would normally be returned:<br>
isGlobalInSmallSectionKind(GO, TM, <nominal-kind-expr>)<br>
<br>
If a ReadOnly global is better emitted as instruction immediates, then the target can return `false` right then and there.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Nov 8, 2016, at 07:21, Simon Dardis <<a href="mailto:Simon.Dardis@imgtec.com" target="_blank">Simon.Dardis@imgtec.com</a>> wrote:<br>
<br>
isGlobalInSmallSectionKind<br>
</blockquote></blockquote>
<br>
______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
<br>
</blockquote>
<br>
______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
</div></div></blockquote></div><br></div>