HomePhabricator

[SelectionDAG] swap select_cc operands to enable folding

Authored by labrinea on Nov 9 2018, 3:09 AM.

Description

[SelectionDAG] swap select_cc operands to enable folding

The DAGCombiner tries to SimplifySelectCC as follows:

select_cc(x, y, 16, 0, cc) -> shl(zext(set_cc(x, y, cc)), 4)

It can't cope with the situation of reordered operands:

select_cc(x, y, 0, 16, cc)

In that case we just need to swap the operands and invert the Condition Code:

select_cc(x, y, 16, 0, ~cc)

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

llvm-svn: 346484