<div dir="ltr"><div>I would do this, but might require heroic effort to recognize it. legality is already questionable allowing full array access (even if memcmp is lowered to conditional early exit just like original code). I don't know if you can just turn original code into memcmp based on <a href="http://en.cppreference.com/w/c/string/byte/memcmp">http://en.cppreference.com/w/c/string/byte/memcmp</a></div><div><br></div>auto a = memcmp(&block[i1], block[i2], 14);<div>if (a == 0)</div><div>  return <unshown above>;<br>else</div><div>  return a > 0;</div><div><br></div><div>Kevin</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, May 29, 2017 at 9:12 PM, Nemanja Ivanovic 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"><div dir="ltr"><div>The bzip2 (and how common this pattern is) discussion aside, I'm wondering why this transform is actually correct.<br><br></div>For example, in any of the blocks above, if `c2 > c1` the function will return 0 - which is clearly different from what memcmp does. Or am I just missing something super obvious when reading the code.<br></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On Thu, May 25, 2017 at 7:04 AM, Daniel Berlin 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></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span>On Wed, May 24, 2017 at 8:09 AM, Sebastian Pop <span dir="ltr"><<a href="mailto:sebpop.llvm@gmail.com" target="_blank">sebpop.llvm@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>On Fri, May 19, 2017 at 4:32 PM, Daniel Berlin via llvm-dev<br>
<<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br>
> i think you'd have to write some idiom recognizer here. The ones we have<br>
> won't do it.<br>
><br>
> I guess my other question would be how commonly this happens. If it's common<br>
> and matters a lot, awesome.<br>
> I wouldn't do it just to fix SPEC :P<br>
><br>
> (people who care about bzip2 speed probably use any of the faster bzip2<br>
> impls :P)<br>
><br>
<br>
</span>Danny, do you know of forks of bzip2 that are more efficient than <a href="http://bzip.org" rel="noreferrer" target="_blank">bzip.org</a>?<br>
I haven't seen one.<br></blockquote><div><br></div></span><div>They aren't forks so much as replacements.</div><div><br></div><div>An example: lbzip2</div><div><br></div><div>I know that there are a number of bzip2 impls that use faster versions of the block sorting algorithm (or alternatives) etc.</div><span><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Sirish is going to send a patch to Julian Seward and try to get the change<br>
in a new release of bzip2, and from there we may need to ask the AOSP<br>
folks to update bzip2.  AOSP has the last released bzip2 from Sept 2010.<br>
<br>
For SPEC benchmarketing, doing the right thing wouldn't help.<br>
Maybe we should put this idiom and others under a -fspec flag ;-)<br>
<span class="m_6154877827966731895m_7966634431262247122HOEnZb"><font color="#888888"><br>
Sebastian<br>
</font></span></blockquote></span></div><br></div></div>
<br></div></div><span class="">______________________________<wbr>_________________<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/<wbr>mailman/listinfo/llvm-dev</a><br>
<br></span></blockquote></div><br></div>
<br>______________________________<wbr>_________________<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" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br></div>