Mercurial > projects > ldc
view tango.patch @ 1095:d6bd818212de
Add missing EBX clobber to CPUID asm instruction.
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Wed, 11 Mar 2009 14:17:13 +0100 |
parents | 5710440ea420 |
children |
line wrap: on
line source
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 {