<div class="gmail_extra">Hi Chandler,</div><div class="gmail_extra"><br></div><div class="gmail_extra">I thought about that, but it seemed like a more disruptive change. As I understand it, the logic in and under SimplifyMulInst assumes that the type of the simplified expression will be the same as the type of the operation's arguments, which isn't the case for vmull_n_* (their return type width is twice their argument type width). Threading the desired expression type and extension method through SimplifyMulInst and its callees seems like it could be messy. Is there a good way to do this?</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">- Lang.<br><br><div class="gmail_quote">On Mon, Apr 23, 2012 at 11:22 PM, Chandler Carruth <span dir="ltr"><<a href="mailto:chandlerc@google.com" target="_blank">chandlerc@google.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_extra"><div class="gmail_quote"><div>On Mon, Apr 23, 2012 at 11:18 PM, Lang Hames <span dir="ltr"><<a href="mailto:lhames@gmail.com" target="_blank">lhames@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi All,<div><br></div><div>Could someone who's more familiar with InstCombine please take a look at this patch for me? It's meant to enable simplification of ARM neon vmull_n_* intrinsics by zext/sexting (as appropriate) their arguments so that they can be analyzed with SimplifyMulInst.</div>


</blockquote><div><br></div></div><div>Rather than introducing zext/sext instructions, why not teach SimplifyMulInst to look through the existing vmull_n_* intrinsics?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div>

<div><br></div><div>It seems to fix my test case, but it has at least one issue: The sext/zext instructions hang around after InstSimplify if the vmull isn't simplified - I have to explicitly run DCE afterwards to get rid of them (see the output for the complex1 function in the test case for an example of this). Tips on the right way to solve this would be appreciated.</div>



<div><br></div><div>Cheers,</div><div>Lang.</div>
<br></div>_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">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>
</blockquote></div><br></div>