<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">I agree this combining can in theory be done as part of SLP vectorization, targeting wider scalar registers as a limited form of vector hardware, supporting wider loads/stores and some bitwise operations. That would likely catch more cases than what can be done with a small standalone pass.</div>
<div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div></div><div class="gmail_extra"><br clear="all"><div><div dir="ltr"><div>
<div style="line-height:1.5em;padding-top:10px;margin-top:10px;font-family:sans-serif;font-size:small"><span style="color:rgb(85,85,85);border-width:2px 0px 0px;border-style:solid;border-color:rgb(213,15,37);padding-top:2px;margin-top:2px">Raúl E Silvera |</span><span style="color:rgb(85,85,85);border-width:2px 0px 0px;border-style:solid;border-color:rgb(51,105,232);padding-top:2px;margin-top:2px"> SWE |</span><span style="color:rgb(85,85,85);border-width:2px 0px 0px;border-style:solid;border-color:rgb(0,153,57);padding-top:2px;margin-top:2px"> <a href="mailto:rsilvera@google.com" target="_blank">rsilvera@google.com</a> |</span><span style="border-width:2px 0px 0px;border-style:solid;border-color:rgb(238,178,17);padding-top:2px;margin-top:2px"><font color="#555555"> </font><font color="#0033bb"><u>408-789-2846</u></font></span></div>
<br></div></div></div>
<br><br><div class="gmail_quote">On Thu, May 1, 2014 at 3:52 PM, Chandler Carruth <span dir="ltr"><<a href="mailto:chandlerc@gmail.com" target="_blank">chandlerc@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im HOEnZb">I think I would prefer to implement this as a standalone pass until we have<br>
some clear phase ordering need for it in a utility like instcombine.<br>
<br>
My suggestion: a pass that runs right after GVN.<br>
<br>
I would also use the domtree rather than the basic block structure.<br>
<br>
I think it really needs to handle arbitrary sizes, and both loads and<br>
stores. You don't want to scan multiple times for this.<br>
<br>
But after thinking all of this, it strikes me that the work done here is<br>
*very* similar to the work done by the SLP vectorizer for loads and stores.<br>
I think there is at least the possibility that this should be done by the<br>
SLP vectorizer, or that some of the logic should be shared. I'd appreciate<br>
Arnold's, Raul's, Nadav's, and Hal's thoughts on this idea.<br>
<br>
</div><div class="HOEnZb"><div class="h5"><a href="http://reviews.llvm.org/D3580" target="_blank">http://reviews.llvm.org/D3580</a><br>
<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</div></div></blockquote></div><br></div>