1 #define vector(elcount, type) \
2 __attribute__((vector_size((elcount)*sizeof(type)))) type
4 #define vidx(type, vec, idx) (*((type *) &(vec) + idx))
5 #define uint unsigned int
7 int main (int argc, char *argv[]) {
8 vector(4, uint) vuint = { 1, 2, 3, 4};
9 vector(4, int) vint0 = { 1, 1, 1, 1};
10 vector(4, int) vint1 = {-1, -1, -1, -1};
12 vector(4, int) i1, i2, i3;
13 vector(4, uint) u1, u2, u3;
17 if (vidx(int, i1, 0) != ((int)-1 << (int)1))
19 if (vidx(int, i1, 1) != ((int)-1 << (int)1))
21 if (vidx(int, i1, 2) != ((int)-1 << (int)1))
23 if (vidx(int, i1, 3) != ((int)-1 << (int)1))
28 if (vidx(int, u1, 0) != ((uint)1 << (int)1))
30 if (vidx(int, u1, 1) != ((uint)2 << (int)1))
32 if (vidx(int, u1, 2) != ((uint)3 << (int)1))
34 if (vidx(int, u1, 3) != ((uint)4 << (int)1))
40 if (vidx(int, i2, 0) != ((int)-1 >> (uint)1))
42 if (vidx(int, i2, 1) != ((int)-1 >> (uint)2))
44 if (vidx(int, i2, 2) != ((int)-1 >> (uint)3))
46 if (vidx(int, i2, 3) != ((int)-1 >> (uint)4))