<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">John,</div><div class=""><br class=""></div><div class="">That’s a great post and really interesting data, thank you!</div><br class=""><div><blockquote type="cite" class=""><div class="">On Nov 25, 2014, at 9:58 AM, Reid Kleckner <<a href="mailto:rnk@google.com" class="">rnk@google.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Cool! Looks like we do lots of provably unnecessary alignment checks. :)</div></div></blockquote>Indeed, but where do these checks come from? As far as I know, right now vectorizer doesn’t generate them, and who else could do that?</div><div><br class=""></div><div>Michael</div><div><br class=""><blockquote type="cite" class=""><div class=""><div class="gmail_extra"><br class=""><div class="gmail_quote">On Tue, Nov 25, 2014 at 9:03 AM, John Regehr <span dir="ltr" class=""><<a href="mailto:regehr@cs.utah.edu" target="_blank" class="">regehr@cs.utah.edu</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Actually, let me save you some time by pointing out the thing that is perhaps immediately useful about our recent work, which is the fact that Souper now supports "optimization profiling".<br class="">
<br class="">
If you build an LLVM using Souper and then use that LLVM to build SPEC CPU 2006, here are optimizations ranked by dynamic profile count:<br class="">
<br class="">
  <a href="http://blog.regehr.org/extra_files/souper-nov-14/bydprofile.html" target="_blank" class="">http://blog.regehr.org/extra_<u class=""></u>files/souper-nov-14/<u class=""></u>bydprofile.html</a><br class="">
<br class="">
In other words, if you implement optimizations near the top of this list, you would be likely to make LLVM compile SPEC CPU 2006 in less time.<br class="">
<br class="">
Here are the optimizations sorted by static profile count:<br class="">
<br class="">
  <a href="http://blog.regehr.org/extra_files/souper-nov-14/bysprofile.html" target="_blank" class="">http://blog.regehr.org/extra_<u class=""></u>files/souper-nov-14/<u class=""></u>bysprofile.html</a><br class="">
<br class="">
Implementing the highly ranked ones would be likely to make the clang binary smaller.<br class="">
<br class="">
Finally here are the optimizations sorted by size; this is handy because the higher-ranked ones are generally easier to understand:<br class="">
<br class="">
  <a href="http://blog.regehr.org/extra_files/souper-nov-14/bysize.html" target="_blank" class="">http://blog.regehr.org/extra_<u class=""></u>files/souper-nov-14/bysize.<u class=""></u>html</a><div class="HOEnZb"><div class="h5"><br class="">
<br class="">
John<br class="">
______________________________<u class=""></u>_________________<br class="">
LLVM Developers mailing list<br class="">
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank" class="">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu/" target="_blank" class="">http://llvm.cs.uiuc.edu</a><br class="">
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank" class="">http://lists.cs.uiuc.edu/<u class=""></u>mailman/listinfo/llvmdev</a><br class="">
</div></div></blockquote></div><br class=""></div>
_______________________________________________<br class="">LLVM Developers mailing list<br class=""><a href="mailto:LLVMdev@cs.uiuc.edu" class="">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" class="">http://llvm.cs.uiuc.edu</a><br class=""><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" class="">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br class=""></div></blockquote></div><br class=""></body></html>