On 9 October 2012 21:56, F i L <witte2...@gmail.com> wrote: > On Tuesday, 9 October 2012 at 19:18:35 UTC, F i L wrote: > >> Manu wrote: >> >>> std.simd already does have a mammoth mess of static if(arch & compiler). >>> The thing about std.simd is that it's designed to be portable, so it >>> doesn't make sense to expose the low-level sse intrinsics directly there. >>> >> >> Well, that's not really what I was suggesting. I was saying maybe >> eventually matching the agnostic gdc builtins in a separate module: >> >> // core.builtins >> >> import core.simd; >> >> version (GNU) >> import gcc.builtins; >> >> void madd(ref float4 r, float4 a, float4 b) >> { >> version (X86_OR_X64) >> { >> version (DigitalMars) >> { >> r = __simd(XMM.PMADDWD, a, b); >> } >> else version (GNU) >> { >> __builtin_ia32_fmaddpd(r, a, b) >> } >> } >> } >> >> then std.simd can just use a single function (madd) and forget about all >> the compiler-specific switches. This may be more work than it's worth and >> std.simd should just contain all the platform specific switches... idk, i'm >> just throwing out ideas. >> > > You know... now that I think about it, this is pretty much EXACTLY what > std.simd IS already... lol, forget all of that, please. >
Yes, I was gonna say... We're discussing providing convenient access to the arch intrinsics directly, which may be useful in many situations, although I think use of std.simd would be encouraged for the most part, for portability reasons. I'll take some time this weekend to do some experiments with GDC and LDC... actually, no I won't, I'm doing a 48 hour game jam (which I'll probably write in D too), but I'll do it soon! ;)