[fpc-devel] Successful implementation of inline support forpureassembler routines on x86
J. Gareth Moreton
gareth at moreton-family.com
Sun Mar 17 03:25:00 CET 2019
I haven't forgotten about "pure" functions - that's still definitely an
area of research for me. I got myself a little bit lost because I'm still
trying to work out a solid design plan (for major changes to FPC, I now
write a full specification, which are the PDF files I've attached to the
bug issues for my x86_64 overhaul and the inline assembly). Additionally,
I realised I would need a better means of analysing the intermediate node
tree to properly study how a procedure goes together and to get a good idea
as to what can be pure and what can't, hence the XML dump feature.
I hate to say it, but I've kind of blocked myself with a lot of things...
I can't make any more peephole optimizer improvements until the x86_64
overhaul is merged or outright rejected, and a bug and the "pure" feature
are blocked until the XML debug node dump feature is approved.
Gareth aka. Kit
On Sun 17/03/19 02:04 , "Ryan Joseph" ryan at thealchemistguild.com sent:
> On Mar 16, 2019, at 9:54 PM, Ben Grasset wrote:
> Inlining of pure assembler functions would actually be immediately,
specifically useful to me! I've been having a go at improving FPC scores on
"BenchmarksGames", and was so far successful with Binary Trees simple by
throwing a really good threading library at it, however, there are some
benchmarks that simply can't be fixed without either proper intrinsics or
user-specifiable inlinable ASM methods. I have a working re-implmentation
of NBody (that is just a direct rewrite of the Rust implementation) where
I've implemented __m128 and __m128d as records with static nostackframe
assembler "class functions", however it's just not fast enough to be
competitive due to the inability to inline any of the assembler methods.
> Something along these lines is absolutely sorely lacking in FPC
currently, don't let anyone tell you otherwise.
Sounds exciting progress for FPC. Btw what happened to the development of
“pure” function modifier that would make it possible to use functions
in compile time expressions? I was pretty excited about what could be done
with that also.
fpc-devel maillist - fpc-devel at lists.freepascal.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the fpc-devel