Browse thread
Re: optimize div to right shift (NOT!)
-
Jonathan Kimmitt
-
Török Edwin
- Benedikt Meurer
- Jon Harrop
-
Török Edwin
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Benedikt Meurer <benedikt.meurer@g...> |
| Subject: | Re: [Caml-list] Re: optimize div to right shift (NOT!) |
On Dec 13, 2010, at 13:58 , Török Edwin wrote: > It is still possible to avoid the division, gcc generates this: > movq %rdi, %rax > shrq $63, %rax > addq %rdi, %rax > sarq %rax > > Or a better example with division by 8: > leaq 7(%rdi), %rax > testq %rdi, %rdi > cmovns %rdi, %rax > sarq $3, %rax ocamlopt does exactly this, atleast for x86-64. > And division by non-power of two integers can optimized by replacing it > with multiplication with its inverse (which gcc and llvm don't do for > signed divisions, only for unsigned ones): > http://www.hackersdelight.org/HDcode/magic.c.txt > http://www.hackersdelight.org/HDcode/magicu.c.txt The AMD64 optimization guide gives additional pointers here, i.e. it also lists replacement sequences for multiplication by constant. > Best regards, > --Edwin greets, Benedikt