[PATCH] Add __sinpi and friends as libcalls
Alp Toker
alp at nuanti.com
Tue Jan 14 10:25:20 PST 2014
On 14/01/2014 18:05, Tim Northover wrote:
> Those sound like very reasonable suggestions, how does this look?
I see you covered the __exp10f() variant too, great.
LGTM
Alp.
>
> Cheers.
>
> Tim.
>
> http://llvm-reviews.chandlerc.com/D2516
>
> CHANGE SINCE LAST DIFF
> http://llvm-reviews.chandlerc.com/D2516?vs=6370&id=6447#toc
>
> Files:
> include/clang/Basic/Builtins.def
> test/CodeGen/libcall-declarations.c
>
> Index: include/clang/Basic/Builtins.def
> ===================================================================
> --- include/clang/Basic/Builtins.def
> +++ include/clang/Basic/Builtins.def
> @@ -1137,6 +1137,21 @@
> LIBBUILTIN(ctanhf, "XfXf", "fnc", "complex.h", ALL_LANGUAGES)
> LIBBUILTIN(ctanhl, "XLdXLd", "fnc", "complex.h", ALL_LANGUAGES)
>
> +// __sinpi and friends are OS X specific library functions, but otherwise much
> +// like the standard (non-complex) sin (etc).
> +LIBBUILTIN(__sinpi, "dd", "fne", "math.h", ALL_LANGUAGES)
> +LIBBUILTIN(__sinpif, "ff", "fne", "math.h", ALL_LANGUAGES)
> +
> +LIBBUILTIN(__cospi, "dd", "fne", "math.h", ALL_LANGUAGES)
> +LIBBUILTIN(__cospif, "ff", "fne", "math.h", ALL_LANGUAGES)
> +
> +LIBBUILTIN(__tanpi, "dd", "fne", "math.h", ALL_LANGUAGES)
> +LIBBUILTIN(__tanpif, "ff", "fne", "math.h", ALL_LANGUAGES)
> +
> +// Similarly, __exp10 is OS X only
> +LIBBUILTIN(__exp10, "dd", "fne", "math.h", ALL_LANGUAGES)
> +LIBBUILTIN(__exp10f, "ff", "fne", "math.h", ALL_LANGUAGES)
> +
> // Blocks runtime Builtin math library functions
> LIBBUILTIN(_Block_object_assign, "vv*vC*iC", "f", "Blocks.h", ALL_LANGUAGES)
> LIBBUILTIN(_Block_object_dispose, "vvC*iC", "f", "Blocks.h", ALL_LANGUAGES)
> Index: test/CodeGen/libcall-declarations.c
> ===================================================================
> --- test/CodeGen/libcall-declarations.c
> +++ test/CodeGen/libcall-declarations.c
> @@ -244,6 +244,16 @@
> double _Complex ctanh(double _Complex);
> float _Complex ctanhf(float _Complex);
> long double _Complex ctanhl(long double _Complex);
> +
> +double __sinpi(double);
> +float __sinpif(float);
> +double __cospi(double);
> +float __cospif(float);
> +double __tanpi(double);
> +float __tanpif(float);
> +
> +double __exp10(double);
> +float __exp10f(float);
> #ifdef __cplusplus
> }
> #endif
> @@ -298,7 +308,8 @@
> F(crealf), F(creall), F(csin), F(csinf), F(csinl),
> F(csinh), F(csinhf), F(csinhl), F(csqrt), F(csqrtf),
> F(csqrtl), F(ctan), F(ctanf), F(ctanl), F(ctanh),
> - F(ctanhf), F(ctanhl)
> + F(ctanhf), F(ctanhl), F(__sinpi), F(__sinpif), F(__cospi),
> + F(__cospif), F(__tanpi), F(__tanpif), F(__exp10), F(__exp10f)
> };
>
> // CHECK-NOERRNO: declare double @atan2(double, double) [[NUW:#[0-9]+]]
> @@ -510,6 +521,14 @@
> // CHECK-NOERRNO: declare <2 x float> @ctanf(<2 x float>) [[NUW]]
> // CHECK-NOERRNO: declare { double, double } @ctanh(double, double) [[NUW]]
> // CHECK-NOERRNO: declare <2 x float> @ctanhf(<2 x float>) [[NUW]]
> +// CHECK-NOERRNO: declare double @__sinpi(double) [[NUW]]
> +// CHECK-NOERRNO: declare float @__sinpif(float) [[NUW]]
> +// CHECK-NOERRNO: declare double @__cospi(double) [[NUW]]
> +// CHECK-NOERRNO: declare float @__cospif(float) [[NUW]]
> +// CHECK-NOERRNO: declare double @__tanpi(double) [[NUW]]
> +// CHECK-NOERRNO: declare float @__tanpif(float) [[NUW]]
> +// CHECK-NOERRNO: declare double @__exp10(double) [[NUW]]
> +// CHECK-NOERRNO: declare float @__exp10f(float) [[NUW]]
>
> // CHECK-ERRNO: declare i32 @abs(i32) [[NUW:#[0-9]+]]
> // CHECK-ERRNO: declare i64 @labs(i64) [[NUW]]
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
--
http://www.nuanti.com
the browser experts
More information about the cfe-commits
mailing list