On Mon, Dec 24, 2018 at 21:38:52 +0000, Peter Maydell wrote: > On Mon, 24 Dec 2018 at 19:16, Emilio G. Cota <c...@braap.org> 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?
Yes. > 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 Agreed. I'll be away until mid-January starting tomorrow, so I'll send a v2 with the cpuid bits removed, which aren't needed to fix the bug that Laurent hit. We can later on address cpuid consolidation. Thanks, Emilio