On 07/03/2011 19:45, Emil Madsen wrote:
On 7 March 2011 20:37, Simen kjaeraas <[email protected]
<mailto:[email protected]>> wrote:
Martin Kinkelin <[email protected] <mailto:[email protected]>> wrote:
Thanks,
movups XMM0, [EAX];
works. The SSE version takes more than 160% of the run-time
compared to the naive
version though. ;)
Yup. Functions using inline assembly are never inlined, so that's rarely
a good reason to use it.
--
Simen
Is this just a fact of the current state of dmd, or is it by design? -
and if thats the case, why?
--
// Yours sincerely
// Emil 'Skeen' Madsen
It's by design. I've seen it explicitly stated somewhere (I forget) that
the compiler won't optimise across asm blocks and in-lining is just a
case of optimisation.
As to way, my guess is because of the way a compiler is designed and
implemented.
Each stage of the compiler processes it's input, converts it to a lower
level representation and then hands it off to the next stage.
Optimising across asm blocks would require reversing that process;
I think it's doable but it's highly non trivial and then you have to
implement that across every supported target.
Better to spend the time improving the higher level code generation
stages so people don't have to resort to ASM at all.
I guess in-lining could be separated out from the optimisation passes;
but don't hold your breath. DMD is a hodge podge of mashed together
functionality, just re-factoring out in-lining would be weeks of work.
--
My enormous talent is exceeded only by my outrageous laziness.
http://www.ssTk.co.uk