Files
ldc/tango.patch
2009-03-10 04:56:28 +01:00

185 lines
3.1 KiB
Diff

Index: tango/tango/math/Math.d
===================================================================
--- tango/tango/math/Math.d (revision 4388)
+++ tango/tango/math/Math.d (working copy)
@@ -80,13 +80,9 @@
} else version(D_InlineAsm_X86) {
version = Naked_D_InlineAsm_X86;
}
-else version(LDC)
+version(LDC)
{
import ldc.intrinsics;
- version(X86)
- {
- version = LDC_X86;
- }
}
/*
@@ -312,28 +308,14 @@
* Results are undefined if |x| >= $(POWER 2,64).
*/
-version(LDC)
+real cos(real x) /* intrinsic */
{
- alias llvm_cos_f32 cos;
- alias llvm_cos_f64 cos;
- version(X86)
+ version(LDC)
{
- alias llvm_cos_f80 cos;
+ return llvm_cos(x);
}
- else
+ else version(D_InlineAsm_X86)
{
- real cos(real x)
- {
- return tango.stdc.math.cosl(x);
- }
- }
-}
-else
-{
-real cos(real x) /* intrinsic */
-{
- version(D_InlineAsm_X86)
- {
asm
{
fld x;
@@ -345,7 +327,6 @@
return tango.stdc.math.cosl(x);
}
}
-}
debug(UnitTest) {
unittest {
@@ -366,28 +347,14 @@
* Bugs:
* Results are undefined if |x| >= $(POWER 2,64).
*/
-version(LDC)
+real sin(real x) /* intrinsic */
{
- alias llvm_sin_f32 sin;
- alias llvm_sin_f64 sin;
- version(X86)
+ version(LDC)
{
- alias llvm_sin_f80 sin;
+ return llvm_sin(x);
}
- else
+ else version(D_InlineAsm_X86)
{
- real sin(real x)
- {
- return tango.stdc.math.sinl(x);
- }
- }
-}
-else
-{
-real sin(real x) /* intrinsic */
-{
- version(D_InlineAsm_X86)
- {
asm
{
fld x;
@@ -399,7 +366,6 @@
return tango.stdc.math.sinl(x);
}
}
-}
debug(UnitTest) {
unittest {
@@ -999,29 +965,14 @@
* $(TR $(TD +$(INFIN)) $(TD +$(INFIN)) $(TD no))
* )
*/
-version(LDC)
+float sqrt(float x) /* intrinsic */
{
- alias llvm_sqrt_f32 sqrt;
- alias llvm_sqrt_f64 sqrt;
- version(X86)
+ version(LDC)
{
- alias llvm_sqrt_f80 sqrt;
+ return llvm_sqrt(x);
}
- else
+ else version(D_InlineAsm_X86)
{
- real sqrt(real x)
- {
- return tango.stdc.math.sqrtl(x);
- }
- }
-}
-else
-{
-
-float sqrt(float x) /* intrinsic */
-{
- version(D_InlineAsm_X86)
- {
asm
{
fld x;
@@ -1036,8 +987,12 @@
double sqrt(double x) /* intrinsic */ /// ditto
{
- version(D_InlineAsm_X86)
+ version(LDC)
{
+ return llvm_sqrt(x);
+ }
+ else version(D_InlineAsm_X86)
+ {
asm
{
fld x;
@@ -1052,8 +1007,12 @@
real sqrt(real x) /* intrinsic */ /// ditto
{
- version(D_InlineAsm_X86)
+ version(LDC)
{
+ return llvm_sqrt(x);
+ }
+ else version(D_InlineAsm_X86)
+ {
asm
{
fld x;
@@ -1066,8 +1025,6 @@
}
}
-}
-
/** ditto */
creal sqrt(creal z)
{
@@ -1714,9 +1671,9 @@
}
}
}
- version(LDC_X86)
+ version(LDC)
{
- return llvm_pow_f80(x, y);
+ return llvm_pow(x, y);
}
else
{