[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