Hi Eli,<br><br>Well I think a way to hack it might be better for my purposes, can you suggest any ways of getting started on that and where.<br><br>Essentially I'm developing an IDE and need to extract the dependency graphs while retaining the actual function names rather than them being converted to llvm.* names. If I go for the other option you suggested. I'd have to do a one-to one
mapping of all possible optimized function calls that could be made from different libraries imported by the user.<br><br>Thanks<br>Nipun<br><br><div class="gmail_quote">On Sat, Jan 31, 2009 at 4:48 PM, Eli Friedman <span dir="ltr"><<a href="mailto:eli.friedman@gmail.com">eli.friedman@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d">On Sat, Jan 31, 2009 at 1:14 PM, Nipun Arora <<a href="mailto:nipun2512@gmail.com">nipun2512@gmail.com</a>> wrote:<br>

> Hii,<br>
><br>
> Thanks for the response, yes I couldn't find any way to extract the names<br>
> through any of the passes.<br>
> Where could I potentially insert a hack so that any function call to<br>
> intrinsic functions or library functions can be retrieved?<br>
> Could you gimme any ideas for the start?<br>
<br>
</div>Basically, there is no mapping from the llvm.* names to the _mm_*<br>
names; the transformation is lossy.<br>
<br>
You have a couple options here: one is to manipulate the source to let<br>
you see the _mm_ names, and the other is to catch the _mm_ names<br>
before the inliner runs.<br>
<br>
Manipulating the source isn't actually very hard, although it's a<br>
non-trivial amount of work; basically, you create your own xmmintrin.h<br>
that doesn't have inline implementations, and mess with the include<br>
paths so the compiler picks your version rather than the builtin<br>
version.  That way, once you transform to IL, the _mm_ calls will stay<br>
as _mm_ calls.<br>
<br>
If you're using the standard headers, the _mm_ function are defined as<br>
inline functions, so at least in trunk LLVM builds, they exist in the<br>
IL at some point.  They're gone by the time llvm-gcc outputs the IL,<br>
though, because the inliner unconditionally inlines them.  So to get<br>
the _mm_ names, you'll have to hack the llvm-gcc source to disable the<br>
inlining pass.<br>
<div><div></div><div class="Wj3C7c"><br>
-Eli<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</div></div></blockquote></div><br>