<div dir="ltr"><div>Hi Richard,<br><br>Could this patch be enhanced to recognize this case too:<br><a href="http://llvm.org/bugs/show_bug.cgi?id=17332#c12">http://llvm.org/bugs/show_bug.cgi?id=17332#c12</a><br><br></div>Maybe it already does? Sorry, I can't test it myself at the moment.<br>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Dec 19, 2013 at 10:28 AM, Richard Sandiford <span dir="ltr"><<a href="mailto:rsandifo@linux.vnet.ibm.com" target="_blank">rsandifo@linux.vnet.ibm.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Second ping for this patch.<br>
<br>
Richard Sandiford <<a href="mailto:rsandifo@linux.vnet.ibm.com">rsandifo@linux.vnet.ibm.com</a>> writes:<br>
> The SystemZ tests check for rotates by X+10 using:<br>
><br>
>    %add = add i32 %amt, 10<br>
>    %sub = sub i32 32, %add<br>
>    %parta = shl i32 %a, %add<br>
>    %partb = lshr i32 %a, %sub<br>
>    %or = or i32 %parta, %partb<br>
><br>
> But instcombine turns this into:<br>
><br>
>    %add = add i32 %amt, 10<br>
>    %sub = sub i32 22, %amt<br>
>    %parta = shl i32 %a, %add<br>
>    %partb = lshr i32 %a, %sub<br>
>    %or = or i32 %parta, %partb<br>
><br>
> so that the subtraction isn't dependent on the addition.  This patch extends DAGCombiner to handle this pattern too.<br>
><br>
><br>
> <a href="http://llvm-reviews.chandlerc.com/D2347" target="_blank">http://llvm-reviews.chandlerc.com/D2347</a><br>
><br>
> Files:<br>
>   lib/CodeGen/SelectionDAG/DAGCombiner.cpp<br>
>   test/CodeGen/SystemZ/shift-04.ll<br>
<br>
Thanks,<br>
Richard<br>
<br>
<br>_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
<br></blockquote></div><br></div>