[fpc-devel] Request to remove "movzwl %ax, %eax" -> "andl $0xffff, %ax" optimisations

J. Gareth Moreton gareth at moreton-family.com
Wed Nov 27 18:08:34 CET 2019

Hi everyone,

Specifically to Florian, Jonas and Pierre, I would like to remove the 
"movz-> and" family of optimisations from the x86 peephole optimiser 
because the zero-extension commands no longer have the performance 
penalty that they had back in the 90s.  Both instructions have a 
read/write dependency, but movzx uses fewer bytes.

On a side-note, I'm exploring OptPass1Movx a bit more closely and found 
that you can't set Result to True on some of the optimisations (to 
indicate a change and to re-run Pass 1 under -O3) because they cause an 
infinite loop if you do (I've been researching ways to cut down on 
passes and speed up the peephole optimiser).  Additionally, there's also 
a problem that the optimisations in question sometimes end up 'fighting' 
with an optimisation in OptPass1MOV that does the opposite.  Either way 
it makes this part of the codebase somewhat fragile as well as wasting 
compilation time.

Gareth aka. Kit

More information about the fpc-devel mailing list