<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Juergen has a tablegen patch that allows multiple return types on the same intrinsic, which should do exactly what you want without any extra name mangling.</div><div class=""><br class=""></div><div class="">-Andy</div><br class=""><div><blockquote type="cite" class=""><div class="">On Oct 9, 2014, at 1:39 PM, Kevin Modzelewski <<a href="mailto:kmod@dropbox.com" class="">kmod@dropbox.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Oh interesting, that seems to work -- assuming that other people like the approach, would you mind factoring out that part of your statepoint patch?</div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Thu, Oct 9, 2014 at 9:19 AM, Philip Reames <span dir="ltr" class=""><<a href="mailto:listmail@philipreames.com" target="_blank" class="">listmail@philipreames.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000" class="">
<div class="">On 10/08/2014 09:40 PM, Kevin
Modzelewski wrote:<br class="">
</div>
<blockquote type="cite" class="">
<pre class="">Hi atrick,
It didn't seem like there was anything special that had to be done besides
just defining the new intrinsic with the different return type.
It seems inelegant to create a new intrinsic for a new return type, but
we're running into a case where we'd like to return a double through a patchpoint
and I'm not sure of a better way to do that.</pre>
</blockquote>
You might want to take a look at how we defined the gc_result
intrinsics in the statepoint patch which is currently up for
review. With some changes to the intrinsic name mangling, you can
define an intrinsic per "family" of types. The four we had to add
were: void, int, pointer, float. (float here means any floating
point type, int means any integer type, etc..)
<blockquote type="cite" class="">
<pre class=""><a href="http://reviews.llvm.org/D5696" target="_blank" class="">http://reviews.llvm.org/D5696</a>
Files:
docs/StackMaps.rst
include/llvm/IR/Intrinsics.td
lib/CodeGen/SelectionDAG/FastISel.cpp
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
lib/IR/Verifier.cpp
lib/Target/AArch64/AArch64TargetTransformInfo.cpp
lib/Target/X86/X86TargetTransformInfo.cpp
test/CodeGen/X86/patchpoint.ll
</pre>
<br class="">
<fieldset class=""></fieldset>
<br class="">
<pre class="">_______________________________________________
llvm-commits mailing list
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank" class="">llvm-commits@cs.uiuc.edu</a>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank" class="">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a>
</pre>
</blockquote>
<br class="">
</div>
</blockquote></div><br class=""></div>
</div></blockquote></div><br class=""></body></html>