<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-CA><div class=WordSection1><p class=MsoNormal>Hi Justin, Hal,</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>It is a BB level cache. bypassSlowDivision() is executed once per BasicBlock. Notice that the DivCache is locally defined in bypassSlowDivision(). So the cache would be empty when %Ret2 is encountered.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Tyler</p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;border:none;padding:0cm'><br><b>From: </b>Hal Finkel<br><b>Sent: </b>December 9, 2015 7:16 AM<br><b>To: </b>Justin Lebar<br><b>Cc: </b>preston gurd;llvm-commits;Tyler Nowicki<br><b>Subject: </b>Re: [PATCH] Rename PerBBDivCache to DivCache in BypassSlowDivision.</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p><p class=MsoNormal>Hi Justin,</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>You seem to be right, but the code does not seem to be setup correctly for a function-level cache. Specifically, it seems to be missing a dominance check before reusing the result of the previous division expansion. Thus, if we have:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>%Dividend = ...</p><p class=MsoNormal>%Divisor = ...</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>if (%whatever) {</p><p class=MsoNormal>  %Ret = %Dividend / %Divisor;</p><p class=MsoNormal>} else {</p><p class=MsoNormal>  %Ret2 = %Dividend / %Divisor;</p><p class=MsoNormal>}</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>what prevents this code from "reusing" the expansion for %Ret upon encountering %Ret2?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>-Hal</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>----- Original Message -----</p><p class=MsoNormal>> From: "Justin Lebar via llvm-commits" <llvm-commits@lists.llvm.org></p><p class=MsoNormal>> To: "llvm-commits" <llvm-commits@lists.llvm.org></p><p class=MsoNormal>> Cc: "preston gurd" <preston.gurd@intel.com></p><p class=MsoNormal>> Sent: Tuesday, December 8, 2015 12:12:22 PM</p><p class=MsoNormal>> Subject: [PATCH] Rename PerBBDivCache to DivCache in BypassSlowDivision.</p><p class=MsoNormal>> </p><p class=MsoNormal>> This hashtable is used for the whole function, not just the BB.</p><p class=MsoNormal>> </p><p class=MsoNormal>> No functional changes.</p><p class=MsoNormal>> ---</p><p class=MsoNormal>>  lib/Transforms/Utils/BypassSlowDivision.cpp | 13 ++++++-------</p><p class=MsoNormal>>  1 file changed, 6 insertions(+), 7 deletions(-)</p><p class=MsoNormal>> </p><p class=MsoNormal>> _______________________________________________</p><p class=MsoNormal>> llvm-commits mailing list</p><p class=MsoNormal>> llvm-commits@lists.llvm.org</p><p class=MsoNormal>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</p><p class=MsoNormal>> </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>-- </p><p class=MsoNormal>Hal Finkel</p><p class=MsoNormal>Assistant Computational Scientist</p><p class=MsoNormal>Leadership Computing Facility</p><p class=MsoNormal>Argonne National Laboratory</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>