start on SIMD documentation

Timon Gehr timon.gehr at gmx.ch
Fri Jan 13 14:52:49 PST 2012


On 01/13/2012 11:36 PM, Andrei Alexandrescu wrote:
> On 1/13/12 3:08 PM, Manu wrote:
>> On 13 January 2012 22:57, bearophile <bearophileHUGS at lycos.com
>> <mailto:bearophileHUGS at lycos.com>> wrote:
>>
>> Walter:
>>
>> > What's our vector, Victor?
>> > http://www.youtube.com/watch?v=fVq4_HhBK8Y
>>
>> Thank you Walter :-)
>>
>>
>> > If int4 is out, I'd prefer something like vint4. Something short.
>>
>> Current names:
>>
>> void16
>> double2
>> float4
>> byte16
>> ubyte16
>> short8
>> ushort8
>> int4
>> uint4
>> long2
>>
>> Your suggestion:
>>
>> vvoid16
>> vdouble2
>> vfloat4
>> vbyte16
>> vubyte16
>> vshort8
>> vushort8
>> vint4
>> vuint4
>> vlong2
>>
>>
>> My suggestion:
>>
>> void16v
>> double2v
>> float4v
>> byte16v
>> ubyte16v
>> short8v
>> ushort8v
>> int4v
>> uint4v
>> long2v
>>
>> Bye,
>> bearophile
>>
>>
>> I think I'd vote for leaving it as it is, swayed by the fact that the
>> more ambiguous types are super-rarely used. float4/int4 has a nice
>> familiarity with HLSL/Cg.
>
> All names should have a __ prepended, and then the library defines names
> for them such as vec!(int, 4) that obey module lookup and all. Dumping a
> wheelbarrow of confusable new keywords doesn't sound right at all.
>
> Andrei

All of those are library types defined in core.simd.

For example, float4 is declared as

alias Vector!(float[4]) float4

And Vector simply hides what is built-in.

template Vector(T){
     alias __vector(T) Vector;
}

I think this is a very clean design.





More information about the Digitalmars-d mailing list