[fpc-devel] Double-checking an optimisation

J. Gareth Moreton gareth at moreton-family.com
Sun Jan 9 15:08:28 CET 2022


On 09/01/2022 12:35, Florian Klämpfl via fpc-devel wrote:
>>   It removes a jump and a label, which might permit other long-range 
>> optimisations, but it's 3 instructions that are in a dependency chain.
>
> Didn't you implement something which transformed the code above in
>
>       xorl    %ebx,%ebx
>       cmpl    $1,%ecx
>       setg    %bl
>       subl    %ebx,%ecx
>
> ?

I believe I did, yes.  I'll have to double-check if the "jcc -> setcc" 
optimisation is actually mine or if I just adapted it to use 
GetIntRegisterBetween.  That's certainly the better sequence because XOR 
is a smaller instruction (2 bytes, I believe) and it breaks the 
dependency chain, since it can execute at the same time as the CMP 
instruction.

Either way, it's not being performed here, so that's another 
optimisation to add to my ever-growing list!  Yes, I've got a new 
optimisation ready to merge request soon - I'm running my local tests as 
we speak.  I need to discipline myself a bit and try to fix the bug on 
3.2.4's i386-linux implementation.

Gareth aka. Kit


-- 
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus



More information about the fpc-devel mailing list