<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jun 21, 2016 at 8:58 AM, Mehdi Amini <span dir="ltr"><<a href="mailto:mehdi.amini@apple.com" target="_blank">mehdi.amini@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><br><div><div><div class="h5"><blockquote type="cite"><div>On Jun 20, 2016, at 3:00 PM, vivek pandya via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:</div><br><div><div dir="ltr" style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jun 20, 2016 at 10:05 PM, Sanjoy Das<span> </span><span dir="ltr"><<a href="mailto:sanjoy@playingwithpointers.com" target="_blank">sanjoy@playingwithpointers.com</a>></span><span> </span>wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hi Vivek,<span><br><br>vivek pandya wrote:<br><br>> For Octane and Kraken I have run them 4 times and above result is<br>> geometric mean. For Octane standard deviation (SD) is<br>> 918.54 (NO_IPRA) and 597.82 (With_IPRA). For Kraken unfortunately I<br>> don't have readings any more but there was very<br>> minor change in each run. JetStream it self runs the test for 3<br>> times reports the result. From next time onwards I will<br>> run test at least for 10 times<br><br></span>Oh, no, I used "10 times" as an anecdotal number.  Geomean of 4 times<br>is enough.  Of course, if it does not take extra effort, running them<br>for more iterations is better, but don't bother if it will e.g. take<br>more than a trivial amount of manual work.<span><br><br>>     It'd also be great to have a precise, non-measurement oriented view of<br>>     the benchmarks.<br>><br>> I don't understand this point actually all these benchmarks are<br>> suggested by firefox-devs and they wanted the results back.<br><br></span>I was talking about the `-stats` bit there ^.<span><br><br>>     Is it possible to collect some statistics on how much<br>>     you've improved the register allocation in these workloads?<br>><br>> Actually while testing single source test case with debug build I<br>> used to compare results of -stats with regalloc<br>> keyword but while building such a huge software I prefer release<br>> build of llvm. And also I don't know if there is any<br>> way in llvm to generate stats for the whole build.<br><br></span>Can you do something quick and dirty, like just have some local<br>changes that dumps out some information on outs() ?</blockquote><div>Yes that should not take too much of time. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span><br><br>>     Perhaps<br>>     you could count the instances where you preserved a register over a<br>>     call site that wouldn't have been possible without IPRA?<br>><br>> Yes this seems a good idea and I think this is implementable, after<br>> calculating new regmask when inserting data into<br>> immutable pass two regmasks can be compared to calculate<br>> improvements. I will work on this and let you know the progress.<br><br></span>Just to be clear: you don't *have* to do this (specifically, check<br>with your mentor before sinking too much time into this).  But if we<br>can come up with easy to "confirm your kill" (i.e. ensure what you<br>think should happen is what is actually happening) then I think we<br>should do it.<br></blockquote><div>I will try if this can be done in a simple way. I am sure mentors will welcome it.</div></div></div></div></div></blockquote><div><br></div></div></div><div>Yes having more stats seems a nice thing to have.</div><div><br></div></div></div></blockquote><div>Hello ,</div><div>I did some quick and dirty hack for calculating no of register preserved due to IPRA:</div><div><br></div><div><font face="monospace, monospace">std::vector<uint32_t> RegMaskCopy = RegMask;</font></div><div><font face="monospace, monospace">const uint32_t *CallPreservedMaskCopy =</font></div><div><font face="monospace, monospace">      TRI->getCallPreservedMask(MF, MF.getFunction()->getCallingConv());</font></div><div><font face="monospace, monospace">// calculate improvement by counting no of bits set.</font></div><div><font face="monospace, monospace">unsigned int count = 0;</font></div><div><font face="monospace, monospace">for (unsigned PReg = 1, PRegE = TRI->getNumRegs(); PReg < PRegE; ++PReg) {</font></div><div><font face="monospace, monospace">  if(!(CallPreservedMaskCopy[PReg / 32] & (1u << PReg % 32)) </font></div><div><font face="monospace, monospace">      && (RegMaskCopy[PReg / 32] & (1u << PReg % 32))){</font></div><div><font face="monospace, monospace">    markRegClobbered(TRI, &RegMaskCopy[0], PReg); // set aliases to 0</font></div><div><font face="monospace, monospace">    count++;</font></div><div><font face="monospace, monospace">  }</font></div><div><font face="monospace, monospace">}</font></div><div><font face="monospace, monospace">outs() << "Improvement Due to IPRA : " << count << "\n"</font>;</div><div><br></div><div>Is this seem good? </div><div>-Vivek</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div></div><div>— </div><span class=""><font color="#888888"><div>Mehdi</div><div><br></div><br></font></span><blockquote type="cite"><div><span class=""><div dir="ltr" style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div class="gmail_extra"><div class="gmail_quote"><div>-Vivek </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>Thanks, and best of luck!<span><font color="#888888"><br>-- Sanjoy<br></font></span></blockquote></div><br></div></div></span><span class=""><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">_______________________________________________</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">LLVM Developers mailing list</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><a href="mailto:llvm-dev@lists.llvm.org" style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">llvm-dev@lists.llvm.org</a><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a></span></div></blockquote></div><br></div></blockquote></div><br></div></div>