<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=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jan 27, 2016, at 5:40 PM, Philip Reames <<a href="mailto:listmail@philipreames.com" class="">listmail@philipreames.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">On 01/27/2016 05:26 PM, Adam Nemet wrote:</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" class="">On Jan 27, 2016, at 4:58 PM, Philip Reames <<a href="mailto:listmail@philipreames.com" class="">listmail@philipreames.com</a>> wrote:<br class=""><br class=""><br class=""><br class="">On 01/22/2016 12:16 PM, Adam Nemet wrote:<br class=""><blockquote type="cite" class="">anemet added a comment.<br class=""><br class="">It seems to me that partial redundancy means slightly different things between GVN Load-PRE and LLE.<br class=""></blockquote>I think that terminology wise, we actually mean the same thing by "partially redundant".  We mean there's one or more paths where it wasn't previously available where we need to make it available to remove the load candidate.  The difference is what subset of possible partially redundant cases each one handles.<br class=""><br class="">(The preceding is probably a nit, just getting terminology clear.)<br class=""></blockquote>Yeah, you’re right.  I was overcomplicating by trying to make a distinction.  I was probably thinking of this too much in terms of recurrences.  As you say the better distinction is whether we insert loads on a single path from outside the loop or on other paths as well within the loop.<br class=""><br class=""><blockquote type="cite" class=""><blockquote type="cite" class="">In LLE, a load is partially redundant, if the forwarding store does not dominate all the loop latches.  To make it fully redundant we would have to add loads on the unavailable paths.<br class=""><br class="">I think that in GVN, the loopy case is always considered a partial redundancy case because you'd have to insert a load in the preheader.  Let me know if I am getting this wrong.<br class=""></blockquote>This is likely to be true.<br class=""><blockquote type="cite" class="">So it seems to me that the LLE partial redundancy case is equivalent to the case in GVN Load-PRE when we need *more than one* load inserted.<br class=""></blockquote>This seems reasonable, but note that we currently only insert a single load when doing Load-PRE in GVN.  This is a heuristic/profitability decision, not a legality one.<br class=""></blockquote>Ah, thanks for the info.  So I guess then the only difference is the lack of load->load forwarding in LLE.<br class=""><br class="">Also Philip, are you satisfied with my response to your question earlier?  Specifically that we don’t want to version when optimizing for size.<br class=""></blockquote><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Yep, don't let me hold things up.  All of your responses have seemed reasonable to me.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""></div></blockquote><div><br class=""></div><div>Great, thanks.  I will update the patch accordingly then.</div><br class=""><blockquote type="cite" class=""><div class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class="">Thanks for the feedback,<br class="">Adam<br class=""><br class=""><blockquote type="cite" class=""><blockquote type="cite" class="">Does this make sense?<br class=""><br class=""><br class=""><a href="http://reviews.llvm.org/D16300" class="">http://reviews.llvm.org/D16300</a></blockquote></blockquote></blockquote></div></blockquote></div><br class=""></body></html>