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

Reply via email to