Message ID | 20240531091457.42200-3-pbonzini@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | host/i386: require x86-64-v2 ISA | expand |
On Fri, May 31, 2024 at 11:14:53AM +0200, Paolo Bonzini wrote: > Date: Fri, 31 May 2024 11:14:53 +0200 > From: Paolo Bonzini <pbonzini@redhat.com> > Subject: [PATCH 2/6] meson: assume x86-64-v2 baseline ISA > X-Mailer: git-send-email 2.45.1 > > x86-64-v2 processors were released in 2008, assume that we have one. > Unfortunately there is no GCC flag to enable all the features > without disabling what came after; so enable them one by one. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > meson.build | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/meson.build b/meson.build > index 63866071445..19d1fc1f33b 100644 > --- a/meson.build > +++ b/meson.build > @@ -336,9 +336,13 @@ if host_arch == 'i386' and not cc.links(''' > qemu_common_flags = ['-march=i486'] + qemu_common_flags > endif > > -# ??? Only extremely old AMD cpus do not have cmpxchg16b. > -# If we truly care, we should simply detect this case at > -# runtime and generate the fallback to serial emulation. > +# Assume x86-64-v2 (minus CMPXCHG16B for 32-bit code) Is it necessary to state the requirement (x86-64-v2) for x86 host in some doc? e.g., docs/system/target-i386.rst. > +if host_arch == 'i386' > + qemu_common_flags = ['-mfpmath=sse'] + qemu_common_flags > +endif > +if host_arch in ['i386', 'x86_64'] > + qemu_common_flags = ['-mpopcnt', '-msse4.2'] + qemu_common_flags > +endif > if host_arch == 'x86_64' > qemu_common_flags = ['-mcx16'] + qemu_common_flags > endif > -- > 2.45.1 Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
diff --git a/meson.build b/meson.build index 63866071445..19d1fc1f33b 100644 --- a/meson.build +++ b/meson.build @@ -336,9 +336,13 @@ if host_arch == 'i386' and not cc.links(''' qemu_common_flags = ['-march=i486'] + qemu_common_flags endif -# ??? Only extremely old AMD cpus do not have cmpxchg16b. -# If we truly care, we should simply detect this case at -# runtime and generate the fallback to serial emulation. +# Assume x86-64-v2 (minus CMPXCHG16B for 32-bit code) +if host_arch == 'i386' + qemu_common_flags = ['-mfpmath=sse'] + qemu_common_flags +endif +if host_arch in ['i386', 'x86_64'] + qemu_common_flags = ['-mpopcnt', '-msse4.2'] + qemu_common_flags +endif if host_arch == 'x86_64' qemu_common_flags = ['-mcx16'] + qemu_common_flags endif
x86-64-v2 processors were released in 2008, assume that we have one. Unfortunately there is no GCC flag to enable all the features without disabling what came after; so enable them one by one. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- meson.build | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)