<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>