diff options
| author | Chris Lattner <sabre@nondot.org> | 2010-01-24 00:09:49 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2010-01-24 00:09:49 +0000 |
| commit | 1b35bbe8137dbb8e9966357e3b2d426e6ccc3a27 (patch) | |
| tree | 59f45389f75d7feb8cc719ad131a8a06900169fa /llvm/lib/Target/PowerPC | |
| parent | 586d997e98d7f2c2b02d50422da3f604062ab68b (diff) | |
| download | bcm5719-llvm-1b35bbe8137dbb8e9966357e3b2d426e6ccc3a27.tar.gz bcm5719-llvm-1b35bbe8137dbb8e9966357e3b2d426e6ccc3a27.zip | |
change the canonical form of "cond ? -1 : 0" to be
"sext cond" instead of a select. This simplifies some instcombine
code, matches the policy for zext (cond ? 1 : 0 -> zext), and allows
us to generate better code for a testcase on ppc.
llvm-svn: 94339
Diffstat (limited to 'llvm/lib/Target/PowerPC')
| -rw-r--r-- | llvm/lib/Target/PowerPC/README.txt | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/llvm/lib/Target/PowerPC/README.txt b/llvm/lib/Target/PowerPC/README.txt index a243543cd41..5af108ac683 100644 --- a/llvm/lib/Target/PowerPC/README.txt +++ b/llvm/lib/Target/PowerPC/README.txt @@ -640,22 +640,19 @@ We compile: define i32 @bar(i32 %x) nounwind readnone ssp { entry: %0 = icmp eq i32 %x, 0 ; <i1> [#uses=1] - %neg = select i1 %0, i32 -1, i32 0 ; <i32> [#uses=1] + %neg = sext i1 %0 to i32 ; <i32> [#uses=1] ret i32 %neg } to: _bar: - cmplwi cr0, r3, 0 - li r3, -1 - beq cr0, LBB1_2 -; BB#1: ; %entry - li r3, 0 -LBB1_2: ; %entry + cntlzw r2, r3 + slwi r2, r2, 26 + srawi r3, r2, 31 blr -it would be much better to produce: +it would be better to produce: _bar: addic r3,r3,-1 |

