[PATCH] D69686: [LVI][CVP] Use block value when simplifying icmps
Dave Green via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 28 10:45:03 PDT 2020
dmgreen added a comment.
Hello.
We've ran into an issues with a case like this:
https://godbolt.org/z/KnvGvo
This now manages to prove that the "max" in a saturating the max(min(X, 32767), -32768) is always false. For some cpu's that's fantastic, and give a decent speed increase. But others have a ssat instruction that can do that saturation quickly, that match from a min(max(..)).
Same goes for MVE instructions where there are a lot of saturating instructions we were previously picking (even if we were not doing it optimally before).
Any ideas of a good way of re-proving that the lower bounds don't need to be checked, but in the backend during ISel?
(In this case the _only_ value that can saturate is a -32768*-32768 multiply, but the code remains and the performance change can be quite substantial. )
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D69686/new/
https://reviews.llvm.org/D69686
More information about the llvm-commits
mailing list