diff options
author | Chris Lattner <sabre@nondot.org> | 2006-09-19 05:22:59 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-09-19 05:22:59 +0000 |
commit | 3c48ea54ee62346ec1afb669873e4bd52031e5f7 (patch) | |
tree | 9c7bb150e1502b845b597dfb4cfb56d6e2803f57 /llvm/lib/Bytecode | |
parent | 5a42ebcff3055930fed4a76f45127553e71c8e0a (diff) | |
download | bcm5719-llvm-3c48ea54ee62346ec1afb669873e4bd52031e5f7.tar.gz bcm5719-llvm-3c48ea54ee62346ec1afb669873e4bd52031e5f7.zip |
Fold the PPCISD shifts when presented with 0 inputs. This occurs for code
like:
long long test(long long X, int Y) {
return 1ULL << Y;
}
long long test2(long long X, int Y) {
return -1LL << Y;
}
which we used to compile to:
_test:
li r2, 1
subfic r3, r5, 32
li r4, 0
addi r6, r5, -32
srw r3, r2, r3
slw r4, r4, r5
slw r6, r2, r6
or r3, r4, r3
slw r4, r2, r5
or r3, r3, r6
blr
_test2:
li r2, -1
subfic r3, r5, 32
addi r6, r5, -32
srw r3, r2, r3
slw r4, r2, r5
slw r2, r2, r6
or r3, r4, r3
or r3, r3, r2
blr
Now we produce:
_test:
li r2, 1
addi r3, r5, -32
subfic r4, r5, 32
slw r3, r2, r3
srw r4, r2, r4
or r3, r4, r3
slw r4, r2, r5
blr
_test2:
li r2, -1
subfic r3, r5, 32
addi r6, r5, -32
srw r3, r2, r3
slw r4, r2, r5
slw r2, r2, r6
or r3, r4, r3
or r3, r3, r2
blr
llvm-svn: 30479
Diffstat (limited to 'llvm/lib/Bytecode')
0 files changed, 0 insertions, 0 deletions