Converting 512 bit vectors to 128 bit vectors possible ?

Converting 512 bit vectors to 128 bit vectors possible ?

Hello,

I work on 128 bits vectors (composed of two doubles). I wish to keep that vector format of 128 bits while porting my code on MIC. Since there is no support for SSE nor AVX on MIC, is there any intrinsic to cast these 128 bits vectors to 512 bits vectors ? I couldn't find one.

Also, gcc vector extensions seem to work on MIC even for 128 vectors.
Here's a code example that seems to work on MIC :
typedef double v2d __attribute__ (( vector_size(8*2) ));
typedef union { v2d i; double v[2]; } vec_v2d;
v2d a = {1,1};
v2d b = {4,5};
v2d c = a + b;
vec_v2d d;
d.i = c;
printf("%lf,%lf\n",d.v[0],d.v[1]);

gives as output :
5,6

1) No instructions casting from 128 bits to 512 bits exist on MIC?
2) Are gcc vector extensions vectorized on MIC? Even for vector sizes smaller than 512 bits?

Thank you,

1 post / 0 new
For more complete information about compiler optimizations, see our Optimization Notice.