<html><head><style type='text/css'>p { margin: 0; }</style></head><body><div style='font-family: arial,helvetica,sans-serif; font-size: 10pt; color: #000000'><br><hr id="zwchr"><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px; color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; font-family: Helvetica,Arial,sans-serif; font-size: 12pt;"><b>From: </b>"Andrey Bokhanko" <andreybokhanko@gmail.com><br><b>To: </b>"Daniel Berlin" <dberlin@dberlin.org><br><b>Cc: </b>"Hal Finkel" <hfinkel@anl.gov>, "llvm-dev" <llvm-dev@lists.llvm.org><br><b>Sent: </b>Wednesday, August 31, 2016 7:17:08 AM<br><b>Subject: </b>Re: [llvm-dev] [RFC] Interprocedural MIR-level outlining pass<br><br><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Aug 30, 2016 at 7:28 PM, Daniel Berlin <span dir="ltr"><<a href="mailto:dberlin@dberlin.org" target="_blank">dberlin@dberlin.org</a>></span> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div dir="ltr"><div>I tend to agree with Hal -- value numbering computes equivalent *values*,</div></div></blockquote></span><div>Sorry, but this is just flat out wrong</div><div><br></div><div>"A Global Value Numbering(GVN) algorithm is considered to be complete (or precise), if it can detect all Herbrand equivalences among expressions in a program.</div><div>Two expressions are said to be Herbrand equivalent (or transparent equivalent ), if they are computed by the same operator applied to equivalent operands "</div><div><br></div><div>This is, AFAIK, precisely what you want.<br></div><div><br></div></div></div></div>
</blockquote></div><br></div><div class="gmail_extra">I'm not entirely happy with this definition (IMHO, it's overly restrictive), but this in irrelevant.</div><div class="gmail_extra"><br></div><div id="DWT10090" class="gmail_extra">What relevant is what one considers to be "equivalent operands". Take my example again -- for outlining (Jessica's name) / code folding (your name) optimization reads of "a" and "b" globals are equivalent; for VN and its users they are not.</div></div></blockquote>Yes, this was exactly my point. We want to recognize structurally-equivalent sequences of instructions on inequivalent operands.<br><br> -Hal<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px; color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; font-family: Helvetica,Arial,sans-serif; font-size: 12pt;"><div dir="ltr"><div class="gmail_extra"></div><div class="gmail_extra"><br></div><div class="gmail_extra">Yours,</div><div class="gmail_extra">Andrey</div><div class="gmail_extra"><br></div></div>
</blockquote><br><br><br>-- <br><div><span name="x"></span>Hal Finkel<br>Assistant Computational Scientist<br>Leadership Computing Facility<br>Argonne National Laboratory<span name="x"></span><br></div></div></body></html>