Well, you'll be pleased to know that I am now back from my camping and
hiking trip in the Lake District and have actually purchased "Hacker's
Delight", and I have to say it's extremely insightful. I would love to
play around and implement some of the suggested optimisations.
Some of them will require some clever insight and manipulation at the
node level though (e.g. converting "(x mod constant) = 0" into something
that produces fast code unique to checking to see if the division is
exact)... the main problem is seeing through all the typecasts and the
different loads.
Gareth aka. Kit
On 24/08/2021 20:14, Marģers . via fpc-devel wrote:
I came up with even shorter variant of div
example
function teDWordDivBy7_v4( divided : dword):dword; assembler;
nostackframe;
asm
mov ecx,divided
mov rax,2635249153693862181
mul rcx
mov eax,edx
end;
current version for comparison
function teDWordDivBy7_v0( divided : dword):dword; assembler;
nostackframe;
asm
mov ecx,divided
mov eax,613566757
mul ecx
add edx,ecx
rcr edx,1
shr edx,2
mov eax,edx
end;
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
--
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel