From: Paul Brook <paul@codesourcery.com>
To: Blue Swirl <blauwirbel@gmail.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
qemu-devel@nongnu.org, patches@linaro.org
Subject: Re: [Qemu-devel] [PATCH 4/7] target-arm: Refactor int-float conversions
Date: Fri, 6 May 2011 17:38:09 +0100 [thread overview]
Message-ID: <201105061738.09777.paul@codesourcery.com> (raw)
In-Reply-To: <BANLkTimxoyn1E9HGNJXXNChkSKUgZ0My4A@mail.gmail.com>
> On Fri, May 6, 2011 at 5:09 PM, Paul Brook <paul@codesourcery.com> wrote:
> >> The Neon versions of int-float conversions need their own helper
> >> routines because they must use the "standard FPSCR" rather than the
> >> default one. Refactor the helper functions to make it easy to add the
> >> neon versions. While we're touching the code, move the helpers to
> >> op_helper.c so that we can use the global env variable rather than
> >> passing it as a parameter.
> >
> > IMO this is going in the wrong direction. We should in aiming for less
> > implicit accesses to cpu state, not more.
>
> Performance wise global env variable is faster and the register is
> always available.
Not entirely true. Reserving the global env variable has significant cost,
especially on hosts with limited register sets (i.e. x86). It's also a rather
fragile hack. There's a fairly long history of nasy hacks and things that
just don't work in this context. For example you can't reliably include
stdio.h from these files, and they often break if you turn optimization off,
which makes debugging much harder than it should be.
> Do you mean that we should aim to get rid of special
> status of global env, so that if no op uses it, it could be discarded
> to free a register?
That's already true for most of qemu. IMO more interesting is being able to
tell TCG that helpers don't mess with cpu state in opaque ways. In theory
it's already possible to do that manually. However that tends to be somewhat
fragile, relying on careful maintenance and code code auditing, with mistakes
triggering subtle hard-to-debug failures. Much better to avoid the implicit
global interface and make all helper arguments explicit.
> > Maybe better would be to explicitly pass a pointer the fp status. That
> > way you don't even need separate VFP and NEON variants of these
> > routines.
>
> It would be nice to have generic float functions callable directly as
> TCG helper.
Possibly. I'd have to look quite a bit closer to determine whether exposing
the generic float functions is useful in practice, or if you still end up
needing wrappers in most cases for most targets. Adding "native" floating
point support to the TCG interface is also a possibility. In practice this
might end up as wrappers around helper functions, but might provide a nicer
programming interface.
Paul
next prev parent reply other threads:[~2011-05-06 16:38 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-06 12:48 [Qemu-devel] [PATCH 0/7] target-arm: Fix bugs in fp exception flag setting Peter Maydell
2011-05-06 12:48 ` [Qemu-devel] [PATCH 1/7] target-arm: Don't set FP exceptions in recip, recip_sqrt estimate fns Peter Maydell
2011-05-06 12:48 ` [Qemu-devel] [PATCH 2/7] target-arm: Signal InputDenormal for VRECPE, VRSQRTE, VRECPS, VRSQRTS Peter Maydell
2011-05-06 12:48 ` [Qemu-devel] [PATCH 3/7] target-arm: Signal InvalidOp for Neon GE and GT compares of QNaN Peter Maydell
2011-05-06 12:48 ` [Qemu-devel] [PATCH 4/7] target-arm: Refactor int-float conversions Peter Maydell
2011-05-06 14:09 ` Paul Brook
2011-05-06 14:42 ` Peter Maydell
2011-05-06 15:30 ` Blue Swirl
2011-05-06 16:38 ` Paul Brook [this message]
2011-05-08 10:32 ` Blue Swirl
2011-05-14 22:38 ` Aurelien Jarno
2011-05-06 12:48 ` [Qemu-devel] [PATCH 5/7] target-arm: Add separate Neon float-int conversion helpers Peter Maydell
2011-05-06 12:48 ` [Qemu-devel] [PATCH 6/7] softfloat: Add new flag for when denormal result is flushed to zero Peter Maydell
2011-05-06 12:48 ` [Qemu-devel] [PATCH 7/7] target-arm: Signal Underflow when denormal flushed to zero on output Peter Maydell
2011-05-17 18:19 ` [Qemu-devel] [PATCH 0/7] target-arm: Fix bugs in fp exception flag setting 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=201105061738.09777.paul@codesourcery.com \
--to=paul@codesourcery.com \
--cc=blauwirbel@gmail.com \
--cc=patches@linaro.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).