Oops! Committed to much, reverting :-(

This commit is contained in:
Andrew Cagney 2003-06-22 13:31:57 +00:00
parent 89c0d7ddd7
commit 4056a1ef29
2 changed files with 30 additions and 24 deletions

View 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)

View 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);