a-numaux-x86.adb (Logarithmic_Pow): Do not silently clobber x87 registers.

* a-numaux-x86.adb (Logarithmic_Pow): Do not silently clobber
	x87 registers.

From-SVN: r128329
This commit is contained in:
Eric Botcazou 2007-09-10 10:10:58 +00:00 committed by Eric Botcazou
parent f8568ac02a
commit a56955b1d7
2 changed files with 7 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2007-09-10 Eric Botcazou <ebotcazou@adacore.com>
* a-numaux-x86.adb (Logarithmic_Pow): Do not silently clobber
x87 registers.
2007-09-10 Eric Botcazou <ebotcazou@adacore.com>
* decl.c (gnat_to_gnu_entity) <object>: Deal with variable built for

View File

@ -302,15 +302,14 @@ package body Ada.Numerics.Aux is
begin
Asm (Template => "" -- X : Y
& "fyl2x " & NL -- Y * Log2 (X)
& "fst %%st(1) " & NL -- Y * Log2 (X) : Y * Log2 (X)
& "fld %%st(0) " & NL -- Y * Log2 (X) : Y * Log2 (X)
& "frndint " & NL -- Int (...) : Y * Log2 (X)
& "fsubr %%st, %%st(1)" & NL -- Int (...) : Fract (...)
& "fxch " & NL -- Fract (...) : Int (...)
& "f2xm1 " & NL -- 2**Fract (...) - 1 : Int (...)
& "fld1 " & NL -- 1 : 2**Fract (...) - 1 : Int (...)
& "faddp %%st, %%st(1)" & NL -- 2**Fract (...) : Int (...)
& "fscale " & NL -- 2**(Fract (...) + Int (...))
& "fstp %%st(1) ",
& "fscale ", -- 2**(Fract (...) + Int (...))
Outputs => Double'Asm_Output ("=t", Result),
Inputs =>
(Double'Asm_Input ("0", X),