primitive vector types
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Thu Feb 19 12:05:34 PST 2009
Denis Koroskin wrote:
> On Thu, 19 Feb 2009 22:25:04 +0300, Mattias Holm
> <hannibal.holm at gmail.com> 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
More information about the Digitalmars-d
mailing list