<p dir="ltr">On 2 Apr 2016 12:40 am, "Martin Nowak via Digitalmars-d" <<a href="mailto:digitalmars-d@puremagic.com">digitalmars-d@puremagic.com</a>> wrote:<br>
><br>
> On 03/31/2016 10:55 AM, ZombineDev wrote:<br>
> > [2]: <a href="https://github.com/D-Programming-Language/phobos/pull/2862">https://github.com/D-Programming-Language/phobos/pull/2862</a><br>
><br>
> Well apparently stores w/ dmd's weird core.simd interface don't work, or<br>
> I can't figure out (from the non-existent documentation) how to use it.<br>
><br>
> ---<br>
> import core.simd;<br>
><br>
> void test(float4* ptr, float4 val)<br>
> {<br>
>     __simd_sto(XMM.STOUPS, *ptr, val);<br>
>     __simd(XMM.STOUPS, *ptr, val);<br>
>     auto val1 = __simd_sto(XMM.STOUPS, *ptr, val);<br>
>     auto val2 = __simd(XMM.STOUPS, *ptr, val);<br>
> }<br>
> ---<br>
><br>
> LDC at least has some intrinsics once you find ldc.gccbuiltins_x86, but<br>
> for some reason comes with it's own broken ldc.simd.loadUnaligned<br>
> instead of providing intrinsics.<br>
><br>
> ---<br>
> import core.simd, ldc.simd;<br>
><br>
> float4 test(float* ptr)<br>
> {<br>
>     return loadUnaligned!float4(ptr);<br>
> }<br>
> ---<br>
><br>
> /home/dawg/dlang/ldc-0.17.1/bin/../import/ldc/simd.di(212): Error: can't<br>
> parse inline LLVM IR:<br>
>         %r = load <4 x float>* %p, align 1<br>
>                                ^<br>
> expected comma after load's type<br>
><br>
> So are 3 different untested and unused APIs really the current state of<br>
> SIMD?<br>
><br>
> -Martin<br>
></p>
<p dir="ltr">I would just let the compiler optimize / vectorize the operation, but then again that it is probably just me who thinks these things.</p>
<p dir="ltr"><a href="http://goo.gl/XdiKZX">http://goo.gl/XdiKZX</a></p>
<p dir="ltr">I'm not aware of any intrinsic to load unaligned data. Only to assume alignment.</p>
<p dir="ltr">Iain.<br>
</p>