diff options
| author | Chris Lattner <sabre@nondot.org> | 2007-04-17 21:14:16 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2007-04-17 21:14:16 +0000 |
| commit | 9a861a85503a8e555c4a458b97b143e23a07ff99 (patch) | |
| tree | 3191297964f8dec0712baa079249963d4fbc1f9d /llvm/lib/ExecutionEngine/Interpreter | |
| parent | 0a8d14ce67bf11c5fa95940435e958f3294a72ae (diff) | |
| download | bcm5719-llvm-9a861a85503a8e555c4a458b97b143e23a07ff99.tar.gz bcm5719-llvm-9a861a85503a8e555c4a458b97b143e23a07ff99.zip | |
Fold (x << c1)>> c2 into a single shift if the bits shifted out aren't used.
This compiles:
int baz(long long a) { return (short)(((int)(a >>24)) >> 9); }
into:
_baz:
srwi r2, r3, 1
extsh r3, r2
blr
on PPC, instead of:
_baz:
slwi r2, r3, 8
srwi r2, r2, 9
extsh r3, r2
blr
GCC produces:
_baz:
srwi r10,r4,24
insrwi r10,r3,24,0
srawi r9,r3,24
srawi r3,r10,9
extsh r3,r3
blr
This implements CodeGen/PowerPC/shl_elim.ll
llvm-svn: 36221
Diffstat (limited to 'llvm/lib/ExecutionEngine/Interpreter')
0 files changed, 0 insertions, 0 deletions

