Hi everyone,

So I have been asked to do some work in improving optimisation for AARCH64, and 
ARM by logical 
extension since some parts are shared.  I've had a look around the code for the 
Peephole Optimizer 
for these platforms, and while I've found some potential improvements to 
generated code, my first 
desire is to break up the monolithic optimisation functions (e.g. 
"PeepHoleOptPass1Cpu"), since some 
of them are well over 1,000 lines long and incredibly unwieldy.  

The plan for this is simple... each opcode or set of similar opcodes will get 
its own function 
similar to how it is done on x86 platforms (e.g. "OptPass1STR" for STR 
optimisations).  This will 
make the code much more compartmentalised and easier to maintain.  There are 
some exceptions to this 
rule but I'm managing them easily enough.

Additionally, at a later stage, I want each platform to be able to share the 
DebugMsg method and the 
SPeepholeOptimization string, since currently a lot of platforms redeclare 
DebugMsg but without 
actually changing anything in the implementation.

Obviously I'll submit the changes as patches so they can be properly reviewed 
and tested, but does 
this sound like a good idea?

Gareth aka. Kit

P.S. While I haven't been asked to improve aarch64-linux specifically, if I'm 
understanding things 
correctly, there should be very few differences with the actual target platform 
in regards to 
calling conventions, for example.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to