annotate gcc/testsuite/gcc.dg/builtins-1.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* Copyright (C) 2002, 2003 Free Software Foundation.
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 Verify that all the __builtin_ math functions are recognized
kono
parents:
diff changeset
4 by the compiler.
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 Written by Roger Sayle, 11th July 2002. */
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 /* { dg-do compile } */
kono
parents:
diff changeset
9 /* { dg-options "" } */
kono
parents:
diff changeset
10 /* { dg-final { scan-assembler-not "__builtin_" } } */
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 /* These helper macros ensure we also check the float and long double
kono
parents:
diff changeset
13 cases. */
kono
parents:
diff changeset
14
kono
parents:
diff changeset
15 /* Test FP functions taking void. */
kono
parents:
diff changeset
16 #define FPTEST0(FN) \
kono
parents:
diff changeset
17 double test_##FN(void) { return __builtin_##FN(); } \
kono
parents:
diff changeset
18 float test_##FN##f(void) { return __builtin_##FN##f(); } \
kono
parents:
diff changeset
19 long double test_##FN##l(void) { return __builtin_##FN##l(); }
kono
parents:
diff changeset
20
kono
parents:
diff changeset
21 /* Test FP functions taking one FP argument. */
kono
parents:
diff changeset
22 #define FPTEST1(FN) \
kono
parents:
diff changeset
23 double test_##FN(double x) { return __builtin_##FN(x); } \
kono
parents:
diff changeset
24 float test_##FN##f(float x) { return __builtin_##FN##f(x); } \
kono
parents:
diff changeset
25 long double test_##FN##l(long double x) { return __builtin_##FN##l(x); }
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 /* Test FP functions taking one argument of a supplied type. */
kono
parents:
diff changeset
28 #define FPTEST1ARG(FN, TYPE) \
kono
parents:
diff changeset
29 double test_##FN(TYPE x) { return __builtin_##FN(x); } \
kono
parents:
diff changeset
30 float test_##FN##f(TYPE x) { return __builtin_##FN##f(x); } \
kono
parents:
diff changeset
31 long double test_##FN##l(TYPE x) { return __builtin_##FN##l(x); }
kono
parents:
diff changeset
32
kono
parents:
diff changeset
33 /* Test FP functions taking two arguments, the first argument is of a
kono
parents:
diff changeset
34 supplied type. */
kono
parents:
diff changeset
35 #define FPTEST2ARG1(FN, TYPE) \
kono
parents:
diff changeset
36 double test_##FN(TYPE x, double y) { return __builtin_##FN(x, y); } \
kono
parents:
diff changeset
37 float test_##FN##f(TYPE x, float y) { return __builtin_##FN##f(x, y); } \
kono
parents:
diff changeset
38 long double test_##FN##l(TYPE x, long double y) { return __builtin_##FN##l(x, y); }
kono
parents:
diff changeset
39
kono
parents:
diff changeset
40 /* Test FP functions taking two arguments, the second argument is of a
kono
parents:
diff changeset
41 supplied type. */
kono
parents:
diff changeset
42 #define FPTEST2ARG2(FN, TYPE) \
kono
parents:
diff changeset
43 double test_##FN(double x, TYPE y) { return __builtin_##FN(x, y); } \
kono
parents:
diff changeset
44 float test_##FN##f(float x, TYPE y) { return __builtin_##FN##f(x, y); } \
kono
parents:
diff changeset
45 long double test_##FN##l(long double x, TYPE y) { return __builtin_##FN##l(x, y); }
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 /* Test FP functions taking two arguments, the second argument is of a
kono
parents:
diff changeset
48 supplied type. The function is named reentrant style, meaning "_r"
kono
parents:
diff changeset
49 appears after the possible f/l suffix. */
kono
parents:
diff changeset
50 #define FPTEST2ARG2_REENT(FN, TYPE) \
kono
parents:
diff changeset
51 double test_##FN##_r(double x, TYPE y) { return __builtin_##FN##_r(x, y); } \
kono
parents:
diff changeset
52 float test_##FN##f_r(float x, TYPE y) { return __builtin_##FN##f_r(x, y); } \
kono
parents:
diff changeset
53 long double test_##FN##l_r(long double x, TYPE y) { return __builtin_##FN##l_r(x, y); }
kono
parents:
diff changeset
54
kono
parents:
diff changeset
55 /* Test FP functions taking two arguments, the second argument is a
kono
parents:
diff changeset
56 FP pointer. */
kono
parents:
diff changeset
57 #define FPTEST2FPP2(FN) \
kono
parents:
diff changeset
58 double test_##FN(double x, double *y) { return __builtin_##FN(x, y); } \
kono
parents:
diff changeset
59 float test_##FN##f(float x, float *y) { return __builtin_##FN##f(x, y); } \
kono
parents:
diff changeset
60 long double test_##FN##l(long double x, long double *y) { return __builtin_##FN##l(x, y); }
kono
parents:
diff changeset
61
kono
parents:
diff changeset
62 /* Test FP functions taking one FP argument and a supplied return
kono
parents:
diff changeset
63 type. */
kono
parents:
diff changeset
64 #define FPTEST1RET(FN, TYPE) \
kono
parents:
diff changeset
65 TYPE test_##FN(double x) { return __builtin_##FN(x); } \
kono
parents:
diff changeset
66 TYPE test_##FN##f(float x) { return __builtin_##FN##f(x); } \
kono
parents:
diff changeset
67 TYPE test_##FN##l(long double x) { return __builtin_##FN##l(x); }
kono
parents:
diff changeset
68
kono
parents:
diff changeset
69 /* Test FP functions taking two FP arguments. */
kono
parents:
diff changeset
70 #define FPTEST2(FN) \
kono
parents:
diff changeset
71 double test_##FN(double x, double y) { return __builtin_##FN(x, y); } \
kono
parents:
diff changeset
72 float test_##FN##f(float x, float y) { return __builtin_##FN##f(x, y); } \
kono
parents:
diff changeset
73 long double test_##FN##l(long double x, long double y) { return __builtin_##FN##l(x, y); }
kono
parents:
diff changeset
74
kono
parents:
diff changeset
75 /* Test FP functions taking three FP arguments. */
kono
parents:
diff changeset
76 #define FPTEST3(FN) \
kono
parents:
diff changeset
77 double test_##FN(double x, double y, double z) { return __builtin_##FN(x, y, z); } \
kono
parents:
diff changeset
78 float test_##FN##f(float x, float y, float z) { return __builtin_##FN##f(x, y, z); } \
kono
parents:
diff changeset
79 long double test_##FN##l(long double x, long double y, long double z) { return __builtin_##FN##l(x, y, z); }
kono
parents:
diff changeset
80
kono
parents:
diff changeset
81 /* Test FP functions taking three arguments, two FP and the third is
kono
parents:
diff changeset
82 of a supplied type. */
kono
parents:
diff changeset
83 #define FPTEST3ARG3(FN, TYPE) \
kono
parents:
diff changeset
84 double test_##FN(double x, double y, TYPE z) { return __builtin_##FN(x, y, z); } \
kono
parents:
diff changeset
85 float test_##FN##f(float x, float y, TYPE z) { return __builtin_##FN##f(x, y, z); } \
kono
parents:
diff changeset
86 long double test_##FN##l(long double x, long double y, TYPE z) { return __builtin_##FN##l(x, y, z); }
kono
parents:
diff changeset
87
kono
parents:
diff changeset
88 /* Test FP functions taking three FP arguments. The second and third
kono
parents:
diff changeset
89 are FP pointers. The return type is void. */
kono
parents:
diff changeset
90 #define FPTEST3FPP23VOID(FN) \
kono
parents:
diff changeset
91 double test_##FN(double x, double *y, double *z) { __builtin_##FN(x, y, z); return *y * *z; } \
kono
parents:
diff changeset
92 float test_##FN##f(float x, float *y, float *z) { __builtin_##FN##f(x, y, z); return *y * *z; } \
kono
parents:
diff changeset
93 long double test_##FN##l(long double x, long double *y, long double *z) { __builtin_##FN##l(x, y, z); return *y * *z; }
kono
parents:
diff changeset
94
kono
parents:
diff changeset
95 /* Test Complex functions taking one Complex argument. */
kono
parents:
diff changeset
96 #define CPTEST1(FN) \
kono
parents:
diff changeset
97 _Complex double test_##FN(_Complex double x) { return __builtin_##FN(x); } \
kono
parents:
diff changeset
98 _Complex float test_##FN##f(_Complex float x) { return __builtin_##FN##f(x); } \
kono
parents:
diff changeset
99 _Complex long double test_##FN##l(_Complex long double x) { return __builtin_##FN##l(x); }
kono
parents:
diff changeset
100
kono
parents:
diff changeset
101 /* Test Complex functions taking one Complex argument and returning an FP type. */
kono
parents:
diff changeset
102 #define CPTEST1RETFP(FN) \
kono
parents:
diff changeset
103 double test_##FN(_Complex double x) { return __builtin_##FN(x); } \
kono
parents:
diff changeset
104 float test_##FN##f(_Complex float x) { return __builtin_##FN##f(x); } \
kono
parents:
diff changeset
105 long double test_##FN##l(_Complex long double x) { return __builtin_##FN##l(x); }
kono
parents:
diff changeset
106
kono
parents:
diff changeset
107 /* Test Complex functions taking two Complex arguments. */
kono
parents:
diff changeset
108 #define CPTEST2(FN) \
kono
parents:
diff changeset
109 _Complex double test_##FN(_Complex double x, _Complex double y) { return __builtin_##FN(x,y); } \
kono
parents:
diff changeset
110 _Complex float test_##FN##f(_Complex float x, _Complex float y) { return __builtin_##FN##f(x,y); } \
kono
parents:
diff changeset
111 _Complex long double test_##FN##l(_Complex long double x, _Complex long double y) { return __builtin_##FN##l(x,y); }
kono
parents:
diff changeset
112
kono
parents:
diff changeset
113
kono
parents:
diff changeset
114 /* Keep this list sorted alphabetically by function name. */
kono
parents:
diff changeset
115 FPTEST1 (acos)
kono
parents:
diff changeset
116 FPTEST1 (acosh)
kono
parents:
diff changeset
117 FPTEST1 (asin)
kono
parents:
diff changeset
118 FPTEST1 (asinh)
kono
parents:
diff changeset
119 FPTEST1 (atan)
kono
parents:
diff changeset
120 FPTEST2 (atan2)
kono
parents:
diff changeset
121 FPTEST1 (atanh)
kono
parents:
diff changeset
122 FPTEST1 (cbrt)
kono
parents:
diff changeset
123 FPTEST1 (ceil)
kono
parents:
diff changeset
124 FPTEST2 (copysign)
kono
parents:
diff changeset
125 FPTEST1 (cos)
kono
parents:
diff changeset
126 FPTEST1 (cosh)
kono
parents:
diff changeset
127 FPTEST2 (drem)
kono
parents:
diff changeset
128 FPTEST1 (erf)
kono
parents:
diff changeset
129 FPTEST1 (erfc)
kono
parents:
diff changeset
130 FPTEST1 (exp)
kono
parents:
diff changeset
131 FPTEST1 (exp10)
kono
parents:
diff changeset
132 FPTEST1 (exp2)
kono
parents:
diff changeset
133 FPTEST1 (expm1)
kono
parents:
diff changeset
134 FPTEST1 (fabs)
kono
parents:
diff changeset
135 FPTEST2 (fdim)
kono
parents:
diff changeset
136 FPTEST1 (floor)
kono
parents:
diff changeset
137 FPTEST3 (fma)
kono
parents:
diff changeset
138 FPTEST2 (fmax)
kono
parents:
diff changeset
139 FPTEST2 (fmin)
kono
parents:
diff changeset
140 FPTEST2 (fmod)
kono
parents:
diff changeset
141 FPTEST2ARG2 (frexp, int *)
kono
parents:
diff changeset
142 FPTEST1 (gamma)
kono
parents:
diff changeset
143 FPTEST2ARG2_REENT (gamma, int *) /* gamma_r */
kono
parents:
diff changeset
144 FPTEST0 (huge_val)
kono
parents:
diff changeset
145 FPTEST2 (hypot)
kono
parents:
diff changeset
146 FPTEST1 (ilogb)
kono
parents:
diff changeset
147 FPTEST0 (inf) /* { dg-warning "target format does not support infinity" "inf" {target spu-*-*} } */
kono
parents:
diff changeset
148 FPTEST1 (j0)
kono
parents:
diff changeset
149 FPTEST1 (j1)
kono
parents:
diff changeset
150 FPTEST2ARG1 (jn, int)
kono
parents:
diff changeset
151 FPTEST2ARG2 (ldexp, int)
kono
parents:
diff changeset
152 FPTEST1 (lgamma)
kono
parents:
diff changeset
153 FPTEST2ARG2_REENT (lgamma, int *) /* lgamma_r */
kono
parents:
diff changeset
154 FPTEST1RET (llrint, long long)
kono
parents:
diff changeset
155 FPTEST1RET (llround, long long)
kono
parents:
diff changeset
156 FPTEST1 (log)
kono
parents:
diff changeset
157 FPTEST1 (log10)
kono
parents:
diff changeset
158 FPTEST1 (log1p)
kono
parents:
diff changeset
159 FPTEST1 (log2)
kono
parents:
diff changeset
160 FPTEST1 (logb)
kono
parents:
diff changeset
161 FPTEST1RET (lrint, long)
kono
parents:
diff changeset
162 FPTEST1RET (lround, long)
kono
parents:
diff changeset
163 FPTEST2FPP2 (modf)
kono
parents:
diff changeset
164 FPTEST1 (nearbyint)
kono
parents:
diff changeset
165 FPTEST2 (nextafter)
kono
parents:
diff changeset
166 FPTEST2 (nexttoward)
kono
parents:
diff changeset
167 FPTEST2 (pow)
kono
parents:
diff changeset
168 FPTEST1 (pow10)
kono
parents:
diff changeset
169 FPTEST2 (remainder)
kono
parents:
diff changeset
170 FPTEST3ARG3 (remquo, int *)
kono
parents:
diff changeset
171 FPTEST1 (rint)
kono
parents:
diff changeset
172 FPTEST1 (round)
kono
parents:
diff changeset
173 FPTEST2 (scalb)
kono
parents:
diff changeset
174 FPTEST2ARG2 (scalbln, int)
kono
parents:
diff changeset
175 FPTEST2ARG2 (scalbn, int)
kono
parents:
diff changeset
176 FPTEST1RET (signbit, int)
kono
parents:
diff changeset
177 FPTEST1 (significand)
kono
parents:
diff changeset
178 FPTEST1 (sin)
kono
parents:
diff changeset
179 FPTEST3FPP23VOID (sincos)
kono
parents:
diff changeset
180 FPTEST1 (sinh)
kono
parents:
diff changeset
181 FPTEST1 (sqrt)
kono
parents:
diff changeset
182 FPTEST1 (tan)
kono
parents:
diff changeset
183 FPTEST1 (tanh)
kono
parents:
diff changeset
184 FPTEST1 (tgamma)
kono
parents:
diff changeset
185 FPTEST1 (trunc)
kono
parents:
diff changeset
186 FPTEST1 (y0)
kono
parents:
diff changeset
187 FPTEST1 (y1)
kono
parents:
diff changeset
188 FPTEST2ARG1 (yn, int)
kono
parents:
diff changeset
189
kono
parents:
diff changeset
190 /* Keep this list sorted alphabetically by function name. */
kono
parents:
diff changeset
191 CPTEST1RETFP (cabs)
kono
parents:
diff changeset
192 CPTEST1 (cacos)
kono
parents:
diff changeset
193 CPTEST1 (cacosh)
kono
parents:
diff changeset
194 CPTEST1RETFP (carg)
kono
parents:
diff changeset
195 CPTEST1 (casin)
kono
parents:
diff changeset
196 CPTEST1 (casinh)
kono
parents:
diff changeset
197 CPTEST1 (catan)
kono
parents:
diff changeset
198 CPTEST1 (catanh)
kono
parents:
diff changeset
199 CPTEST1 (ccos)
kono
parents:
diff changeset
200 CPTEST1 (ccosh)
kono
parents:
diff changeset
201 CPTEST1 (cexp)
kono
parents:
diff changeset
202 CPTEST1RETFP (cimag)
kono
parents:
diff changeset
203 CPTEST1 (clog)
kono
parents:
diff changeset
204 CPTEST1 (conj)
kono
parents:
diff changeset
205 CPTEST2 (cpow)
kono
parents:
diff changeset
206 CPTEST1 (cproj)
kono
parents:
diff changeset
207 CPTEST1RETFP (creal)
kono
parents:
diff changeset
208 CPTEST1 (csin)
kono
parents:
diff changeset
209 CPTEST1 (csinh)
kono
parents:
diff changeset
210 CPTEST1 (csqrt)
kono
parents:
diff changeset
211 CPTEST1 (ctan)
kono
parents:
diff changeset
212 CPTEST1 (ctanh)