Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Ian Lance Taylor <ian@airs.com>
To: Daniel Jacobowitz <drow@false.org>
Cc: gdb-patches@sourceware.org
Subject: Re: PATCH RFA: Fix simulator handling of floating point absolute value
Date: Fri, 08 Jul 2005 17:51:00 -0000	[thread overview]
Message-ID: <m3eka9uqy8.fsf@gossamer.airs.com> (raw)
In-Reply-To: <20050708140058.GA17316@nevyn.them.org>

Daniel Jacobowitz <drow@false.org> writes:

> On Thu, Jul 07, 2005 at 10:18:53PM -0700, Ian Lance Taylor wrote:
> > The common simulator routine sim_fpu_abs is used by MIPS, MN10300,
> > SH64, and perhaps some CGEN generated simulators (it is called by
> > cgen-accfp.c).  On most, and perhaps all, hardware, a floating point
> > absolute value instruction simply clears the sign bit.  However,
> > sim_fpu_abs does not clear the sign bit when given a NaN.  For MIPS,
> > this causes the gcc test gcc.c-torture/execute/ieee/copysign1.c to
> > fail.
> > 
> > This patch changes sim_fpu_abs to always clear the sign bit of the
> > argument.  It does not otherwise change the behaviour.  This, plus
> > another patch I am about to sign, fixes the gcc copysign1 test for
> > MIPS.
> > 
> > OK for mainline?
> 
> I have no references for this concern, but could you check that this
> change is appropriate for at least MN10300 and SH64, since they share
> ths code?

I think I'll need a little help to fully satisfy this request.  The
issue is how the fabs instruction on the MN10300 and SH handle NaNs.
This is something that can only be determined via a detailed processor
manual or by testing on real hardware.

The manual for the SH4a is, fortunately, clear: the fabs instruction
is described as "FRn & H'7FFF FFFF -> FRn."  So for the SH4a, at
least, my proposed patch is correct.

I found a processor manual for the MN10300 AM33 on the web, but all it
says about the fabs instruction is "This takes an absolute value of
the register (FSm), and stores the result in the register (FSn)."

A hardware designer implementing the floating point absolute
instruction has a choice.  He or she can implement a simple
instruction which clears the sign bit.  Or he or she can implement an
instruction which checks for NaN input, and, in that case, does not
clear the sign bit.  Since sim-fpu.c is intended to be for generic
use, I think it is reasonable to bet on the simple implementation, and
force a simulator for a processor which takes the complex
implementation to do something different.  Especially since it is
correct for at least two out of three processors.

Ian


  reply	other threads:[~2005-07-08 17:51 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-07-08  5:19 Ian Lance Taylor
2005-07-08 14:03 ` Daniel Jacobowitz
2005-07-08 17:51   ` Ian Lance Taylor [this message]
2005-07-08 18:44     ` Daniel Jacobowitz
2005-07-08 15:38 ` Frank Ch. Eigler

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m3eka9uqy8.fsf@gossamer.airs.com \
    --to=ian@airs.com \
    --cc=drow@false.org \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox