A new calling convention in VS2013

Benjamin Thaut code at benjamin-thaut.de
Sun Jul 14 04:42:07 PDT 2013


Am 13.07.2013 12:35, schrieb bearophile:
> The resulting X86 asm:
>
> __D4test12addParticlesFNaNbxS4test8ParticlexS4test8ParticleZS4test8Particle:
>
>      pushl    %ebp
>      movl    %esp, %ebp
>      andl    $-16, %esp
>      subl    $16, %esp
>      movaps    40(%ebp), %xmm0
>      movaps    56(%ebp), %xmm1
>      addps    8(%ebp), %xmm0
>      addps    24(%ebp), %xmm1
>      movups    %xmm1, 16(%eax)
>      movups    %xmm0, (%eax)

I think it would be more important if dmd would actually use the XMM 
registers correctly for computations. As you can see from the 
disassembly dmd generates code that always adds/moves from/to memory and 
does not stay within the registers at all.

http://d.puremagic.com/issues/show_bug.cgi?id=10226

Until dmd uses the XMM registers correctly it doesn't make much sense to 
add a special calling convetion for this purpose.

Kind Regards
Benjamin Thaut


More information about the Digitalmars-d mailing list