<html xmlns:v="urn:schemas-microsoft-com:vml" 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)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><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;}
@font-face
        {font-family:"Malgun Gothic";
        panose-1:2 11 5 3 2 0 0 2 0 4;}
@font-face
        {font-family:"\@Malgun Gothic";
        panose-1:2 11 5 3 2 0 0 2 0 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
tt
        {mso-style-priority:99;
        font-family:"Courier New";}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1171679771;
        mso-list-template-ids:-999161046;}
@list l1
        {mso-list-id:1696734980;
        mso-list-template-ids:905585698;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><b>From:</b> Xinliang David Li [mailto:xinliangli@gmail.com] <br><b>Sent:</b> Tuesday, October 3, 2017 3:22 PM<br><b>To:</b> Jun Lim <junbuml@codeaurora.org><br><b>Cc:</b> Graham Yiu <gyiu@ca.ibm.com>; llvm-dev <llvm-dev@lists.llvm.org><br><b>Subject:</b> Re: [llvm-dev] General question about enabling partial inlining<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>On Tue, Oct 3, 2017 at 9:21 AM, Jun Lim via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<o:p></o:p></p><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Hi Graham, <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Thanks for sharing this.  Are you planning on enabling the pass only on PGO? Even in non-PGO, I noticed some performance gains when we are aggressive in partially inlining the early return part, especially when the callee spill CSRs in the entry block. At a high level, I have two questions: <o:p></o:p></p><ol start=1 type=1><li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:0in;mso-list:l0 level1 lfo1'>What is the main obstacle that prevent the pass from being enabled by default? <o:p></o:p></li><li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:0in;mso-list:l0 level1 lfo1'>Would it make sense to give some bonus in the cost model when we detect the possibility of spilling CSRs in the entry block?<o:p></o:p></li></ol></div></div></blockquote><div><p class=MsoNormal>More enhanced shrink-wrapping will probably take care of this, so using partial inlining to do that seems like a wrong motivation :)<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>In some cases, shrink-wrapping cannot shrink and we need to spill in the entry block. In such case partial inlining might help avoiding the execution of spilling CSRs. For example, I also saw 10% improvement in spec2006/astar when we completely avoid executing CSR spills in the entry block using partial inlining. However, as far as I know, the enhanced shrink-wrapping will help more partial shrinking wrapping. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>David<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><ol start=1 type=1><li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:0in;mso-list:l1 level1 lfo2'><o:p> </o:p></li></ol><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Thanks,<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Jun<o:p></o:p></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b>From:</b> Graham Yiu [mailto:<a href="mailto:gyiu@ca.ibm.com" target="_blank">gyiu@ca.ibm.com</a>] <br><b>Sent:</b> Tuesday, October 3, 2017 11:08 AM<br><b>To:</b> <a href="mailto:junbuml@codeaurora.org" target="_blank">junbuml@codeaurora.org</a><br><b>Cc:</b> <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br><b>Subject:</b> Re: [llvm-dev] General question about enabling partial inlining<o:p></o:p></p></div></div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p><span style='font-size:10.0pt'>Hi Jun,</span><br><br><span style='font-size:10.0pt'>We're actually looking at enhancing the partial inlining pass right now (see </span><a href="http://lists.llvm.org/pipermail/llvm-dev/2017-August/116515.html" target="_blank"><span style='font-size:10.0pt'>http://lists.llvm.org/pipermail/llvm-dev/2017-August/116515.html</span></a><span style='font-size:10.0pt'>)</span><br><br><span style='font-size:10.0pt'>We'd be interested in turning on the pass by default some time in the future, if our enhancements prove beneficial.</span><br><br><span style='font-size:10.0pt'>Cheers,</span><br><br><span style='font-size:10.0pt'>Graham Yiu<br>LLVM Compiler Development<br>IBM Toronto Software Lab<br>Office: <a href="tel:(905)%20413-4077" target="_blank">(905) 413-4077</a> C2-707/8200/Markham<br>Email: <a href="mailto:gyiu@ca.ibm.com" target="_blank">gyiu@ca.ibm.com</a></span><br><br><img border=0 width=16 height=16 style='width:.1666in;height:.1666in' id="m_4051889560643542791_x005f_x0000_i1025" src="cid:image001.gif@01D33C5F.4152A010" alt="Inactive hide details for via llvm-dev ---09/13/2017 01:12:02 PM---Hi, I noticed some performance gains in some spec benchmarks"><span style='font-size:10.0pt;color:#424282'>via llvm-dev ---09/13/2017 01:12:02 PM---Hi, I noticed some performance gains in some spec benchmarks without</span><br><br><span style='font-size:10.0pt;color:#5F5F5F'>From: </span><span style='font-size:10.0pt'>via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span><br><span style='font-size:10.0pt;color:#5F5F5F'>To: </span><span style='font-size:10.0pt'><a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a></span><br><span style='font-size:10.0pt;color:#5F5F5F'>Date: </span><span style='font-size:10.0pt'>09/13/2017 01:12 PM</span><br><span style='font-size:10.0pt;color:#5F5F5F'>Subject: </span><span style='font-size:10.0pt'>[llvm-dev] General question about enabling partial inlining</span><br><span style='font-size:10.0pt;color:#5F5F5F'>Sent by: </span><span style='font-size:10.0pt'>"llvm-dev" <<a href="mailto:llvm-dev-bounces@lists.llvm.org" target="_blank">llvm-dev-bounces@lists.llvm.org</a>></span><o:p></o:p></p><div><div class=MsoNormal><hr size=2 width="100%" noshade style='color:#8091A5' align=left></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt'><br><br><br><tt><span style='font-size:10.0pt'>Hi,</span></tt><span style='font-size:10.0pt;font-family:"Courier New"'><br><br><tt>I noticed some performance gains in some spec benchmarks without </tt><br><tt>significant code size bloat when aggressively performing partial </tt><br><tt>inlining, especially when the original callee spill CSRs in the entry </tt><br><tt>block. I guess the partial inlining is not enabled mainly due to the </tt><br><tt>code size. Is there any other issue which prevent the pass from being </tt><br><tt>enabled? Do we have any plan or any on-going works to enable partial </tt><br><tt>inlining ?</tt><br><tt>Thanks,</tt><br><tt>Jun</tt><br><br><tt>-- </tt><br><tt>Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm </tt><br><tt>Technologies, Inc.</tt><br><tt>Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a </tt><br><tt>Linux Foundation Collaborative Project.</tt><br><tt>_______________________________________________</tt><br><tt>LLVM Developers mailing list</tt><br><tt><a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a></tt><br><tt><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Ddev&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=4ST7e3kMd0GTi3w9ByK5Cw&m=zEValqMYe9FvZqI-GQUgWPmVUgbEq8OBAjTrBjz9xhY&s=1h4Cw3vDlJBIknkn0Ts3R_e3PU64h_dyvEkyCdonAVo&e=" target="_blank">https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Ddev&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=4ST7e3kMd0GTi3w9ByK5Cw&m=zEValqMYe9FvZqI-GQUgWPmVUgbEq8OBAjTrBjz9xhY&s=1h4Cw3vDlJBIknkn0Ts3R_e3PU64h_dyvEkyCdonAVo&e=</a> </tt><br><br><br></span><o:p></o:p></p></div></div></div></div><p class=MsoNormal style='margin-bottom:12.0pt'><br>_______________________________________________<br>LLVM Developers mailing list<br><a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><o:p></o:p></p></blockquote></div><p class=MsoNormal><o:p> </o:p></p></div></div></div></body></html>