[fpc-devel] LEA instruction speed

Tomas Hajny XHajT03 at hajny.biz
Tue Oct 10 10:57:34 CEST 2023


On 2023-10-09 20:51, J. Gareth Moreton via fpc-devel wrote:


Hi Kit,

> I updated the "blea" test in the merge request so it now displays the
> processor brand name on x86_64; however, it is not fetched under i386
> because CPUID was not introduced until later 486 processors.  I've
> attached it to this e-mail if anyone wants to take a look to ensure I
> haven't broken something.

I don't know what's broken, but the results vary so much on a fast 
machine that they are unusable for any measurement from my point of view 
(standard 3.2.2 compiler, compiled with -O4 and running under MS Windows 
this time). Sometimes the ADD version shows 0.0 ns/call, sometimes the 
LEA version shows 0.0 ns/call (32-bits) or 0.1 ns/call (64-bits). See 
the attached results (the CPU is only displayed for the 64-bit 
compilation, but it's obviously the same CPU).

Tomas


> 
> On 09/10/2023 18:01, J. Gareth Moreton via fpc-devel wrote:
>> Thank you very much!  That processor is built on the Excavator 
>> architecture and lines up with the flag I put in the merge request 
>> (i.e. it has the "fast LEA" hint).
>> 
>> I honestly didn't expect this much testing feedback, so thank you all!
>> 
>> Gareth aka. Kit
>> 
>> P.S. I'm tempted to extend the test slightly to actually name the CPU 
>> automatically.
>> 
>> On 09/10/2023 15:40, Jean SUZINEAU via fpc-devel wrote:
>>> My results:
>>> jean at First-Boss:~/temp$ cat /proc/cpuinfo | grep "model name"
>>> model name    : AMD A6-7480 Radeon R5, 8 Compute Cores 2C+6G
>>> jean at First-Boss:~/temp$ /usr/bin/fpc blea.pp
>>> Free Pascal Compiler version 3.2.2 [2021/07/09] for x86_64
>>> Copyright (c) 1993-2021 by Florian Klaempfl and others
>>> Target OS: Linux for x86-64
>>> Compiling blea.pp
>>> Linking blea
>>> 95 lines compiled, 0.2 sec
>>> jean at First-Boss:~/temp$ ./blea
>>>    Pascal control case: 5.1 ns/call
>>>  Using LEA instruction: 0.5 ns/call
>>> Using ADD instructions: 0.8 ns/call
>>> jean at First-Boss:~/temp$
>>> 
>>> _______________________________________________
>>> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
>>> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
>>> 
>> _______________________________________________
>> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
>> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
>> 
> _______________________________________________
> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: blea.txt
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20231010/ec38b9af/attachment-0001.txt>


More information about the fpc-devel mailing list