From: Nathan Froyd <froydnj@codesourcery.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 08/12] ARM: Return correct result for single<->double conversion of NaN
Date: Mon, 29 Nov 2010 11:54:53 -0800 [thread overview]
Message-ID: <20101129195453.GP8544@codesourcery.com> (raw)
In-Reply-To: <AANLkTimtk9RwFEt75TFy1CG1=yL-X06-hci_AB2BRozK@mail.gmail.com>
On Mon, Nov 29, 2010 at 07:25:18PM +0000, Peter Maydell wrote:
> On 29 November 2010 17:49, Nathan Froyd <froydnj@codesourcery.com> wrote:
> > On Tue, Nov 23, 2010 at 06:53:47PM +0000, Peter Maydell wrote:
> > As with other NaN-handling patches, I don't think the bit-twiddling here
> > is a good idea. Having a float*_maybe_silence_nan function in softfloat
> > would be a better approach.
>
> I guess this (like the other one you commented on) boils down to how
> you want to approach the boundary between qemu proper and the
> softfloat library. There are three approaches I can see:
>
> (a) live with the softfloat API as it is, and add bit twiddling as
> necessary for particular target CPU special casing in the per-cpu
> functions (which is what I was doing here and with the 'is it a NaN?'
> function in the other patch)
Full disclosure: I did this sort of thing for PPC; see the DO_HANDLE_NAN
macro in op_helper.c. I was young and thoughtless then and now I
am...well, older, anyway. :) I don't think it's the best approach: since
at least two CPUs now need NaN-silencing, we should provide something
generic. And even if only one CPU requires it, I think it's better to
squirrel the logic away in fpu/. float{32,64,80,128} should be opaque
things except for specialized cases.
(I can see an argument for CPU-confined bit twiddling to implement
things like float*_rsqrt_estimate or similar, where one function might
not work across CPU families due to precision requirements and so forth.
But we can cross that bridge when we come to it.)
> (b) add to and extend the softfloat API whenever you have some
> floating-point related thing it doesn't currently support (which I
> did with the "add conversions to int16_t" patch because it was
> a big chunk of bit twiddling, but which I felt was a bit invasive to
> do for this sort of minor tweak, especially since softfloat is a
> copy of a third-party library)
I think this is the best approach whenever possible. I would not be too
worried about the third-party-ness of softfloat; it's extremely stable,
unlikely to change anytime in the near or far future, and we've already
extended in it non-trivial ways anyway. (And would do so again if we
ever implemented, say, proper flush-to-zero denormal handling or IA64
register-precision floats--the former being more likely than the
latter. ;)
An example of where softfloat could be usefully extended and where we do
(a) sometimes is in production of CPU-default NaN values. softfloat
knows all about this, yet there are #defines scattered about to provide
bit patterns because the softfloat API isn't extensive enough.
> (c) do something suboptimal where the softfloat API provides
> some-API-but-not-quite-the-ideal-API (which I'm not particularly
> keen on and is what I see the "is_nan() || is_signalling_nan()"
> approach as)
Yes, this is ugly. Are you up for running:
perl -p -i -e 's/float(\d+)_is_nan/float\1_is_quiet_nan/g' target-*/*.c
(and also carefully in fpu/*) or similar and moving the bit-twiddling
float_is_nan into fpu/?
-Nathan
next prev parent reply other threads:[~2010-11-29 19:54 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-23 18:53 [Qemu-devel] [PATCH 00/12] [PULL] ARM fixes Peter Maydell
2010-11-23 18:53 ` [Qemu-devel] [PATCH 01/12] target-arm: Add support for PKHxx in thumb2 Peter Maydell
2010-11-29 18:43 ` Nathan Froyd
2010-11-23 18:53 ` [Qemu-devel] [PATCH 02/12] target-arm: Fix mixup in decoding of saturating add and sub Peter Maydell
2010-11-29 17:01 ` Nathan Froyd
2010-11-23 18:53 ` [Qemu-devel] [PATCH 03/12] target-arm: Handle 'smc' as an undefined instruction Peter Maydell
2010-11-29 18:23 ` Nathan Froyd
2010-11-23 18:53 ` [Qemu-devel] [PATCH 04/12] ARM: Fix decoding of VFP forms of VCVT between float and int/fixed Peter Maydell
2010-11-23 18:53 ` [Qemu-devel] [PATCH 05/12] ARM: Fix decoding of Neon forms of VCVT between float and fixed point Peter Maydell
2010-11-29 18:11 ` Nathan Froyd
2010-11-23 18:53 ` [Qemu-devel] [PATCH 06/12] ARM: Fix sense of to_integer bit in Neon VCVT float/int conversion Peter Maydell
2010-11-29 16:34 ` Nathan Froyd
2010-11-23 18:53 ` [Qemu-devel] [PATCH 07/12] ARM: Return correct result for float-to-integer conversion of NaN Peter Maydell
2010-11-29 16:38 ` Nathan Froyd
2010-11-29 16:49 ` Peter Maydell
2010-11-29 16:58 ` Nathan Froyd
2010-11-23 18:53 ` [Qemu-devel] [PATCH 08/12] ARM: Return correct result for single<->double " Peter Maydell
2010-11-29 17:49 ` Nathan Froyd
2010-11-29 19:25 ` Peter Maydell
2010-11-29 19:54 ` Nathan Froyd [this message]
2010-11-29 20:04 ` Peter Maydell
2010-11-29 20:21 ` Nathan Froyd
2010-11-30 11:15 ` Peter Maydell
2010-12-01 15:39 ` Nathan Froyd
2010-12-01 17:52 ` Richard Henderson
2010-12-01 17:54 ` Nathan Froyd
2010-11-23 18:53 ` [Qemu-devel] [PATCH 09/12] ARM: Ignore top 16 bits when doing VCVT from 16 bit fixed point Peter Maydell
2010-11-29 17:02 ` Nathan Froyd
2010-11-23 18:53 ` [Qemu-devel] [PATCH 10/12] softfloat: Add float/double to 16 bit integer conversion functions Peter Maydell
2010-11-29 18:46 ` Nathan Froyd
2010-11-23 18:53 ` [Qemu-devel] [PATCH 11/12] ARM: Implement VCVT to 16 bit integer using new softfloat routines Peter Maydell
2010-11-29 18:47 ` Nathan Froyd
2010-11-23 18:53 ` [Qemu-devel] [PATCH 12/12] ARM: fix ldrexd/strexd Peter Maydell
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=20101129195453.GP8544@codesourcery.com \
--to=froydnj@codesourcery.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.