Add malloc predictor (PR middle-end/83023).
[official-gcc.git] / gcc / testsuite / gcc.dg / fixed-point / allop.c
blobeb36c097c231e131a3ced4cf3ffcb2662feccafa
1 /* { dg-do compile } */
2 /* { dg-options "-std=gnu99" } */
4 /* N1169 6.5.7 - Bitwise shift operands.
5 C99 6.5.3 Unary operators.
6 C99 6.5.5 Multiplicative operators.
7 C99 6.5.6 Additive operators.
8 C99 6.5.7 Bitwise shift operators.
9 C99 6.5.8 Relational operators.
10 C99 6.5.9 Equality operators.
11 C99 6.5.16 Assignment operators.
13 Check if all operations are ok. */
15 void true();
16 void false();
18 #define ALLOP(TYPE,NAME) \
19 TYPE test1 ## NAME (TYPE a) { return +a; } \
20 TYPE test2 ## NAME (TYPE a) { return -a; } \
21 int test3 ## NAME (TYPE a) { return !a; } \
22 TYPE test4 ## NAME (TYPE a, TYPE b) { return a + b; } \
23 TYPE test5 ## NAME (TYPE a, TYPE b) { return a - b; } \
24 TYPE test6 ## NAME (TYPE a, TYPE b) { return a * b; } \
25 TYPE test7 ## NAME (TYPE a, TYPE b) { return a / b; } \
26 TYPE test8 ## NAME (TYPE a, TYPE b) { a += b; return a; } \
27 TYPE test9 ## NAME (TYPE a, TYPE b) { a -= b; return a; } \
28 TYPE test10 ## NAME (TYPE a, TYPE b) { a *= b; return a; } \
29 TYPE test11 ## NAME (TYPE a, TYPE b) { a /= b; return a; } \
30 TYPE test12 ## NAME (TYPE a, int b) { return a << b; } \
31 TYPE test13 ## NAME (TYPE a, int b) { return a >> b; } \
32 TYPE test14 ## NAME (TYPE a, int b) { a <<= b; return a; } \
33 TYPE test15 ## NAME (TYPE a, int b) { a >>= b; return a; } \
34 int test16 ## NAME (TYPE a, TYPE b) { return a == b; } \
35 int test17 ## NAME (TYPE a, TYPE b) { return a != b; } \
36 int test18 ## NAME (TYPE a, TYPE b) { return a < b; } \
37 int test19 ## NAME (TYPE a, TYPE b) { return a <= b; } \
38 int test20 ## NAME (TYPE a, TYPE b) { return a >= b; } \
39 int test21 ## NAME (TYPE a, TYPE b) { return a > b; } \
40 void test22 ## NAME (TYPE a, TYPE b) { if(a == b)true(); else false(); } \
41 void test23 ## NAME (TYPE a, TYPE b) { if(a != b)true(); else false(); } \
42 void test24 ## NAME (TYPE a, TYPE b) { if(a < b)true(); else false(); } \
43 void test25 ## NAME (TYPE a, TYPE b) { if(a <= b)true(); else false(); } \
44 void test26 ## NAME (TYPE a, TYPE b) { if(a >= b)true(); else false(); } \
45 void test27 ## NAME (TYPE a, TYPE b) { if(a > b)true(); else false(); } \
46 TYPE test28 ## NAME (TYPE a) { return ++a; } \
47 TYPE test29 ## NAME (TYPE a) { return --a; } \
48 TYPE test30 ## NAME (TYPE *a) { return ++(*a); } \
49 TYPE test31 ## NAME (TYPE *a) { return (*a)++; } \
50 TYPE test32 ## NAME (TYPE *a) { return --(*a); } \
51 TYPE test33 ## NAME (TYPE *a) { return (*a)--; }
53 ALLOP(short _Fract, sf);
54 ALLOP(_Fract, f);
55 ALLOP(long _Fract, lf);
56 ALLOP(long long _Fract, llf);
57 ALLOP(short _Accum, sa);
58 ALLOP(_Accum, a);
59 ALLOP(long _Accum, la);
60 ALLOP(long long _Accum, lla);
62 ALLOP(unsigned short _Fract, usf);
63 ALLOP(unsigned _Fract, uf);
64 ALLOP(unsigned long _Fract, ulf);
65 ALLOP(unsigned long long _Fract, ullf);
66 ALLOP(unsigned short _Accum, usa);
67 ALLOP(unsigned _Accum, ua);
68 ALLOP(unsigned long _Accum, ula);
69 ALLOP(unsigned long long _Accum, ulla);
71 ALLOP(_Sat short _Fract, Ssf);
72 ALLOP(_Sat _Fract, Sf);
73 ALLOP(_Sat long _Fract, Slf);
74 ALLOP(_Sat long long _Fract, Sllf);
75 ALLOP(_Sat short _Accum, Ssa);
76 ALLOP(_Sat _Accum, Sa);
77 ALLOP(_Sat long _Accum, Sla);
78 ALLOP(_Sat long long _Accum, Slla);
80 ALLOP(_Sat unsigned short _Fract, Susf);
81 ALLOP(_Sat unsigned _Fract, Suf);
82 ALLOP(_Sat unsigned long _Fract, Sulf);
83 ALLOP(_Sat unsigned long long _Fract, Sullf);
84 ALLOP(_Sat unsigned short _Accum, Susa);
85 ALLOP(_Sat unsigned _Accum, Sua);
86 ALLOP(_Sat unsigned long _Accum, Sula);
87 ALLOP(_Sat unsigned long long _Accum, Sulla);