[llvm-dev] [RFC] Integer Intrinsics for abs, in unsigned/signed min/max
Roman Lebedev via llvm-dev
llvm-dev at lists.llvm.org
Mon Jun 15 01:43:35 PDT 2020
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.
More information about the llvm-dev
mailing list