3 #define vector(elcount, type) \
4 __attribute__((vector_size((elcount)*sizeof(type)))) type
6 #define vidx(type, vec, idx) (*((type *) &(vec) + idx))
7 #define uchar unsigned char
11 #define chm1 -1,-1,-1,-1
13 int main (int argc
, char *argv
[]) {
14 vector(16, uchar
) vuchar
= { ch14
, ch14
, ch14
, ch14
};
15 vector(16, char) vchar0
= { ch1
, ch1
, ch1
, ch1
};
16 vector(16, char) vchar1
= { chm1
, chm1
, chm1
, chm1
};
18 vector(16, char) i1
, i2
, i3
;
19 vector(16, uchar
) u1
, u2
, u3
;
23 if (vidx(char, i1
, 0) != ((char)-1 << (char)1))
25 if (vidx(char, i1
, 1) != ((char)-1 << (char)1))
27 if (vidx(char, i1
, 2) != ((char)-1 << (char)1))
29 if (vidx(char, i1
, 3) != ((char)-1 << (char)1))
31 u1
= vuchar
<< vchar0
;
33 if (vidx(char, u1
, 0) != ((uchar
)1 << (char)1))
35 if (vidx(char, u1
, 1) != ((uchar
)2 << (char)1))
37 if (vidx(char, u1
, 2) != ((uchar
)3 << (char)1))
39 if (vidx(char, u1
, 3) != ((uchar
)4 << (char)1))
43 i2
= vchar1
>> vuchar
;
45 if (vidx(char, i2
, 0) != ((char)-1 >> (uchar
)1))
47 if (vidx(char, i2
, 1) != ((char)-1 >> (uchar
)2))
49 if (vidx(char, i2
, 2) != ((char)-1 >> (uchar
)3))
51 if (vidx(char, i2
, 3) != ((char)-1 >> (uchar
)4))