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

Reply via email to