Oops! Committed to much, reverting :-(
authorAndrew Cagney <cagney@redhat.com>
Sun, 22 Jun 2003 13:31:57 +0000 (13:31 +0000)
committerAndrew Cagney <cagney@redhat.com>
Sun, 22 Jun 2003 13:31:57 +0000 (13:31 +0000)
sim/common/sim-fpu.c
sim/common/sim-fpu.h

index 845248adb590e9b5619348ad511855c15535a69c..28d61a565fedbf06423d0f1bcd92e926fa72df9d 100644 (file)
@@ -2,7 +2,7 @@
    of the floating point routines in libgcc1.c for targets without
    hardware floating point.  */
 
-/* Copyright 1994, 1997, 1998, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1994,1997-1998 Free Software Foundation, Inc.
 
 This file is free software; you can redistribute it and/or modify it
 under the terms of the GNU General Public License as published by the
@@ -1754,7 +1754,33 @@ INLINE_SIM_FPU (int)
 sim_fpu_inv (sim_fpu *f,
             const sim_fpu *r)
 {
-  return sim_fpu_div (f, &sim_fpu_one, r);
+  if (sim_fpu_is_snan (r))
+    {
+      *f = *r;
+      f->class = sim_fpu_class_qnan;
+      return sim_fpu_status_invalid_snan;
+    }
+  if (sim_fpu_is_qnan (r))
+    {
+      *f = *r;
+      f->class = sim_fpu_class_qnan;
+      return 0;
+    }
+  if (sim_fpu_is_infinity (r))
+    {
+      *f = sim_fpu_zero;
+      f->sign = r->sign;
+      return 0;
+    }
+  if (sim_fpu_is_zero (r))
+    {
+      f->class = sim_fpu_class_infinity;
+      f->sign = r->sign;
+      return sim_fpu_status_invalid_div0;
+    }
+  *f = *r;
+  f->normal_exp = - r->normal_exp;
+  return 0;
 }
 
 
@@ -2188,22 +2214,6 @@ sim_fpu_exp (const sim_fpu *d)
 }
 
 
-INLINE_SIM_FPU (unsigned64)
-sim_fpu_fraction (const sim_fpu *d)
-{
-  return d->fraction;
-}
-
-
-INLINE_SIM_FPU (unsigned64)
-sim_fpu_guard (const sim_fpu *d, int is_double)
-{
-  unsigned64 rv;
-  unsigned64 guardmask = LSMASK64 (NR_GUARDS - 1, 0);
-  rv = (d->fraction & guardmask) >> NR_PAD;
-  return rv;
-}
-
 
 INLINE_SIM_FPU (int)
 sim_fpu_is (const sim_fpu *d)
index 579fbaaf1525ecbd6a49c2dd5f85333d948abb33..755e194d1acc36581256d85bc6e286c53d198bbd 100644 (file)
@@ -1,7 +1,5 @@
 /* Simulator Floating-point support.
-
-   Copyright 1997, 1998, 2002, 2003 Free Software Foundation, Inc.
-
+   Copyright (C) 1997, 1998, 2002 Free Software Foundation, Inc.
    Contributed by Cygnus Support.
 
 This file is part of GDB, the GNU debugger.
@@ -44,7 +42,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
    For unpacked structures (passed by value and reference), the code
    quality of GCC-2.7 (on x86) for each alternative was compared.
-   Needless to say the results, while better than for a packed 64 bit
+   Needless to say the results, while better then for a packed 64 bit
    object, were still poor (GCC had only limited support for the
    optimization of references to structure members).  Regardless, the
    struct-by-ref alternative achieved better results when compiled
@@ -318,8 +316,6 @@ INLINE_SIM_FPU (int) sim_fpu_is_denorm (const sim_fpu *s); /* !zero */
 
 INLINE_SIM_FPU (int) sim_fpu_sign (const sim_fpu *s);
 INLINE_SIM_FPU (int) sim_fpu_exp (const sim_fpu *s);
-INLINE_SIM_FPU (unsigned64) sim_fpu_fraction (const sim_fpu *s);
-INLINE_SIM_FPU (unsigned64) sim_fpu_guard (const sim_fpu *s, int is_double);