blob: 345b74fe97db29d74d509c4efc262fb5efe93dde [file] [log] [blame]
Benjamin Kramer6f0bf802012-08-22 18:16:02 +00001// RUN: %clang_cc1 -triple x86_64-apple-darwin12 -S -o - -emit-llvm %s | FileCheck %s -check-prefix=CHECK-NOERRNO
Benjamin Kramerc4aecf92012-08-22 18:50:01 +00002// RUN: %clang_cc1 -triple x86_64-linux-gnu -S -o - -emit-llvm -fmath-errno %s | FileCheck %s -check-prefix=CHECK-ERRNO
Hal Finkel746b5302013-09-06 23:23:32 +00003// RUN: %clang_cc1 -triple x86_64-apple-darwin12 -S -o - -emit-llvm -x c++ %s | FileCheck %s -check-prefix=CHECK-NOERRNO
4// RUN: %clang_cc1 -triple x86_64-linux-gnu -S -o - -emit-llvm -x c++ -fmath-errno %s | FileCheck %s -check-prefix=CHECK-ERRNO
Benjamin Kramer6f0bf802012-08-22 18:16:02 +00005
6// Prototypes.
Hal Finkel746b5302013-09-06 23:23:32 +00007#ifdef __cplusplus
8extern "C" {
9#endif
Benjamin Kramer6f0bf802012-08-22 18:16:02 +000010double atan2(double, double);
Benjamin Kramer6f0bf802012-08-22 18:16:02 +000011float atan2f(float, float);
Hal Finkel33be5e02013-09-18 06:19:40 +000012long double atan2l(long double, long double);
13int abs(int);
14long int labs(long int);
15long long int llabs(long long int);
Benjamin Kramer6f0bf802012-08-22 18:16:02 +000016double copysign(double, double);
Benjamin Kramer6f0bf802012-08-22 18:16:02 +000017float copysignf(float, float);
Hal Finkel33be5e02013-09-18 06:19:40 +000018long double copysignl(long double, long double);
Benjamin Kramer6f0bf802012-08-22 18:16:02 +000019double fabs(double);
Benjamin Kramer6f0bf802012-08-22 18:16:02 +000020float fabsf(float);
Hal Finkel33be5e02013-09-18 06:19:40 +000021long double fabsl(long double);
22double fmod(double, double);
23float fmodf(float, float);
24long double fmodl(long double, long double);
25double frexp(double, int *);
26float frexpf(float, int *);
27long double frexpl(long double, int *);
28double ldexp(double, int);
29float ldexpf(float, int);
30long double ldexpl(long double, int);
31double modf(double, double *);
32float modff(float, float *);
33long double modfl(long double, long double *);
34double nan(const char *);
35float nanf(const char *);
36long double nanl(const char *);
Benjamin Kramer6f0bf802012-08-22 18:16:02 +000037double pow(double, double);
Benjamin Kramer6f0bf802012-08-22 18:16:02 +000038float powf(float, float);
Hal Finkel33be5e02013-09-18 06:19:40 +000039long double powl(long double, long double);
40double acos(double);
41float acosf(float);
42long double acosl(long double);
43double acosh(double);
44float acoshf(float);
45long double acoshl(long double);
46double asin(double);
47float asinf(float);
48long double asinl(long double);
49double asinh(double);
50float asinhf(float);
51long double asinhl(long double);
52double atan(double);
53float atanf(float);
54long double atanl( long double);
55double atanh(double);
56float atanhf(float);
57long double atanhl(long double);
58double cbrt(double);
59float cbrtf(float);
60long double cbrtl(long double);
61double ceil(double);
62float ceilf(float);
63long double ceill(long double);
64double cos(double);
65float cosf(float);
66long double cosl(long double);
67double cosh(double);
68float coshf(float);
69long double coshl(long double);
70double erf(double);
71float erff(float);
72long double erfl(long double);
73double erfc(double);
74float erfcf(float);
75long double erfcl(long double);
76double exp(double);
77float expf(float);
78long double expl(long double);
79double exp2(double);
80float exp2f(float);
81long double exp2l(long double);
82double expm1(double);
83float expm1f(float);
84long double expm1l(long double);
85double fdim(double, double);
86float fdimf(float, float);
87long double fdiml(long double, long double);
88double floor(double);
89float floorf(float);
90long double floorl(long double);
91double fma(double, double, double);
92float fmaf(float, float, float);
93long double fmal(long double, long double, long double);
94double fmax(double, double);
95float fmaxf(float, float);
96long double fmaxl(long double, long double);
97double fmin(double, double);
98float fminf(float, float);
99long double fminl(long double, long double);
100double hypot(double, double);
101float hypotf(float, float);
102long double hypotl(long double, long double);
103int ilogb(double);
104int ilogbf(float);
105int ilogbl(long double);
106double lgamma(double);
107float lgammaf(float);
108long double lgammal(long double);
109long long int llrint(double);
110long long int llrintf(float);
111long long int llrintl(long double);
112long long int llround(double);
113long long int llroundf(float);
114long long int llroundl(long double);
115double log(double);
116float logf(float);
117long double logl(long double);
118double log10(double);
119float log10f(float);
120long double log10l(long double);
121double log1p(double);
122float log1pf(float);
123long double log1pl(long double);
124double log2(double);
125float log2f(float);
126long double log2l(long double);
127double logb(double);
128float logbf(float);
129long double logbl(long double);
130long int lrint(double);
131long int lrintf(float);
132long int lrintl(long double);
133long int lround(double);
134long int lroundf(float);
135long int lroundl(long double);
136double nearbyint(double);
137float nearbyintf(float);
138long double nearbyintl(long double);
139double nextafter(double, double);
140float nextafterf(float, float);
141long double nextafterl(long double, long double);
Benjamin Kramer53527172013-09-28 17:41:03 +0000142double nexttoward(double, long double);
143float nexttowardf(float, long double);
Hal Finkel33be5e02013-09-18 06:19:40 +0000144long double nexttowardl(long double, long double);
145double remainder(double, double);
146float remainderf(float, float);
147long double remainderl(long double, long double);
Benjamin Kramer6f0bf802012-08-22 18:16:02 +0000148double rint(double);
Benjamin Kramer6f0bf802012-08-22 18:16:02 +0000149float rintf(float);
Hal Finkel33be5e02013-09-18 06:19:40 +0000150long double rintl(long double);
Benjamin Kramer6f0bf802012-08-22 18:16:02 +0000151double round(double);
Benjamin Kramer6f0bf802012-08-22 18:16:02 +0000152float roundf(float);
Hal Finkel33be5e02013-09-18 06:19:40 +0000153long double roundl(long double);
154double scalbln(double, long int exp);
155float scalblnf(float, long int exp);
156long double scalblnl(long double, long int exp);
157double scalbn(double, int exp);
158float scalbnf(float, int exp);
159long double scalbnl(long double, int exp);
Benjamin Kramer6f0bf802012-08-22 18:16:02 +0000160double sin(double);
Benjamin Kramer6f0bf802012-08-22 18:16:02 +0000161float sinf(float);
Hal Finkel33be5e02013-09-18 06:19:40 +0000162long double sinl(long double);
163double sinh(double);
164float sinhf(float);
165long double sinhl(long double);
Benjamin Kramer6f0bf802012-08-22 18:16:02 +0000166double sqrt(double);
Benjamin Kramer6f0bf802012-08-22 18:16:02 +0000167float sqrtf(float);
Hal Finkel33be5e02013-09-18 06:19:40 +0000168long double sqrtl(long double);
Benjamin Kramer6f0bf802012-08-22 18:16:02 +0000169double tan(double);
Benjamin Kramer6f0bf802012-08-22 18:16:02 +0000170float tanf(float);
Hal Finkel33be5e02013-09-18 06:19:40 +0000171long double tanl(long double);
172double tanh(double);
173float tanhf(float);
174long double tanhl(long double);
175double tgamma(double);
176float tgammaf(float);
177long double tgammal(long double);
Benjamin Kramer6f0bf802012-08-22 18:16:02 +0000178double trunc(double);
Benjamin Kramer6f0bf802012-08-22 18:16:02 +0000179float truncf(float);
Hal Finkel33be5e02013-09-18 06:19:40 +0000180long double truncl(long double);
181double cabs(double _Complex);
182float cabsf(float _Complex);
183long double cabsl(long double _Complex);
184double _Complex cacos(double _Complex);
185float _Complex cacosf(float _Complex);
186long double _Complex cacosl(long double _Complex);
187double _Complex cacosh(double _Complex);
188float _Complex cacoshf(float _Complex);
189long double _Complex cacoshl(long double _Complex);
190double carg(double _Complex);
191float cargf(float _Complex);
192long double cargl(long double _Complex);
193double _Complex casin(double _Complex);
194float _Complex casinf(float _Complex);
195long double _Complex casinl(long double _Complex);
196double _Complex casinh(double _Complex);
197float _Complex casinhf(float _Complex);
198long double _Complex casinhl(long double _Complex);
199double _Complex catan(double _Complex);
200float _Complex catanf(float _Complex);
201long double _Complex catanl(long double _Complex);
202double _Complex catanh(double _Complex);
203float _Complex catanhf(float _Complex);
204long double _Complex catanhl(long double _Complex);
205double _Complex ccos(double _Complex);
206float _Complex ccosf(float _Complex);
207long double _Complex ccosl(long double _Complex);
208double _Complex ccosh(double _Complex);
209float _Complex ccoshf(float _Complex);
210long double _Complex ccoshl(long double _Complex);
211double _Complex cexp(double _Complex);
212float _Complex cexpf(float _Complex);
213long double _Complex cexpl(long double _Complex);
214double cimag(double _Complex);
215float cimagf(float _Complex);
216long double cimagl(long double _Complex);
217double _Complex conj(double _Complex);
218float _Complex conjf(float _Complex);
219long double _Complex conjl(long double _Complex);
220double _Complex clog(double _Complex);
221float _Complex clogf(float _Complex);
222long double _Complex clogl(long double _Complex);
223double _Complex cproj(double _Complex);
224float _Complex cprojf(float _Complex);
225long double _Complex cprojl(long double _Complex);
226double _Complex cpow(double _Complex, _Complex double);
227float _Complex cpowf(float _Complex, _Complex float);
228long double _Complex cpowl(long double _Complex, _Complex long double);
229double creal(double _Complex);
230float crealf(float _Complex);
231long double creall(long double _Complex);
232double _Complex csin(double _Complex);
233float _Complex csinf(float _Complex);
234long double _Complex csinl(long double _Complex);
235double _Complex csinh(double _Complex);
236float _Complex csinhf(float _Complex);
237long double _Complex csinhl(long double _Complex);
238double _Complex csqrt(double _Complex);
239float _Complex csqrtf(float _Complex);
240long double _Complex csqrtl(long double _Complex);
241double _Complex ctan(double _Complex);
242float _Complex ctanf(float _Complex);
243long double _Complex ctanl(long double _Complex);
244double _Complex ctanh(double _Complex);
245float _Complex ctanhf(float _Complex);
246long double _Complex ctanhl(long double _Complex);
Tim Northover87994452014-01-14 19:26:03 +0000247
248double __sinpi(double);
249float __sinpif(float);
250double __cospi(double);
251float __cospif(float);
252double __tanpi(double);
253float __tanpif(float);
254
255double __exp10(double);
256float __exp10f(float);
Hal Finkel746b5302013-09-06 23:23:32 +0000257#ifdef __cplusplus
258}
259#endif
Benjamin Kramer6f0bf802012-08-22 18:16:02 +0000260
261// Force emission of the declare statements.
Hal Finkel746b5302013-09-06 23:23:32 +0000262#define F(x) ((void*)x)
Hal Finkel33be5e02013-09-18 06:19:40 +0000263void *use[] = {
264 F(atan2), F(atan2f), F(atan2l), F(abs), F(labs),
265 F(llabs), F(copysign), F(copysignf), F(copysignl), F(fabs),
266 F(fabsf), F(fabsl), F(fmod), F(fmodf), F(fmodl),
267 F(frexp), F(frexpf), F(frexpl), F(ldexp), F(ldexpf),
268 F(ldexpl), F(modf), F(modff), F(modfl), F(nan),
269 F(nanf), F(nanl), F(pow), F(powf), F(powl),
270 F(acos), F(acosf), F(acosl), F(acosh), F(acoshf),
271 F(acoshl), F(asin), F(asinf), F(asinl), F(asinh),
272 F(asinhf), F(asinhl), F(atan), F(atanf), F(atanl),
273 F(atanh), F(atanhf), F(atanhl), F(cbrt), F(cbrtf),
274 F(cbrtl), F(ceil), F(ceilf), F(ceill), F(cos),
275 F(cosf), F(cosl), F(cosh), F(coshf), F(coshl),
276 F(erf), F(erff), F(erfl), F(erfc), F(erfcf),
277 F(erfcl), F(exp), F(expf), F(expl), F(exp2),
278 F(exp2f), F(exp2l), F(expm1), F(expm1f), F(expm1l),
279 F(fdim), F(fdimf), F(fdiml), F(floor), F(floorf),
280 F(floorl), F(fma), F(fmaf), F(fmal), F(fmax),
281 F(fmaxf), F(fmaxl), F(fmin), F(fminf), F(fminl),
282 F(hypot), F(hypotf), F(hypotl), F(ilogb), F(ilogbf),
283 F(ilogbl), F(lgamma), F(lgammaf), F(lgammal), F(llrint),
284 F(llrintf), F(llrintl), F(llround), F(llroundf), F(llroundl),
285 F(log), F(logf), F(logl), F(log10), F(log10f),
286 F(log10l), F(log1p), F(log1pf), F(log1pl), F(log2),
287 F(log2f), F(log2l), F(logb), F(logbf), F(logbl),
288 F(lrint), F(lrintf), F(lrintl), F(lround), F(lroundf),
289 F(lroundl), F(nearbyint), F(nearbyintf), F(nearbyintl), F(nextafter),
290 F(nextafterf), F(nextafterl), F(nexttoward), F(nexttowardf), F(nexttowardl),
291 F(remainder), F(remainderf), F(remainderl), F(rint), F(rintf),
292 F(rintl), F(round), F(roundf), F(roundl), F(scalbln),
293 F(scalblnf), F(scalblnl), F(scalbn), F(scalbnf), F(scalbnl),
294 F(sin), F(sinf), F(sinl), F(sinh), F(sinhf),
295 F(sinhl), F(sqrt), F(sqrtf), F(sqrtl), F(tan),
296 F(tanf), F(tanl), F(tanh), F(tanhf), F(tanhl),
297 F(tgamma), F(tgammaf), F(tgammal), F(trunc), F(truncf),
298 F(truncl), F(cabs), F(cabsf), F(cabsl), F(cacos),
299 F(cacosf), F(cacosl), F(cacosh), F(cacoshf), F(cacoshl),
300 F(carg), F(cargf), F(cargl), F(casin), F(casinf),
301 F(casinl), F(casinh), F(casinhf), F(casinhl), F(catan),
302 F(catanf), F(catanl), F(catanh), F(catanhf), F(catanhl),
303 F(ccos), F(ccosf), F(ccosl), F(ccosh), F(ccoshf),
304 F(ccoshl), F(cexp), F(cexpf), F(cexpl), F(cimag),
305 F(cimagf), F(cimagl), F(conj), F(conjf), F(conjl),
306 F(clog), F(clogf), F(clogl), F(cproj), F(cprojf),
307 F(cprojl), F(cpow), F(cpowf), F(cpowl), F(creal),
308 F(crealf), F(creall), F(csin), F(csinf), F(csinl),
309 F(csinh), F(csinhf), F(csinhl), F(csqrt), F(csqrtf),
310 F(csqrtl), F(ctan), F(ctanf), F(ctanl), F(ctanh),
Tim Northover87994452014-01-14 19:26:03 +0000311 F(ctanhf), F(ctanhl), F(__sinpi), F(__sinpif), F(__cospi),
312 F(__cospif), F(__tanpi), F(__tanpif), F(__exp10), F(__exp10f)
Hal Finkel33be5e02013-09-18 06:19:40 +0000313};
Benjamin Kramer6f0bf802012-08-22 18:16:02 +0000314
Hal Finkel33be5e02013-09-18 06:19:40 +0000315// CHECK-NOERRNO: declare double @atan2(double, double) [[NUW:#[0-9]+]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000316// CHECK-NOERRNO: declare float @atan2f(float, float) [[NUW]]
Hal Finkel33be5e02013-09-18 06:19:40 +0000317// CHECK-NOERRNO: declare x86_fp80 @atan2l(x86_fp80, x86_fp80) [[NUW]]
318// CHECK-NOERRNO: declare i32 @abs(i32) [[NUW]]
319// CHECK-NOERRNO: declare i64 @labs(i64) [[NUW]]
320// CHECK-NOERRNO: declare i64 @llabs(i64) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000321// CHECK-NOERRNO: declare double @copysign(double, double) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000322// CHECK-NOERRNO: declare float @copysignf(float, float) [[NUW]]
Hal Finkel33be5e02013-09-18 06:19:40 +0000323// CHECK-NOERRNO: declare x86_fp80 @copysignl(x86_fp80, x86_fp80) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000324// CHECK-NOERRNO: declare double @fabs(double) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000325// CHECK-NOERRNO: declare float @fabsf(float) [[NUW]]
Hal Finkel33be5e02013-09-18 06:19:40 +0000326// CHECK-NOERRNO: declare x86_fp80 @fabsl(x86_fp80) [[NUW]]
327// CHECK-NOERRNO: declare double @fmod(double, double) [[NUW]]
328// CHECK-NOERRNO: declare float @fmodf(float, float) [[NUW]]
329// CHECK-NOERRNO: declare x86_fp80 @fmodl(x86_fp80, x86_fp80) [[NUW]]
330// CHECK-NOERRNO: declare double @ldexp(double, i32) [[NUW]]
331// CHECK-NOERRNO: declare float @ldexpf(float, i32) [[NUW]]
332// CHECK-NOERRNO: declare x86_fp80 @ldexpl(x86_fp80, i32) [[NUW]]
333// CHECK-NOERRNO: declare double @nan(i8*) [[NUW]]
334// CHECK-NOERRNO: declare float @nanf(i8*) [[NUW]]
335// CHECK-NOERRNO: declare x86_fp80 @nanl(i8*) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000336// CHECK-NOERRNO: declare double @pow(double, double) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000337// CHECK-NOERRNO: declare float @powf(float, float) [[NUW]]
Hal Finkel33be5e02013-09-18 06:19:40 +0000338// CHECK-NOERRNO: declare x86_fp80 @powl(x86_fp80, x86_fp80) [[NUW]]
339// CHECK-NOERRNO: declare double @acos(double) [[NUW]]
340// CHECK-NOERRNO: declare float @acosf(float) [[NUW]]
341// CHECK-NOERRNO: declare x86_fp80 @acosl(x86_fp80) [[NUW]]
342// CHECK-NOERRNO: declare double @acosh(double) [[NUW]]
343// CHECK-NOERRNO: declare float @acoshf(float) [[NUW]]
344// CHECK-NOERRNO: declare x86_fp80 @acoshl(x86_fp80) [[NUW]]
345// CHECK-NOERRNO: declare double @asin(double) [[NUW]]
346// CHECK-NOERRNO: declare float @asinf(float) [[NUW]]
347// CHECK-NOERRNO: declare x86_fp80 @asinl(x86_fp80) [[NUW]]
348// CHECK-NOERRNO: declare double @asinh(double) [[NUW]]
349// CHECK-NOERRNO: declare float @asinhf(float) [[NUW]]
350// CHECK-NOERRNO: declare x86_fp80 @asinhl(x86_fp80) [[NUW]]
351// CHECK-NOERRNO: declare double @atan(double) [[NUW]]
352// CHECK-NOERRNO: declare float @atanf(float) [[NUW]]
353// CHECK-NOERRNO: declare x86_fp80 @atanl(x86_fp80) [[NUW]]
354// CHECK-NOERRNO: declare double @atanh(double) [[NUW]]
355// CHECK-NOERRNO: declare float @atanhf(float) [[NUW]]
356// CHECK-NOERRNO: declare x86_fp80 @atanhl(x86_fp80) [[NUW]]
357// CHECK-NOERRNO: declare double @cbrt(double) [[NUW]]
358// CHECK-NOERRNO: declare float @cbrtf(float) [[NUW]]
359// CHECK-NOERRNO: declare x86_fp80 @cbrtl(x86_fp80) [[NUW]]
360// CHECK-NOERRNO: declare double @ceil(double) [[NUW]]
361// CHECK-NOERRNO: declare float @ceilf(float) [[NUW]]
362// CHECK-NOERRNO: declare x86_fp80 @ceill(x86_fp80) [[NUW]]
363// CHECK-NOERRNO: declare double @cos(double) [[NUW]]
364// CHECK-NOERRNO: declare float @cosf(float) [[NUW]]
365// CHECK-NOERRNO: declare x86_fp80 @cosl(x86_fp80) [[NUW]]
366// CHECK-NOERRNO: declare double @cosh(double) [[NUW]]
367// CHECK-NOERRNO: declare float @coshf(float) [[NUW]]
368// CHECK-NOERRNO: declare x86_fp80 @coshl(x86_fp80) [[NUW]]
369// CHECK-NOERRNO: declare double @erf(double) [[NUW]]
370// CHECK-NOERRNO: declare float @erff(float) [[NUW]]
371// CHECK-NOERRNO: declare x86_fp80 @erfl(x86_fp80) [[NUW]]
372// CHECK-NOERRNO: declare double @erfc(double) [[NUW]]
373// CHECK-NOERRNO: declare float @erfcf(float) [[NUW]]
374// CHECK-NOERRNO: declare x86_fp80 @erfcl(x86_fp80) [[NUW]]
375// CHECK-NOERRNO: declare double @exp(double) [[NUW]]
376// CHECK-NOERRNO: declare float @expf(float) [[NUW]]
377// CHECK-NOERRNO: declare x86_fp80 @expl(x86_fp80) [[NUW]]
378// CHECK-NOERRNO: declare double @exp2(double) [[NUW]]
379// CHECK-NOERRNO: declare float @exp2f(float) [[NUW]]
380// CHECK-NOERRNO: declare x86_fp80 @exp2l(x86_fp80) [[NUW]]
381// CHECK-NOERRNO: declare double @expm1(double) [[NUW]]
382// CHECK-NOERRNO: declare float @expm1f(float) [[NUW]]
383// CHECK-NOERRNO: declare x86_fp80 @expm1l(x86_fp80) [[NUW]]
384// CHECK-NOERRNO: declare double @fdim(double, double) [[NUW]]
385// CHECK-NOERRNO: declare float @fdimf(float, float) [[NUW]]
386// CHECK-NOERRNO: declare x86_fp80 @fdiml(x86_fp80, x86_fp80) [[NUW]]
387// CHECK-NOERRNO: declare double @floor(double) [[NUW]]
388// CHECK-NOERRNO: declare float @floorf(float) [[NUW]]
389// CHECK-NOERRNO: declare x86_fp80 @floorl(x86_fp80) [[NUW]]
390// CHECK-NOERRNO: declare double @fma(double, double, double) [[NUW]]
391// CHECK-NOERRNO: declare float @fmaf(float, float, float) [[NUW]]
392// CHECK-NOERRNO: declare x86_fp80 @fmal(x86_fp80, x86_fp80, x86_fp80) [[NUW]]
393// CHECK-NOERRNO: declare double @fmax(double, double) [[NUW]]
394// CHECK-NOERRNO: declare float @fmaxf(float, float) [[NUW]]
395// CHECK-NOERRNO: declare x86_fp80 @fmaxl(x86_fp80, x86_fp80) [[NUW]]
396// CHECK-NOERRNO: declare double @fmin(double, double) [[NUW]]
397// CHECK-NOERRNO: declare float @fminf(float, float) [[NUW]]
398// CHECK-NOERRNO: declare x86_fp80 @fminl(x86_fp80, x86_fp80) [[NUW]]
399// CHECK-NOERRNO: declare double @hypot(double, double) [[NUW]]
400// CHECK-NOERRNO: declare float @hypotf(float, float) [[NUW]]
401// CHECK-NOERRNO: declare x86_fp80 @hypotl(x86_fp80, x86_fp80) [[NUW]]
402// CHECK-NOERRNO: declare i32 @ilogb(double) [[NUW]]
403// CHECK-NOERRNO: declare i32 @ilogbf(float) [[NUW]]
404// CHECK-NOERRNO: declare i32 @ilogbl(x86_fp80) [[NUW]]
405// CHECK-NOERRNO: declare double @lgamma(double) [[NUW]]
406// CHECK-NOERRNO: declare float @lgammaf(float) [[NUW]]
407// CHECK-NOERRNO: declare x86_fp80 @lgammal(x86_fp80) [[NUW]]
408// CHECK-NOERRNO: declare i64 @llrint(double) [[NUW]]
409// CHECK-NOERRNO: declare i64 @llrintf(float) [[NUW]]
410// CHECK-NOERRNO: declare i64 @llrintl(x86_fp80) [[NUW]]
411// CHECK-NOERRNO: declare i64 @llround(double) [[NUW]]
412// CHECK-NOERRNO: declare i64 @llroundf(float) [[NUW]]
413// CHECK-NOERRNO: declare i64 @llroundl(x86_fp80) [[NUW]]
414// CHECK-NOERRNO: declare double @log(double) [[NUW]]
415// CHECK-NOERRNO: declare float @logf(float) [[NUW]]
416// CHECK-NOERRNO: declare x86_fp80 @logl(x86_fp80) [[NUW]]
417// CHECK-NOERRNO: declare double @log10(double) [[NUW]]
418// CHECK-NOERRNO: declare float @log10f(float) [[NUW]]
419// CHECK-NOERRNO: declare x86_fp80 @log10l(x86_fp80) [[NUW]]
420// CHECK-NOERRNO: declare double @log1p(double) [[NUW]]
421// CHECK-NOERRNO: declare float @log1pf(float) [[NUW]]
422// CHECK-NOERRNO: declare x86_fp80 @log1pl(x86_fp80) [[NUW]]
423// CHECK-NOERRNO: declare double @log2(double) [[NUW]]
424// CHECK-NOERRNO: declare float @log2f(float) [[NUW]]
425// CHECK-NOERRNO: declare x86_fp80 @log2l(x86_fp80) [[NUW]]
426// CHECK-NOERRNO: declare double @logb(double) [[NUW]]
427// CHECK-NOERRNO: declare float @logbf(float) [[NUW]]
428// CHECK-NOERRNO: declare x86_fp80 @logbl(x86_fp80) [[NUW]]
429// CHECK-NOERRNO: declare i64 @lrint(double) [[NUW]]
430// CHECK-NOERRNO: declare i64 @lrintf(float) [[NUW]]
431// CHECK-NOERRNO: declare i64 @lrintl(x86_fp80) [[NUW]]
432// CHECK-NOERRNO: declare i64 @lround(double) [[NUW]]
433// CHECK-NOERRNO: declare i64 @lroundf(float) [[NUW]]
434// CHECK-NOERRNO: declare i64 @lroundl(x86_fp80) [[NUW]]
435// CHECK-NOERRNO: declare double @nearbyint(double) [[NUW]]
436// CHECK-NOERRNO: declare float @nearbyintf(float) [[NUW]]
437// CHECK-NOERRNO: declare x86_fp80 @nearbyintl(x86_fp80) [[NUW]]
438// CHECK-NOERRNO: declare double @nextafter(double, double) [[NUW]]
439// CHECK-NOERRNO: declare float @nextafterf(float, float) [[NUW]]
440// CHECK-NOERRNO: declare x86_fp80 @nextafterl(x86_fp80, x86_fp80) [[NUW]]
Benjamin Kramer53527172013-09-28 17:41:03 +0000441// CHECK-NOERRNO: declare double @nexttoward(double, x86_fp80) [[NUW]]
442// CHECK-NOERRNO: declare float @nexttowardf(float, x86_fp80) [[NUW]]
Hal Finkel33be5e02013-09-18 06:19:40 +0000443// CHECK-NOERRNO: declare x86_fp80 @nexttowardl(x86_fp80, x86_fp80) [[NUW]]
444// CHECK-NOERRNO: declare double @remainder(double, double) [[NUW]]
445// CHECK-NOERRNO: declare float @remainderf(float, float) [[NUW]]
446// CHECK-NOERRNO: declare x86_fp80 @remainderl(x86_fp80, x86_fp80) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000447// CHECK-NOERRNO: declare double @rint(double) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000448// CHECK-NOERRNO: declare float @rintf(float) [[NUW]]
Hal Finkel33be5e02013-09-18 06:19:40 +0000449// CHECK-NOERRNO: declare x86_fp80 @rintl(x86_fp80) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000450// CHECK-NOERRNO: declare double @round(double) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000451// CHECK-NOERRNO: declare float @roundf(float) [[NUW]]
Hal Finkel33be5e02013-09-18 06:19:40 +0000452// CHECK-NOERRNO: declare x86_fp80 @roundl(x86_fp80) [[NUW]]
453// CHECK-NOERRNO: declare double @scalbln(double, i64) [[NUW]]
454// CHECK-NOERRNO: declare float @scalblnf(float, i64) [[NUW]]
455// CHECK-NOERRNO: declare x86_fp80 @scalblnl(x86_fp80, i64) [[NUW]]
456// CHECK-NOERRNO: declare double @scalbn(double, i32) [[NUW]]
457// CHECK-NOERRNO: declare float @scalbnf(float, i32) [[NUW]]
458// CHECK-NOERRNO: declare x86_fp80 @scalbnl(x86_fp80, i32) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000459// CHECK-NOERRNO: declare double @sin(double) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000460// CHECK-NOERRNO: declare float @sinf(float) [[NUW]]
Hal Finkel33be5e02013-09-18 06:19:40 +0000461// CHECK-NOERRNO: declare x86_fp80 @sinl(x86_fp80) [[NUW]]
462// CHECK-NOERRNO: declare double @sinh(double) [[NUW]]
463// CHECK-NOERRNO: declare float @sinhf(float) [[NUW]]
464// CHECK-NOERRNO: declare x86_fp80 @sinhl(x86_fp80) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000465// CHECK-NOERRNO: declare double @sqrt(double) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000466// CHECK-NOERRNO: declare float @sqrtf(float) [[NUW]]
Hal Finkel33be5e02013-09-18 06:19:40 +0000467// CHECK-NOERRNO: declare x86_fp80 @sqrtl(x86_fp80) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000468// CHECK-NOERRNO: declare double @tan(double) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000469// CHECK-NOERRNO: declare float @tanf(float) [[NUW]]
Hal Finkel33be5e02013-09-18 06:19:40 +0000470// CHECK-NOERRNO: declare x86_fp80 @tanl(x86_fp80) [[NUW]]
471// CHECK-NOERRNO: declare double @tanh(double) [[NUW]]
472// CHECK-NOERRNO: declare float @tanhf(float) [[NUW]]
473// CHECK-NOERRNO: declare x86_fp80 @tanhl(x86_fp80) [[NUW]]
474// CHECK-NOERRNO: declare double @tgamma(double) [[NUW]]
475// CHECK-NOERRNO: declare float @tgammaf(float) [[NUW]]
476// CHECK-NOERRNO: declare x86_fp80 @tgammal(x86_fp80) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000477// CHECK-NOERRNO: declare double @trunc(double) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000478// CHECK-NOERRNO: declare float @truncf(float) [[NUW]]
Hal Finkel33be5e02013-09-18 06:19:40 +0000479// CHECK-NOERRNO: declare x86_fp80 @truncl(x86_fp80) [[NUW]]
480// CHECK-NOERRNO: declare double @cabs(double, double) [[NUW]]
481// CHECK-NOERRNO: declare float @cabsf(<2 x float>) [[NUW]]
482// CHECK-NOERRNO: declare { double, double } @cacos(double, double) [[NUW]]
483// CHECK-NOERRNO: declare <2 x float> @cacosf(<2 x float>) [[NUW]]
484// CHECK-NOERRNO: declare { double, double } @cacosh(double, double) [[NUW]]
485// CHECK-NOERRNO: declare <2 x float> @cacoshf(<2 x float>) [[NUW]]
486// CHECK-NOERRNO: declare double @carg(double, double) [[NUW]]
487// CHECK-NOERRNO: declare float @cargf(<2 x float>) [[NUW]]
488// CHECK-NOERRNO: declare { double, double } @casin(double, double) [[NUW]]
489// CHECK-NOERRNO: declare <2 x float> @casinf(<2 x float>) [[NUW]]
490// CHECK-NOERRNO: declare { double, double } @casinh(double, double) [[NUW]]
491// CHECK-NOERRNO: declare <2 x float> @casinhf(<2 x float>) [[NUW]]
492// CHECK-NOERRNO: declare { double, double } @catan(double, double) [[NUW]]
493// CHECK-NOERRNO: declare <2 x float> @catanf(<2 x float>) [[NUW]]
494// CHECK-NOERRNO: declare { double, double } @catanh(double, double) [[NUW]]
495// CHECK-NOERRNO: declare <2 x float> @catanhf(<2 x float>) [[NUW]]
496// CHECK-NOERRNO: declare { double, double } @ccos(double, double) [[NUW]]
497// CHECK-NOERRNO: declare <2 x float> @ccosf(<2 x float>) [[NUW]]
498// CHECK-NOERRNO: declare { double, double } @ccosh(double, double) [[NUW]]
499// CHECK-NOERRNO: declare <2 x float> @ccoshf(<2 x float>) [[NUW]]
500// CHECK-NOERRNO: declare { double, double } @cexp(double, double) [[NUW]]
501// CHECK-NOERRNO: declare <2 x float> @cexpf(<2 x float>) [[NUW]]
502// CHECK-NOERRNO: declare double @cimag(double, double) [[NUW]]
503// CHECK-NOERRNO: declare float @cimagf(<2 x float>) [[NUW]]
504// CHECK-NOERRNO: declare { double, double } @conj(double, double) [[NUW]]
505// CHECK-NOERRNO: declare <2 x float> @conjf(<2 x float>) [[NUW]]
506// CHECK-NOERRNO: declare { double, double } @clog(double, double) [[NUW]]
507// CHECK-NOERRNO: declare <2 x float> @clogf(<2 x float>) [[NUW]]
508// CHECK-NOERRNO: declare { double, double } @cproj(double, double) [[NUW]]
509// CHECK-NOERRNO: declare <2 x float> @cprojf(<2 x float>) [[NUW]]
510// CHECK-NOERRNO: declare { double, double } @cpow(double, double, double, double) [[NUW]]
511// CHECK-NOERRNO: declare <2 x float> @cpowf(<2 x float>, <2 x float>) [[NUW]]
512// CHECK-NOERRNO: declare double @creal(double, double) [[NUW]]
513// CHECK-NOERRNO: declare float @crealf(<2 x float>) [[NUW]]
514// CHECK-NOERRNO: declare { double, double } @csin(double, double) [[NUW]]
515// CHECK-NOERRNO: declare <2 x float> @csinf(<2 x float>) [[NUW]]
516// CHECK-NOERRNO: declare { double, double } @csinh(double, double) [[NUW]]
517// CHECK-NOERRNO: declare <2 x float> @csinhf(<2 x float>) [[NUW]]
518// CHECK-NOERRNO: declare { double, double } @csqrt(double, double) [[NUW]]
519// CHECK-NOERRNO: declare <2 x float> @csqrtf(<2 x float>) [[NUW]]
520// CHECK-NOERRNO: declare { double, double } @ctan(double, double) [[NUW]]
521// CHECK-NOERRNO: declare <2 x float> @ctanf(<2 x float>) [[NUW]]
522// CHECK-NOERRNO: declare { double, double } @ctanh(double, double) [[NUW]]
523// CHECK-NOERRNO: declare <2 x float> @ctanhf(<2 x float>) [[NUW]]
Tim Northover87994452014-01-14 19:26:03 +0000524// CHECK-NOERRNO: declare double @__sinpi(double) [[NUW]]
525// CHECK-NOERRNO: declare float @__sinpif(float) [[NUW]]
526// CHECK-NOERRNO: declare double @__cospi(double) [[NUW]]
527// CHECK-NOERRNO: declare float @__cospif(float) [[NUW]]
528// CHECK-NOERRNO: declare double @__tanpi(double) [[NUW]]
529// CHECK-NOERRNO: declare float @__tanpif(float) [[NUW]]
530// CHECK-NOERRNO: declare double @__exp10(double) [[NUW]]
531// CHECK-NOERRNO: declare float @__exp10f(float) [[NUW]]
Benjamin Kramer6f0bf802012-08-22 18:16:02 +0000532
Hal Finkel33be5e02013-09-18 06:19:40 +0000533// CHECK-ERRNO: declare i32 @abs(i32) [[NUW:#[0-9]+]]
534// CHECK-ERRNO: declare i64 @labs(i64) [[NUW]]
535// CHECK-ERRNO: declare i64 @llabs(i64) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000536// CHECK-ERRNO: declare double @copysign(double, double) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000537// CHECK-ERRNO: declare float @copysignf(float, float) [[NUW]]
Hal Finkel33be5e02013-09-18 06:19:40 +0000538// CHECK-ERRNO: declare x86_fp80 @copysignl(x86_fp80, x86_fp80) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000539// CHECK-ERRNO: declare double @fabs(double) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000540// CHECK-ERRNO: declare float @fabsf(float) [[NUW]]
Hal Finkel33be5e02013-09-18 06:19:40 +0000541// CHECK-ERRNO: declare x86_fp80 @fabsl(x86_fp80) [[NUW]]
542// CHECK-ERRNO: declare double @nan(i8*) [[NUW]]
543// CHECK-ERRNO: declare float @nanf(i8*) [[NUW]]
544// CHECK-ERRNO: declare x86_fp80 @nanl(i8*) [[NUW]]
545// CHECK-ERRNO: declare double @ceil(double) [[NUW]]
546// CHECK-ERRNO: declare float @ceilf(float) [[NUW]]
547// CHECK-ERRNO: declare x86_fp80 @ceill(x86_fp80) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000548// CHECK-ERRNO: declare double @floor(double) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000549// CHECK-ERRNO: declare float @floorf(float) [[NUW]]
Hal Finkel33be5e02013-09-18 06:19:40 +0000550// CHECK-ERRNO: declare x86_fp80 @floorl(x86_fp80) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000551// CHECK-ERRNO: declare double @fmax(double, double) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000552// CHECK-ERRNO: declare float @fmaxf(float, float) [[NUW]]
Hal Finkel33be5e02013-09-18 06:19:40 +0000553// CHECK-ERRNO: declare x86_fp80 @fmaxl(x86_fp80, x86_fp80) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000554// CHECK-ERRNO: declare double @fmin(double, double) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000555// CHECK-ERRNO: declare float @fminf(float, float) [[NUW]]
Hal Finkel33be5e02013-09-18 06:19:40 +0000556// CHECK-ERRNO: declare x86_fp80 @fminl(x86_fp80, x86_fp80) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000557// CHECK-ERRNO: declare double @nearbyint(double) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000558// CHECK-ERRNO: declare float @nearbyintf(float) [[NUW]]
Hal Finkel33be5e02013-09-18 06:19:40 +0000559// CHECK-ERRNO: declare x86_fp80 @nearbyintl(x86_fp80) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000560// CHECK-ERRNO: declare double @rint(double) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000561// CHECK-ERRNO: declare float @rintf(float) [[NUW]]
Hal Finkel33be5e02013-09-18 06:19:40 +0000562// CHECK-ERRNO: declare x86_fp80 @rintl(x86_fp80) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000563// CHECK-ERRNO: declare double @round(double) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000564// CHECK-ERRNO: declare float @roundf(float) [[NUW]]
Hal Finkel33be5e02013-09-18 06:19:40 +0000565// CHECK-ERRNO: declare x86_fp80 @roundl(x86_fp80) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000566// CHECK-ERRNO: declare double @trunc(double) [[NUW]]
Bill Wendlingd02fd832013-02-26 23:08:48 +0000567// CHECK-ERRNO: declare float @truncf(float) [[NUW]]
Hal Finkel33be5e02013-09-18 06:19:40 +0000568// CHECK-ERRNO: declare x86_fp80 @truncl(x86_fp80) [[NUW]]
569// CHECK-ERRNO: declare double @cabs(double, double) [[NUW]]
570// CHECK-ERRNO: declare float @cabsf(<2 x float>) [[NUW]]
571// CHECK-ERRNO: declare { double, double } @cacos(double, double) [[NUW]]
572// CHECK-ERRNO: declare <2 x float> @cacosf(<2 x float>) [[NUW]]
573// CHECK-ERRNO: declare { double, double } @cacosh(double, double) [[NUW]]
574// CHECK-ERRNO: declare <2 x float> @cacoshf(<2 x float>) [[NUW]]
575// CHECK-ERRNO: declare double @carg(double, double) [[NUW]]
576// CHECK-ERRNO: declare float @cargf(<2 x float>) [[NUW]]
577// CHECK-ERRNO: declare { double, double } @casin(double, double) [[NUW]]
578// CHECK-ERRNO: declare <2 x float> @casinf(<2 x float>) [[NUW]]
579// CHECK-ERRNO: declare { double, double } @casinh(double, double) [[NUW]]
580// CHECK-ERRNO: declare <2 x float> @casinhf(<2 x float>) [[NUW]]
581// CHECK-ERRNO: declare { double, double } @catan(double, double) [[NUW]]
582// CHECK-ERRNO: declare <2 x float> @catanf(<2 x float>) [[NUW]]
583// CHECK-ERRNO: declare { double, double } @catanh(double, double) [[NUW]]
584// CHECK-ERRNO: declare <2 x float> @catanhf(<2 x float>) [[NUW]]
585// CHECK-ERRNO: declare { double, double } @ccos(double, double) [[NUW]]
586// CHECK-ERRNO: declare <2 x float> @ccosf(<2 x float>) [[NUW]]
587// CHECK-ERRNO: declare { double, double } @ccosh(double, double) [[NUW]]
588// CHECK-ERRNO: declare <2 x float> @ccoshf(<2 x float>) [[NUW]]
589// CHECK-ERRNO: declare { double, double } @cexp(double, double) [[NUW]]
590// CHECK-ERRNO: declare <2 x float> @cexpf(<2 x float>) [[NUW]]
591// CHECK-ERRNO: declare double @cimag(double, double) [[NUW]]
592// CHECK-ERRNO: declare float @cimagf(<2 x float>) [[NUW]]
593// CHECK-ERRNO: declare { double, double } @conj(double, double) [[NUW]]
594// CHECK-ERRNO: declare <2 x float> @conjf(<2 x float>) [[NUW]]
595// CHECK-ERRNO: declare { double, double } @clog(double, double) [[NUW]]
596// CHECK-ERRNO: declare <2 x float> @clogf(<2 x float>) [[NUW]]
597// CHECK-ERRNO: declare { double, double } @cproj(double, double) [[NUW]]
598// CHECK-ERRNO: declare <2 x float> @cprojf(<2 x float>) [[NUW]]
599// CHECK-ERRNO: declare { double, double } @cpow(double, double, double, double) [[NUW]]
600// CHECK-ERRNO: declare <2 x float> @cpowf(<2 x float>, <2 x float>) [[NUW]]
601// CHECK-ERRNO: declare double @creal(double, double) [[NUW]]
602// CHECK-ERRNO: declare float @crealf(<2 x float>) [[NUW]]
603// CHECK-ERRNO: declare { double, double } @csin(double, double) [[NUW]]
604// CHECK-ERRNO: declare <2 x float> @csinf(<2 x float>) [[NUW]]
605// CHECK-ERRNO: declare { double, double } @csinh(double, double) [[NUW]]
606// CHECK-ERRNO: declare <2 x float> @csinhf(<2 x float>) [[NUW]]
607// CHECK-ERRNO: declare { double, double } @csqrt(double, double) [[NUW]]
608// CHECK-ERRNO: declare <2 x float> @csqrtf(<2 x float>) [[NUW]]
609// CHECK-ERRNO: declare { double, double } @ctan(double, double) [[NUW]]
610// CHECK-ERRNO: declare <2 x float> @ctanf(<2 x float>) [[NUW]]
611// CHECK-ERRNO: declare { double, double } @ctanh(double, double) [[NUW]]
612// CHECK-ERRNO: declare <2 x float> @ctanhf(<2 x float>) [[NUW]]
Bill Wendlingc33fc4c2013-02-20 07:22:19 +0000613
Bill Wendlingd02fd832013-02-26 23:08:48 +0000614// CHECK-NOERRNO: attributes [[NUW]] = { nounwind readnone{{.*}} }
Bill Wendlingc33fc4c2013-02-20 07:22:19 +0000615
Bill Wendlingd02fd832013-02-26 23:08:48 +0000616// CHECK-ERRNO: attributes [[NUW]] = { nounwind readnone{{.*}} }