[EarlyCSE] detect equivalence of selects with inverse conditions and commuted operand...
authorSanjay Patel <spatel@rotateright.com>
Tue, 16 Apr 2019 20:41:20 +0000 (20:41 +0000)
committerSanjay Patel <spatel@rotateright.com>
Tue, 16 Apr 2019 20:41:20 +0000 (20:41 +0000)
commite08783e2f54b949a1dca0b6f906f2a18b7984fc1
treed4232008fca9ec639723e34afd8a241f71b1e452
parent3a00b020aab096e7aa8c94b28b4cef86aa3adbd9
[EarlyCSE] detect equivalence of selects with inverse conditions and commuted operands (PR41101)

This is 1 of the problems discussed in the post-commit thread for:
rL355741 / http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20190311/635516.html
and filed as:
https://bugs.llvm.org/show_bug.cgi?id=41101

Instcombine tries to canonicalize some of these cases (and there's room for improvement
there independently of this patch), but it can't always do that because of extra uses.
So we need to recognize these commuted operand patterns here in EarlyCSE. This is similar
to how we detect commuted compares and commuted min/max/abs.

Differential Revision: https://reviews.llvm.org/D60723

llvm-svn: 358523
llvm/lib/Transforms/Scalar/EarlyCSE.cpp
llvm/test/Transforms/EarlyCSE/commute.ll