History log of /llvm-project/llvm/test/Analysis/ScalarEvolution/ext_min_max.ll (Results 1 – 3 of 3)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3
# 5fe915bb 20-Feb-2023 Max Kazantsev <mkazantsev@azul.com>

[SCEV] Canonicalize ext(min/max(x, y)) to min/max(ext(x), ext(y))

I stumbled over this while trying to improve our exit count work. These expressions
are equivalent for complementary signed/unsigned

[SCEV] Canonicalize ext(min/max(x, y)) to min/max(ext(x), ext(y))

I stumbled over this while trying to improve our exit count work. These expressions
are equivalent for complementary signed/unsigned ext and min/max (including umin_seq),
but they are not canonicalized and SCEV cannot recognize them as the same.

The benefit of this canonicalization is that SCEV can prove some new equivalences which
it coudln't prove because of different forms. There is 1 test where trip count seems pessimized,
I could not directly figure out why, but it just seems an unrelated issue that we can fix.
Other changes seem neutral or positive to me.

Differential Revision: https://reviews.llvm.org/D141481
Reviewed By: nikic

show more ...


Revision tags: llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7
# 3c83bbd3 11-Jan-2023 Max Kazantsev <mkazantsev@azul.com>

[Test] Add complementary test for umin_seq


# b5fa3574 11-Jan-2023 Max Kazantsev <mkazantsev@azul.com>

[Test] Add test showing missing canonicalization opportunity in SCEV

We could have same SCEVs for the following expressions:
zext(umin(x, y)) and umin(zext(x), zext(y));
zext(umax(x, y)) and uma

[Test] Add test showing missing canonicalization opportunity in SCEV

We could have same SCEVs for the following expressions:
zext(umin(x, y)) and umin(zext(x), zext(y));
zext(umax(x, y)) and umax(zext(x), zext(y))
sext(smin(x, y)) and smin(zsxt(x), sext(y));
sext(smax(x, y)) and smax(sext(x), sext(y)).

show more ...