[PowerPC] Fix a conversion is not considered when the ISD::BR_CC node making the...
authorLi Jia He <hljhehlj@cn.ibm.com>
Thu, 29 Nov 2018 03:04:39 +0000 (03:04 +0000)
committerLi Jia He <hljhehlj@cn.ibm.com>
Thu, 29 Nov 2018 03:04:39 +0000 (03:04 +0000)
commitbcae407a3ce959f089ab964f89b6e7654192a5b6
treed885f0e8c8f4afae6f687a9822302fb3e481c092
parentdb8dd23204fbda26f03a04dde65929f09b5e5896
[PowerPC] Fix a conversion is not considered when the ISD::BR_CC node making the instruction selection

Summary:
 A signed comparison of i1 values produces the opposite result to an unsigned one if the condition code
 includes less-than or greater-than. This is so because 1 is the most negative signed i1 number and the
 most positive unsigned i1 number. The CR-logical operations used for such comparisons are non-commutative
 so for signed comparisons vs. unsigned ones, the input operands just need to be swapped.

Reviewed By: steven.zhang

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

llvm-svn: 347831
llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
llvm/test/CodeGen/PowerPC/brcond.ll