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.

Reply via email to