OSDN Git Service

* gcc/config/arm/arm.md (mov_notscc): Use MVN for false condition.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.c-torture / execute / scal-to-vec2.c
1 #define vector(elcount, type)  \
2 __attribute__((vector_size((elcount)*sizeof(type)))) type
3
4 #define vidx(type, vec, idx) (*((type *) &(vec) + idx))
5
6 #define operl(a, b, op) (a op b)
7 #define operr(a, b, op) (b op a)
8
9 #define check(type, count, vec0, vec1, num, op, lr) \
10 do {\
11     int __i; \
12     for (__i = 0; __i < count; __i++) {\
13         if (vidx (type, vec1, __i) != oper##lr (num, vidx (type, vec0, __i), op)) \
14             __builtin_abort (); \
15     }\
16 } while (0)
17
18 #define veccompare(type, count, v0, v1) \
19 do {\
20     int __i; \
21     for (__i = 0; __i < count; __i++) { \
22         if (vidx (type, v0, __i) != vidx (type, v1, __i)) \
23             __builtin_abort (); \
24     } \
25 } while (0)
26
27
28 long __attribute__ ((noinline)) vlng () {   return (long)42; }
29 int  __attribute__ ((noinline)) vint () {   return (int) 43; }
30 short __attribute__ ((noinline)) vsrt () {   return (short)42; }
31 char __attribute__ ((noinline)) vchr () {    return (char)42; }
32
33
34 int main (int argc, char *argv[]) {
35     vector(16, char) c0 = {argc, 1,2,3,4,5,6,7, argc, 1,2,3,4,5,6,7};
36     vector(16, char) c1;
37     
38     vector(8, short) s0 = {argc, 1,2,3,4,5,6,7};
39     vector(8, short) s1;
40
41     vector(4, int) i0 = {argc, 1, 2, 3};
42     vector(4, int) i1;
43
44     vector(2, long) l0 = {argc, 1};
45     vector(2, long) l1;
46
47     c1 = vchr() + c0; check (char, 16, c0, c1, vchr(), +, l);
48     
49     s1 = vsrt() + s0; check (short, 8, s0, s1, vsrt(), +, l);
50     s1 = vchr() + s0; check (short, 8, s0, s1, vchr(), +, l);
51
52     i1 = vint() * i0; check (int, 4, i0, i1, vint(), *, l);
53     i1 = vsrt() * i0; check (int, 4, i0, i1, vsrt(), *, l);
54     i1 = vchr() * i0; check (int, 4, i0, i1, vchr(), *, l);
55
56     l1 = vlng() * l0; check (long, 2, l0, l1, vlng(), *, l);
57     l1 = vint() * l0; check (long, 2, l0, l1, vint(), *, l);
58     l1 = vsrt() * l0; check (long, 2, l0, l1, vsrt(), *, l);
59     l1 = vchr() * l0; check (long, 2, l0, l1, vchr(), *, l);
60
61     return 0;
62 }