<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Nov 20, 2015 at 2:15 PM, Krzysztof Parzyszek via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 11/20/2015 12:52 PM, Rail Shafigulin via llvm-dev wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
DFAPacketizer has a virtual method isLegalToPruneDependencies(). I<br>
looked at  the Hexagon code and but wasn't unable to understand the<br>
details (unfortunately as of now, I'm not well versed in the Hexagon<br>
architecture). Would anyone be able to shed light on what is dependency<br>
pruning and how it should be used?<br>
<br>
Any help is appreciated.<br>
</blockquote>
<br></span>
Two instructions can be packetized if<br>
- "isLegalToPacketizeTogether" returns true, or<br>
- "isLegalToPruneDependencies" returns true.<br>
<br>
The reason why two instructions may not be "legal to packetize together" may be that there is some form of dependency between the two.  For example, one instruction may define register, and the next one may use it.  In most cases on Hexagon, these cannot go into the same packet: all registers used in a packet are read before anything gets updated.  There are exception to this, and in some cases, instructions can go together despite dependencies---this is where these dependencies can get "pruned" (which really means "ignored").<br>
<br>
The code in Hexagon is somewhat convoluted, in the current shape it's not necessarily something to imitate.  As a first approximation, you can just leave the "isLegalToPruneDependencies" with the default implementation (that returns "false").  This way only "isLegalToPacketizeTogether" will determine if two instructions can be in a packet together or not.<span class="HOEnZb"><font color="#888888"><br>
<br>
-Krzysztof<br>
<br>
<br>
-- <br>
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</font></span></blockquote></div><br><br>Thanks for the explanation.<br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>R</div></div></div></div></div>
</div></div>