GDC review process.
Don Clugston
dac at nospam.com
Wed Jun 20 03:59:10 PDT 2012
On 20/06/12 00:55, Manu wrote:
> On 20 June 2012 01:07, Walter Bright <newshound2 at digitalmars.com
> <mailto:newshound2 at digitalmars.com>> wrote:
>
> On 6/19/2012 1:58 PM, Manu wrote:
>
> I find a thorough suite of architecture intrinsics are usually
> the fastest and
> cleanest way to the best possible code, although 'naked' may be
> handy in this
> circumstance too...
>
>
> Do a grep for "naked" across the druntime library sources. For
> example, its use in druntime/src/rt/alloca.d, where it is very much
> needed, as alloca() is one of those "magic" functions.
>
>
> I never argued against naked... I agree it's mandatory.
>
>
> Do a grep for "asm" across the druntime library sources. Can you
> justify all of that with some other scheme?
>
>
> I think almost all the blocks I just browsed through could be easily
> written with nothing more than the register alias feature I suggested,
> and perhaps a couple of opcode intrinsics.
> And as a bonus, they would also be readable. I can imagine cases where
> the optimiser would have more freedom too.
>
>
> Thinking more about the implications of removing the inline asm,
> what would
> REALLY roxors, would be a keyword to insist a variable is
> represented by a
> register, and by extension, to associate it with a specific
> register:
>
>
> This was a failure in C.
>
>
> Really? This is the missing link between mandatory asm blocks, and being
> able to do it in high level code with intrinsics.
> The 'register' keyword was similarly fail as 'inline'.. __forceinline
> was not fail, it is actually mandatory. I'd argue that __forceregister
> would be similarly useful in C aswell, but the real power would come
> from being able to specify the particular register to alias.
>
> This would almost entirely eliminate the usefulness of an inline
> assembler.
> Better yet, this could use the 'new' attribute syntax, which
> most agree will
> support arguments:
> @register(rsp) int x;
>
>
> Some C compilers did have such pseudo-register abilities. It was a
> failure in practice.
>
>
> Really? I've never seen that. What about it was fail?
>
> I really don't understand preferring all these rather convoluted
> enhancements to avoid something simple and straightforward like the
> inline assembler. The use of IA in the D runtime library, for
> example, has been quite successful.
>
>
> I agree, IA is useful and has been successful, but it has drawbacks too.
> * IA ruins optimisation around the IA block
> * IA doesn't inline well. intrinsics allow much greater opportunity
> for efficient integration into the calling context
> * most IA functions are small, and prime candidates for inlining (see
> points 1 and 2)
You and I seem to be from different planets. I have almost never written
as asm function which was suitable for inlining.
Take a look at std.internal.math.biguintX86.d
I do not know how to write that code without inline asm.
More information about the Digitalmars-d
mailing list