How do I write __simd(void16*, void16) ?

Benjamin Thaut via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Oct 8 12:04:23 PDT 2014


Am 08.10.2014 20:56, schrieb Etienne:
> I can't seem to find this function anywhere: __simd(void16*, void16)
>
> The mangling seems to go through to dmd's glue.lib
>
> This is for SSE2 operations:
>
> MOVDQU => void _mm_storeu_si128 ( __m128i *p, __m128i a)
> MOVDQU => __m128i _mm_loadu_si128 ( __m128i *p)
>
> Would I have to write this with ASM?

I strongly advise to not use core.simd at this point. It is in a 
horribly broken state and generates code that is far from efficient. If 
you use core.simd your code will be slower then if you use normal 
floating point math. Also afaik core.simd is currently only supported by 
dmd meaning that yuo have to rewrite the code in case you want to go to 
ldc or gdc. If you need simd with dmd, write inline assembly. If you 
need simd with the other two compilers, use the gcc intrinsics, they 
work on both compilers.

Kind Regards
Benjamin Thaut


More information about the Digitalmars-d-learn mailing list