diff options
author | Hal Finkel <hfinkel@anl.gov> | 2015-08-30 22:12:50 +0000 |
---|---|---|
committer | Hal Finkel <hfinkel@anl.gov> | 2015-08-30 22:12:50 +0000 |
commit | a2cdbce6615bd083cc48237135d78ebbefde0b7a (patch) | |
tree | f8640a2ba0c68a3f8aa27ef254c69d02951d367c /llvm/lib/CodeGen/ParallelCG.cpp | |
parent | d49455ef9357e9c2cb638746559d0dcc68192e0c (diff) | |
download | llvm-a2cdbce6615bd083cc48237135d78ebbefde0b7a.zip llvm-a2cdbce6615bd083cc48237135d78ebbefde0b7a.tar.gz llvm-a2cdbce6615bd083cc48237135d78ebbefde0b7a.tar.bz2 |
[PowerPC] Fixup SELECT_CC (and SETCC) patterns with i1 comparison operands
There were really two problems here. The first was that we had the truth tables
for signed i1 comparisons backward. I imagine these are not very common, but if
you have:
setcc i1 x, y, LT
this has the '0 1' and the '1 0' results flipped compared to:
setcc i1 x, y, ULT
because, in the signed case, '1 0' is really '-1 0', and the answer is not the
same as in the unsigned case.
The second problem was that we did not have patterns (at all) for the unsigned
comparisons select_cc nodes for i1 comparison operands. This was the specific
cause of PR24552. These had to be added (and a missing Altivec promotion added
as well) to make sure these function for all types. I've added a bunch more
test cases for these patterns, and there are a few FIXMEs in the test case
regarding code-quality.
Fixes PR24552.
llvm-svn: 246400
Diffstat (limited to 'llvm/lib/CodeGen/ParallelCG.cpp')
0 files changed, 0 insertions, 0 deletions