[PATCH] Experimental stackmap and patchpoint intrinsic definitions.

Eric Christopher echristo at gmail.com
Tue Oct 29 11:08:02 PDT 2013


On Tue, Oct 29, 2013 at 10:51 AM, Andrew Trick <atrick at apple.com> wrote:

>
> On Oct 28, 2013, at 11:45 AM, Juergen Ributzka <juergen at apple.com> wrote:
>
> > Hi Chris,
> >
> > 1.) The return type of the patchpoint intrinsic is independent of any of
> its arguments, so we couldn’t use the LLVMMatchType to let tblgen pattern
> match all the possible intrinsic names for us. A more generic approach
> would require extending tblgen to also handle this case.
> >
> > 2.) Not sure what you mean, because both patchpoint intrinsic versions
> take llvm_ptr_ty as an argument (3rd argument).
> >
> > Cheers,
> > Juergen
> >
> > On Oct 26, 2013, at 6:04 PM, Chris Lattner <clattner at apple.com> wrote:
> >
> >>
> >> On Oct 21, 2013, at 8:11 PM, Andrew Trick <atrick at apple.com> wrote:
> >>
> >>> Hi lhames, ributzka, echristo,
> >>>
> >>> These new intrinsics require varargs support.
> >>
> >> Why is the _void and _i64 embedded into the intrinsic name?  For the
> first one, are you expecting other versions of this?  On the second,
> can/should it just take a llvm_ptr_ty, so that it is properly generic over
> any pointer type?
>
> Juergen’s answer above is correct. I can rephrase.
>
> llvm.experimental.safepoint only has/will have a single version of the
> intrinsic.
>
> llvm.experimental.patchpoint implies a safepoint but adds call-like
> semantics. Each return type that we support needs a different version of
> the intrinsic. WebKit only needs two: void and i64. I suggested i8* and
> double variants but they aren’t interested in using them yet. I’m happy to
> add speculative features, but my current policy is strictly as-needed.
>
> I don’t think there are any objections to the patch at this point. If
> anyone wants more time/discussion please let me know.
>
>
I've largely been reviewing the documentation first, it's a lot of code
review as a feature :)

I'm not objecting per-se, but I think there are some aspects of it I'm not
a fan of and figured getting the documentation for the intrinsics nailed
down first would be a good step.

-eric


> -Andy
>
> >>>
> >>> http://llvm-reviews.chandlerc.com/D1993
> >>>
> >>> Files:
> >>> include/llvm/IR/Intrinsics.td
> >>>
> >>> Index: include/llvm/IR/Intrinsics.td
> >>> ===================================================================
> >>> --- include/llvm/IR/Intrinsics.td
> >>> +++ include/llvm/IR/Intrinsics.td
> >>> @@ -455,6 +455,19 @@
> >>>                                    llvm_ptr_ty],
> >>>                                   [IntrReadWriteArgMem, NoCapture<2>]>;
> >>>
> >>> +//===------------------------ Stackmap Intrinsics
> -------------------------===//
> >>> +//
> >>> +def int_experimental_stackmap : Intrinsic<[],
> >>> +                                  [llvm_i32_ty, llvm_i32_ty,
> llvm_vararg_ty]>;
> >>> +def int_experimental_patchpoint_void : Intrinsic<[],
> >>> +                                                 [llvm_i32_ty,
> llvm_i32_ty,
> >>> +                                                  llvm_ptr_ty,
> llvm_i32_ty,
> >>> +                                                  llvm_vararg_ty]>;
> >>> +def int_experimental_patchpoint_i64 : Intrinsic<[llvm_i64_ty],
> >>> +                                                [llvm_i32_ty,
> llvm_i32_ty,
> >>> +                                                 llvm_ptr_ty,
> llvm_i32_ty,
> >>> +                                                 llvm_vararg_ty]>;
> >>> +
> >>> //===-------------------------- Other Intrinsics
> --------------------------===//
> >>> //
> >>> def int_flt_rounds : Intrinsic<[llvm_i32_ty]>,
> >>> <D1993.1.patch>_______________________________________________
> >>> llvm-commits mailing list
> >>> llvm-commits at cs.uiuc.edu
> >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> >>
> >> _______________________________________________
> >> llvm-commits mailing list
> >> llvm-commits at cs.uiuc.edu
> >> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20131029/463fce49/attachment.html>


More information about the llvm-commits mailing list