diff options
author | Chris Lattner <sabre@nondot.org> | 2006-09-20 06:19:26 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-09-20 06:19:26 +0000 |
commit | 5f42a240ba5c6199d2d78fb1238938da2c073755 (patch) | |
tree | 96545cc2379adfa4da73258e9d51e06ccbbe5c9d /lib/System/Unix/Unix.h | |
parent | ac924c8248c66ed643a342e8ac902ebe6148c4b8 (diff) |
Two things:
1. teach SimplifySetCC that '(srl (ctlz x), 5) == 0' is really x != 0.
2. Teach visitSELECT_CC to use SimplifySetCC instead of calling it and
ignoring the result. This allows us to compile:
bool %test(ulong %x) {
%tmp = setlt ulong %x, 4294967296
ret bool %tmp
}
to:
_test:
cntlzw r2, r3
cmplwi cr0, r3, 1
srwi r2, r2, 5
li r3, 0
beq cr0, LBB1_2 ;
LBB1_1: ;
mr r3, r2
LBB1_2: ;
blr
instead of:
_test:
addi r2, r3, -1
cntlzw r2, r2
cntlzw r3, r3
srwi r2, r2, 5
cmplwi cr0, r2, 0
srwi r2, r3, 5
li r3, 0
bne cr0, LBB1_2 ;
LBB1_1: ;
mr r3, r2
LBB1_2: ;
blr
This isn't wonderful, but it's an improvement.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30513 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/System/Unix/Unix.h')
0 files changed, 0 insertions, 0 deletions