diff options
| author | Chris Lattner <sabre@nondot.org> | 2005-01-10 02:03:02 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2005-01-10 02:03:02 +0000 |
| commit | 41b764144dbd20450a14cbfae78b207c1ac445cc (patch) | |
| tree | 0bd57535ca1fca47f75f80e0f44950490fdd4551 /llvm/lib/ExecutionEngine/JIT | |
| parent | 00c231baa71462eabd1212e4411a76f67e0bd12e (diff) | |
| download | bcm5719-llvm-41b764144dbd20450a14cbfae78b207c1ac445cc.tar.gz bcm5719-llvm-41b764144dbd20450a14cbfae78b207c1ac445cc.zip | |
Implement a couple of more simplifications. This lets us codegen:
int test2(int * P, int* Q, int A, int B) {
return P+A == P;
}
into:
test2:
movl 4(%esp), %eax
movl 12(%esp), %eax
shll $2, %eax
cmpl $0, %eax
sete %al
movzbl %al, %eax
ret
instead of:
test2:
movl 4(%esp), %eax
movl 12(%esp), %ecx
leal (%eax,%ecx,4), %ecx
cmpl %eax, %ecx
sete %al
movzbl %al, %eax
ret
ICC is producing worse code:
test2:
movl 4(%esp), %eax #8.5
movl 12(%esp), %edx #8.5
lea (%edx,%edx), %ecx #9.9
addl %ecx, %ecx #9.9
addl %eax, %ecx #9.9
cmpl %eax, %ecx #9.16
movl $0, %eax #9.16
sete %al #9.16
ret #9.16
as is GCC (looks like our old code):
test2:
movl 4(%esp), %edx
movl 12(%esp), %eax
leal (%edx,%eax,4), %ecx
cmpl %edx, %ecx
sete %al
movzbl %al, %eax
ret
llvm-svn: 19430
Diffstat (limited to 'llvm/lib/ExecutionEngine/JIT')
0 files changed, 0 insertions, 0 deletions

