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))