aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/CBackend/Writer.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-10-06 04:02:39 +0000
committerChris Lattner <sabre@nondot.org>2004-10-06 04:02:39 +0000
commit610f1e2785d7278175ed6c332840756e20bc1142 (patch)
tree7284ee3a8f0f5f46bd77253f106df489e63bcb64 /lib/Target/CBackend/Writer.cpp
parentd93d3b047cad68de985d413d2cad953ac758d2a7 (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