[fpc-devel] x86-64 compilation of while loops
Florian Klämpfl
florian at freepascal.org
Thu May 31 14:56:41 CEST 2018
Am 29.05.2018 um 21:48 schrieb J. Gareth Moreton:
> That seems fair. Thank you for your
> answer. I'm still learning about the
> nuances of branch prediction and the like.
Do be honest, I never investigated this particular case in detail, but years I ago we just decided based on the reasons
I mentioned.
>
> On Tue 29/05/18 21:27 , Florian Klämpfl
> florian at freepascal.org sent:
>> Am 28.05.2018 um 01:55 schrieb J. Gareth
> Moreton:
>>
>>>
>>
>>> In this case, the ".balign" hint adds
>> 2 bytes to pad the loop. However, my
> question is this... why
>>> does it immediately jump to the end of
> the loop
>> to check the condition (which is very
> likely to be
>>> true on the first iteration), only to
> jump to
>> the beginning again?
>>
>>
>> Several reasons:
>>
>> - it is not that easy to find a
> heuristics when the condition should be
>> checked twice
>> - two conditional jumps waste an extra
> branch prediction table entry
>>
>> - bigger code, higher cache usage
>>
>>
>>
>> Weigthing these reasons against the
> little overhead of an extra
>> unconditional jump, we decided to
>> use the currently used code generation
> strategy.
>>
>>
> __________________________________________
> _____
>>
>> fpc-devel maillist - fpc-
> devel at lists.freepascal.org
>> http://lists.freepascal.org/cgi-
> bin/mailman/listinfo/fpc-devel
>>
>>
>>
>>
>
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
>
More information about the fpc-devel
mailing list