[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] softfloat: enforce softfloat if the host's FMA
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PATCH] softfloat: enforce softfloat if the host's FMA is broken |
Date: |
Mon, 24 Dec 2018 21:38:52 +0000 |
On Mon, 24 Dec 2018 at 19:16, Emilio G. Cota <address@hidden> wrote:
> The added branch to the FMA ops is marked as unlikely and therefore
> its impact on performance (measured with fp-bench) is within noise range
> when measured on an Intel(R) Xeon(R) Gold 6142 CPU @ 2.60GHz.
> + /* check whether avx is usable */
> + if (c & bit_OSXSAVE) {
> + int bv;
> +
> + __asm("xgetbv" : "=a"(bv), "=d"(d) : "c"(0));
> + if ((bv & 6) == 6) {
> + has_avx = c & bit_AVX;
> + }
> + }
I note that the code in tcg/i386/tcg-target.inc.c
that does something similar has the note:
/* The xgetbv instruction is not available to older versions of
* the assembler, so we encode the instruction manually.
*/
-- does that concern apply here?
This will also be the fourth piece of code that has an
inline xgetbv asm insn to try to query a property of the
CPU (the other 3 are target/i386/hvf/x86_cpuid.c, util/bufferiszero.c
and tcg/i386/tcg-target.inc.c), which strongly suggests that we
should abstract this out a bit better. That also might help
avoid bugs which exist in one version but not the other:
see for instance https://bugs.launchpad.net/bugs/1758819
thanks
-- PMM