[PATCH] Add __sinpi and friends as libcalls
Tim Northover
t.p.northover at gmail.com
Tue Jan 14 10:05:40 PST 2014
Those sound like very reasonable suggestions, how does this look?
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]]
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D2516.2.patch
Type: text/x-patch
Size: 3071 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140114/6b582761/attachment.bin>
More information about the cfe-commits
mailing list