diff options
author | Chris Lattner <sabre@nondot.org> | 2004-10-06 04:02:39 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-10-06 04:02:39 +0000 |
commit | 610f1e2785d7278175ed6c332840756e20bc1142 (patch) | |
tree | 7284ee3a8f0f5f46bd77253f106df489e63bcb64 /lib/Target/CBackend/Writer.cpp | |
parent | d93d3b047cad68de985d413d2cad953ac758d2a7 (diff) |
Codegen signed divides by 2 and -2 more efficiently. In particular
instead of:
s: ;; X / 2
movl 4(%esp), %eax
movl %eax, %ecx
shrl $31, %ecx
movl %eax, %edx
addl %ecx, %edx
sarl $1, %eax
ret
t: ;; X / -2
movl 4(%esp), %eax
movl %eax, %ecx
shrl $31, %ecx
movl %eax, %edx
addl %ecx, %edx
sarl $1, %eax
negl %eax
ret
Emit:
s:
movl 4(%esp), %eax
cmpl $-2147483648, %eax
sbbl $-1, %eax
sarl $1, %eax
ret
t:
movl 4(%esp), %eax
cmpl $-2147483648, %eax
sbbl $-1, %eax
sarl $1, %eax
negl %eax
ret
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16760 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/CBackend/Writer.cpp')
0 files changed, 0 insertions, 0 deletions