What about the 256 bit types that are already present in AVX instruction
set?
I've written a several C++ based SIMD math libraries (for SSE2 up
through AVX), and PPC's VMX instruction sets that you can find on game
consoles.
The variable type naming is probably the most annoying thing to work out.
For HLSL they use float, float1, float2, float3, float4 and int, uint
and double versions, and this convention works out quite well until you
start having to deal with smaller integer types or FP16 half floats.
However on the CPU side of things there are signed and unsigned 8, 16,
32, 64 and 128 bit values. It gets even more complicated in that not
all the math operations or comparisons are supported on the non-32 bit
types. The hardware is really designed for you to pack and unpack the
smaller types to 32 bit do the work and pack the results back, and the
64 bit integer support is also a bit spotty (esp wrt multiply and divide).
On 1/13/2012 2:57 PM, bearophile 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