2 #define vector(elcount, type) \
3 __attribute__((vector_size((elcount)*sizeof(type)))) type
5 #define vidx(type, vec, idx) (*((type *) &(vec) + idx))
6 #define uint unsigned int
8 int main (int argc
, char *argv
[]) {
9 vector(4, uint
) vuint
= { 1, 2, 3, 4};
10 vector(4, int) vint0
= { 1, 1, 1, 1};
11 vector(4, int) vint1
= {-1, -1, -1, -1};
13 vector(4, int) i1
, i2
, i3
;
14 vector(4, uint
) u1
, u2
, u3
;
18 if (vidx(int, i1
, 0) != ((int)-1 << (int)1))
20 if (vidx(int, i1
, 1) != ((int)-1 << (int)1))
22 if (vidx(int, i1
, 2) != ((int)-1 << (int)1))
24 if (vidx(int, i1
, 3) != ((int)-1 << (int)1))
29 if (vidx(int, u1
, 0) != ((uint
)1 << (int)1))
31 if (vidx(int, u1
, 1) != ((uint
)2 << (int)1))
33 if (vidx(int, u1
, 2) != ((uint
)3 << (int)1))
35 if (vidx(int, u1
, 3) != ((uint
)4 << (int)1))
41 if (vidx(int, i2
, 0) != ((int)-1 >> (uint
)1))
43 if (vidx(int, i2
, 1) != ((int)-1 >> (uint
)2))
45 if (vidx(int, i2
, 2) != ((int)-1 >> (uint
)3))
47 if (vidx(int, i2
, 3) != ((int)-1 >> (uint
)4))