primitive vector types

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon Feb 23 05:24:59 PST 2009


Don wrote:
> Bill Baxter wrote:
>> Actually its 4^4 if you do it like OpenCL/GLSL/HLSL/Cg and allow
>> repeats like .xxyy.
> 
> Yes. Is the syntax sugar actually needed for all the permutations?
> Even so, it's still only 256, which is probably still OK. I don't think 
> a language change is required.

There's no need to ever enumerate all functions - they can be generated 
with templates and mixins rather easily.

> This scheme doesn't cover:
> * shufp  where the two sources are different
> * haddpd, haddps [SSE3] { double[2] a, b;  a[0]=a[0]+a[1]; 
> a[1]=b[0]+b[1]; }
> * non-temporal stores (although I think these are covered adequately by 
> array operations)

Well probably we can find ways to generate those too.

> and the byte/word operations:
> 
> * pack with saturation
> * movmsk
> * avg
> * multiply and add.
> 
> So it looks to me as though with the minimal language changes, we could 
> get almost complete SIMD support, with excellent syntax.
> 

That sounds great.


Andrei



More information about the Digitalmars-d mailing list