[fpc-devel] Loop unrolling question

J. Gareth Moreton gareth at moreton-family.com
Fri Aug 3 21:57:14 CEST 2018


 Hi everyone,

 So I'm pondering about attempting to implement the binary search system I
devised for case blocks.  To find the correct case label, you need to
iterate a search loop a fixed maximum of ceil(log2(n)) times, where n is
the number of individual case values (excluding "else").  Given that this
is quite a low number and I managed to get the loop itself down to just 8
instructions (not including the comparison and conditional jump at the
end), this could be unwrapped for low values of ceil(log2(n))... possibly
up to 7 or 8, I'd say.  However, if an exact match is found early, how
serious is the penalty of having a conditional jump forward on each
unrolled iteration for x86-64, whether it's taken or not? (This would be
the equivalent of a Break command)

 Gareth aka. Kit
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20180803/5d9fb435/attachment.html>


More information about the fpc-devel mailing list