LDC 0.11.0 has been released!

bearophile bearophileHUGS at lycos.com
Tue Aug 6 08:24:40 PDT 2013


import core.simd;
float bar1(float4 data) pure nothrow {
     return data.array[0];
}
struct Foo {
     float4 data;
     alias data this;
}
float bar2(Foo data) pure nothrow {
     return data.array[0];
}
void main() {
     float4 f = [1.5, 2.5, 3.5, 4.5];
     bar1(f);
     bar2(Foo(f));
}


Produces this asm for the bar1 and bar2 functions:

__D4test4bar1FNaNbNhG4fZf:
     pushl   %eax
     vmovss  %xmm0, (%esp)
     flds    (%esp)
     popl    %eax
     ret

__D4test4bar2FNaNbS4test3FooZf:
     pushl   %ebp
     movl    %esp, %ebp
     andl    $-16, %esp
     subl    $16, %esp
     flds    8(%ebp)
     movl    %ebp, %esp
     popl    %ebp
     ret $16

Is that good enough?

Bye,
bearophile


More information about the digitalmars-d-ldc mailing list