mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-01 01:14:12 +00:00
example nate pointed out
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25841 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7a4d2913ea
commit
83e64baaef
@ -427,3 +427,36 @@ _test:
|
||||
|
||||
without the lwz/stw's.
|
||||
|
||||
===-------------------------------------------------------------------------===
|
||||
|
||||
Compile this:
|
||||
|
||||
int foo(int a) {
|
||||
int b = (a < 8);
|
||||
if (b) {
|
||||
return b * 3; // ignore the fact that this is always 3.
|
||||
} else {
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
into something not this:
|
||||
|
||||
_foo:
|
||||
1) cmpwi cr7, r3, 8
|
||||
mfcr r2, 1
|
||||
rlwinm r2, r2, 29, 31, 31
|
||||
1) cmpwi cr0, r3, 7
|
||||
bgt cr0, LBB1_2 ; UnifiedReturnBlock
|
||||
LBB1_1: ; then
|
||||
rlwinm r2, r2, 0, 31, 31
|
||||
mulli r3, r2, 3
|
||||
blr
|
||||
LBB1_2: ; UnifiedReturnBlock
|
||||
li r3, 2
|
||||
blr
|
||||
|
||||
In particular, the two compares (marked 1) could be shared by reversing one.
|
||||
This could be done in the dag combiner, by swapping a BR_CC when a SETCC of the
|
||||
same operands (but backwards) exists. In this case, this wouldn't save us
|
||||
anything though, because the compares still wouldn't be shared.
|
||||
|
Loading…
Reference in New Issue
Block a user