[llvm-dev] [RFC] Integer Intrinsics for abs, in unsigned/signed min/max

Philip Reames via llvm-dev llvm-dev at lists.llvm.org
Mon Jun 15 09:55:32 PDT 2020


I'll note that I was one of the folks previously skeptical of this 
idea.  I've been following activity on this in the meantime, and while 
I'm not 100% convinced this is the right direction, I'm also nowhere 
near as sure as I was that it isn't. :)

So, not quite a +1 from me, but not a -1 either.

I think it's completely reasonable to try this approach.  At worst, we 
decide it doesn't work either and simply canonicalize the new intrinsics 
to the existing IR patterns.  :)

Philip

On 6/15/20 1:43 AM, Roman Lebedev via llvm-dev wrote:
> Hello all.
>
> This is a proposal to introduce 5 new integer intrinsics:
> * absolute value
> * signed min
> * signed max
> * unsigned min
> * unsigned max
>
> This is motivated by the fact that we keep working around
> not having these intrinsics, and that constantly leads us into
> having more workarounds, and causes infinite combine loops.
>
> Here's a (likely incomplete!) list of motivational bugs:
>
> infinite loops:
> https://bugs.llvm.org/show_bug.cgi?id=46271 / https://reviews.llvm.org/D81698
> https://bugs.llvm.org/show_bug.cgi?id=45539 /
> https://reviews.llvm.org/rG01bcc3e93714
> https://bugs.llvm.org/show_bug.cgi?id=44835 / https://reviews.llvm.org/D74278
> https://reviews.llvm.org/D68408#1976760
> https://reviews.llvm.org/D59378
> https://bugs.llvm.org/show_bug.cgi?id=38915 / https://reviews.llvm.org/D51964
> https://bugs.llvm.org/show_bug.cgi?id=37526 / https://reviews.llvm.org/rL332855
>
> misc:
> https://bugs.llvm.org/show_bug.cgi?id=44025
> https://bugs.llvm.org/show_bug.cgi?id=43310 / https://reviews.llvm.org/rL372510
> https://bugs.llvm.org/show_bug.cgi?id=35607
> https://bugs.llvm.org/show_bug.cgi?id=35642 / https://reviews.llvm.org/D41136
> https://bugs.llvm.org/show_bug.cgi?id=41083 / https://reviews.llvm.org/D74285
> https://reviews.llvm.org/D70148
> https://bugs.llvm.org/show_bug.cgi?id=31751 /
> https://reviews.llvm.org/D26096 / https://reviews.llvm.org/rL293345
>
> I believe we can do better than that if we stop just treating some IR patterns
> as being canonical and desperately trying not to break/loose track of them,
> but instead do a sensible thing and actually make them first class citizens,
> by introducing intrinsics and use then throughout.
>
> This has been previously discussed in:
> https://lists.llvm.org/pipermail/llvm-dev/2016-November/106868.html
>
> Proposed LangRef semantics: https://reviews.llvm.org/D81829
> Proposed alive2 implementation: https://github.com/AliveToolkit/alive2/pull/353
>
> Roman.
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev


More information about the llvm-dev mailing list