<br><br><div class="gmail_quote">On Wed, Feb 8, 2012 at 7:41 AM, Duncan Sands <span dir="ltr"><<a href="mailto:baldrick@free.fr">baldrick@free.fr</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi David,<div><div class="h5"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I do intend to remove the intrinsics eventually. I just haven't looked<br>
at what I need to do in order to do that in the AutoUpgrade code so I<br>
didn't do it yet. The previous intrinsic removal was my first time<br>
using the IR builder functions so I'm pretty new to that side of llvm.<br>
<br>
Would you prefer me to put the builtin lines back or would you rather<br>
fix dragonegg to not use them?<br>
</blockquote>
<br>
Please put back the builtin lines and do not delete the intrinsics.<br>
<br>
Intrinsics are used by users and we want to respect that.<br>
<br>
The builtins are useful for running the C backend to get something<br>
compilable by gcc.  This is very helpful for debugging.<br>
</blockquote>
<br></div></div>
once auto-upgrade support for these intrinsics goes in, won't everything be<br>
fine?  Old bitcode using the intrinsics will be turned into generic LLVM IR<br>
(shuffles).  The C backend should turn this into valid C, though indeed not<br>
into the GCC builtins anymore.  Frontends can pretty easily just generate<br>
the generic IR rather than the intrinsics (at least I hope it's easy, since I'm<br>
going to have to do this in my front-end).<br>
<br>
Ciao, Duncan.<br>
</blockquote></div><br>LLVM doesn't match gcc on a lot of builtins. Chris also stated to me in e-mail that matching gcc on vector builtins isn't a goal. Most of the x86 shuffle instructions don't have llvm intrinsics and instead use the generic _builtin_shufflevector in the *mmintrin.h header files in clang.  My goal here was only to make a few more shuffles match the behavior of  the other shuffles in this respect.<br clear="all">
<br>-- <br>~Craig<br>