<div dir="ltr"><div class="gmail_extra">Hey Arnold,</div><div class="gmail_extra"><br></div><div class="gmail_extra">I've completed some pretty thorough benchmarking and wanted to share the results.</div><div class="gmail_extra">
<br><div class="gmail_quote">On Mon, Jan 27, 2014 at 5:22 PM, Arnold Schwaighofer <span dir="ltr"><<a href="mailto:aschwaighofer@apple.com" target="_blank">aschwaighofer@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div id=":3eu" style="overflow:hidden">Furthermore, I added a heuristic to unroll until load/store ports are saturated “-mllvm enable-loadstore-runtime-unroll” instead of the pure size based heuristic. </div></blockquote>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div id=":3eu" style="overflow:hidden">
<br>
Those two together with a patch that slightly changes the register heuristic and libquantum’s three hot loops will unroll and goodness will ensue (at least for libquantum).</div></blockquote></div><br>Both enabling loadstore runtime unrolling and the register heuristic (enabled with -enable-ind-var-reg-heur) show no interesting regressions (way below the noise) and a few nice benefits across all of the applications I measure. I'd support enabling them right away and getting more feedback from others. I've measured on both westmere and sandybridge, with -march=x86-64 and -march=corei7-avx.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">I don't have any ARM hardware to benchmark with, but I suspect you have decent numbers there? We also have a nice LNT bot that will measure anything we enable for ARM.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">Finally, I've got some experimental results for x86 that show some improvements and no significant regressions when I increase several target thresholds. I'll start a new thread about that though.</div>
</div>