Denis Koroskin wrote:
On Thu, 19 Feb 2009 22:25:04 +0300, Mattias Holm <[email protected]> wrote:

Since (SIMD) vectors are so common and every reasonabe system support them in one way or the other (and scalar emulation of this is rather simple), why not have support for this in D directly?

Yes, the array operations are nice (and one of the main reasons for why I like D :) ), but have the problem that an array of floats must be aligned on float boundaries and not vector boundaries. In my mind vectors are a primitive data type that should be exposed by the programming language.

Something OpenCL-like:

    float4 vec;
    vec.xyzw = {1.0,1.0, 1.0, 1.0}; // assignment
    vec.xyzw = vec.wyxz; // permutation
    vec[i] = 1.0; // indexing

And then we can easily immagine some extra nice features to have with respect to operators:

vec ^ vec2; // 3d cross product for float vectors, for int vectors xor

Has this been discussed before?

/ Mattias


I don't see any reason why float4 can't be made a library type.

Yah, I was thinking the same:

struct float4
{
    __align(16) float[4] data; // right syntax and value?
    alias data this;
}

This looks like something that should go into std.matrix pronto. It even has value semantics even though fixed arrays don't :o/.


Andrei

Reply via email to