3 #define vector(elcount, type) \
4 __attribute__((vector_size((elcount)*sizeof(type)))) type
6 #define vidx(type, vec, idx) (*((type *) &(vec) + idx))
7 #define schar signed char
8 #define uchar unsigned char
12 #define chm1 -1,-1,-1,-1
14 int main (int argc
, char *argv
[]) {
15 vector(16, uchar
) vuchar
= { ch14
, ch14
, ch14
, ch14
};
16 vector(16, schar
) vchar0
= { ch1
, ch1
, ch1
, ch1
};
17 vector(16, schar
) vchar1
= { chm1
, chm1
, chm1
, chm1
};
19 vector(16, schar
) i1
, i2
, i3
;
20 vector(16, uchar
) u1
, u2
, u3
;
24 if (vidx(schar
, i1
, 0) != ((schar
)-1 << (schar
)1))
26 if (vidx(schar
, i1
, 1) != ((schar
)-1 << (schar
)1))
28 if (vidx(schar
, i1
, 2) != ((schar
)-1 << (schar
)1))
30 if (vidx(schar
, i1
, 3) != ((schar
)-1 << (schar
)1))
32 u1
= vuchar
<< vchar0
;
34 if (vidx(uchar
, u1
, 0) != ((uchar
)1 << (schar
)1))
36 if (vidx(uchar
, u1
, 1) != ((uchar
)2 << (schar
)1))
38 if (vidx(uchar
, u1
, 2) != ((uchar
)3 << (schar
)1))
40 if (vidx(uchar
, u1
, 3) != ((uchar
)4 << (schar
)1))
44 i2
= vchar1
>> vuchar
;
46 if (vidx(schar
, i2
, 0) != ((schar
)-1 >> (uchar
)1))
48 if (vidx(schar
, i2
, 1) != ((schar
)-1 >> (uchar
)2))
50 if (vidx(schar
, i2
, 2) != ((schar
)-1 >> (uchar
)3))
52 if (vidx(schar
, i2
, 3) != ((schar
)-1 >> (uchar
)4))