From: BALATON Zoltan <balaton@eik.bme.hu>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Richard Henderson <richard.henderson@linaro.org>,
QEMU Developers <qemu-devel@nongnu.org>,
John Arbuckle <programmingkidx@gmail.com>,
qemu-ppc <qemu-ppc@nongnu.org>, Paul Clarke <pc@us.ibm.com>,
Howard Spoelstra <hsp.cat7@gmail.com>,
David Gibson <david@gibson.dropbear.id.au>
Subject: Re: [RFC PATCH v2] target/ppc: Enable hardfloat for PPC
Date: Fri, 21 Feb 2020 19:04:07 +0100 (CET) [thread overview]
Message-ID: <alpine.BSF.2.22.395.2002211807380.69986@zero.eik.bme.hu> (raw)
In-Reply-To: <CAFEAcA-teH7KXACL=5m0-X+g692EXKtqOy9d_uGjw6XA8S3vzA@mail.gmail.com>
On Fri, 21 Feb 2020, Peter Maydell wrote:
> On Fri, 21 Feb 2020 at 16:05, BALATON Zoltan <balaton@eik.bme.hu> wrote:
>> On Thu, 20 Feb 2020, Richard Henderson wrote:
>>> On 2/18/20 9:10 AM, BALATON Zoltan wrote:
>>>> + DEFINE_PROP_BOOL("hardfloat", PowerPCCPU, hardfloat, true),
>>>
>>> I would also prefer a different name here -- perhaps x-no-fp-fi.
>>
>> What's wrong with hardfloat? That's how the code refers to this so if
>> anyone searches what it does would turn up some meaningful results.
>
> This prompted me to check what you're using the property for.
> The cover letter says:
>> This patch implements a simple way to keep the inexact flag set for
>> hardfloat while still allowing to revert to softfloat for workloads
>> that need more accurate albeit slower emulation. (Set hardfloat
>> property of CPU, i.e. -cpu name,hardfloat=false for that.)
>
> I think that is the wrong approach. Enabling use of the host
> FPU should not affect the accuracy of the emulation, which
> should remain bitwise-correct. We should only be using the
> host FPU to the extent that we can do that without discarding
> accuracy. As far as I'm aware that's how the hardfloat support
> for other guest CPUs that use it works.
I don't know of a better approach. Please see section 4.2.2 Floating-Point
Status and Control Register on page 124 in this document:
https://openpowerfoundation.org/?resource_lib=power-isa-version-3-0
especially the definition of the FR and FI bits and tell me how can we
emulate these accurately and use host FPU. Not using the FPU even when
these bits are not needed (which seems to be the case for all workloads
we've tested so far) seriously limits the emulation speed so spending time
to emulate obscure and unused part of an architecture when not actually
needed just to keep emulation accurate but unusably slow does not seem to
be the right approach. In an ideal world of course this should be both
fast and accurate but we don't seem to have anyone who could achieve that
in past two years so maybe we could give up some accuracy now to get
usable speed and worry about emulating obscure features when we come
across some workload that actually needs it (but we have the option to
revert to accurate but slow emulation for that until a better way can be
devised that's both fast and accurate). Insisting on accuracy without any
solution to current state just hinders making any progress with this.
Other PowerPC emulators also seem to not bother or have similar
optimisation. I've quickly checked three that I know about:
https://github.com/mamedev/mame/blob/master/src/devices/cpu/powerpc/ppcdrc.cpp#L1893
https://github.com/mamedev/mame/blob/master/src/devices/cpu/powerpc/ppcdrc.cpp#L3503
there's also something here but no mention of FI bit I could notice:
https://github.com/mamedev/mame/blob/master/src/devices/cpu/powerpc/ppccom.cpp#L2023
https://github.com/xenia-project/xenia/blob/master/src/xenia/cpu/ppc/ppc_hir_builder.cc#L428
https://github.com/dolphin-emu/dolphin/blob/master/Source/Core/Core/PowerPC/Jit64/Jit_FloatingPoint.cpp
But I'm not sure I understand all of the above so hope this makes more
sense to someone and can advise.
Regards,
BALATON Zoltan
next prev parent reply other threads:[~2020-02-21 18:04 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-18 17:10 [RFC PATCH v2] target/ppc: Enable hardfloat for PPC BALATON Zoltan
2020-02-18 17:38 ` BALATON Zoltan
2020-02-19 2:27 ` Programmingkid
2020-02-19 15:35 ` BALATON Zoltan
2020-02-19 18:28 ` Howard Spoelstra
2020-02-19 19:28 ` BALATON Zoltan
2020-02-20 5:43 ` Howard Spoelstra
2020-02-25 3:07 ` Programmingkid
2020-02-25 12:09 ` BALATON Zoltan
2020-02-26 10:46 ` Programmingkid
2020-02-26 11:28 ` BALATON Zoltan
2020-02-26 13:00 ` R: " luigi burdo
2020-02-26 13:08 ` Dino Papararo
2020-02-26 14:28 ` Alex Bennée
2020-02-26 15:50 ` Aleksandar Markovic
2020-02-26 17:04 ` G 3
2020-02-26 17:27 ` Aleksandar Markovic
2020-02-26 18:14 ` R: " Dino Papararo
2020-02-26 18:51 ` Aleksandar Markovic
2020-02-27 2:43 ` Programmingkid
2020-02-27 7:16 ` Aleksandar Markovic
2020-02-27 11:54 ` BALATON Zoltan
2020-02-26 18:09 ` R: " Alex Bennée
2020-03-02 0:13 ` Programmingkid
2020-03-02 4:28 ` Richard Henderson
2020-03-02 11:42 ` BALATON Zoltan
2020-03-02 16:55 ` Richard Henderson
2020-03-02 23:16 ` BALATON Zoltan
2020-03-03 0:11 ` Richard Henderson
[not found] ` <CAKyx-3Pt2qLPXWQjBwrHn-nxR-9e++TioGp4cKFC3adMN3rtiw@mail.gmail.com>
2020-03-04 18:43 ` Fwd: " G 3
2020-03-05 19:25 ` Richard Henderson
2020-03-02 17:10 ` Alex Bennée
2020-03-02 23:01 ` BALATON Zoltan
2020-02-26 22:51 ` R: " BALATON Zoltan
2020-02-20 20:13 ` Richard Henderson
2020-02-21 16:04 ` BALATON Zoltan
2020-02-21 16:11 ` Peter Maydell
2020-02-21 16:51 ` Aleksandar Markovic
2020-02-21 18:04 ` BALATON Zoltan [this message]
2020-02-21 18:26 ` Peter Maydell
2020-02-21 19:52 ` BALATON Zoltan
2020-02-26 12:28 ` Alex Bennée
2020-02-26 13:07 ` BALATON Zoltan
2020-04-10 13:50 ` 罗勇刚(Yonggang Luo)
2020-04-10 18:04 ` BALATON Zoltan
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=alpine.BSF.2.22.395.2002211807380.69986@zero.eik.bme.hu \
--to=balaton@eik.bme.hu \
--cc=david@gibson.dropbear.id.au \
--cc=hsp.cat7@gmail.com \
--cc=pc@us.ibm.com \
--cc=peter.maydell@linaro.org \
--cc=programmingkidx@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=richard.henderson@linaro.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.