diff mbox series

[PULL,15/23] Revert "host/i386: assume presence of SSE2"

Message ID 20240622061558.530543-16-pbonzini@redhat.com (mailing list archive)
State New, archived
Headers show
Series [PULL,01/23] configure: detect --cpu=mipsisa64r6 | expand

Commit Message

Paolo Bonzini June 22, 2024, 6:15 a.m. UTC
This reverts commit b18236897ca15c3db1506d8edb9a191dfe51429c.
The x86-64 instruction set can now be tuned down to x86-64 v1
or i386 Pentium Pro.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 host/include/i386/host/cpuinfo.h | 1 +
 util/bufferiszero.c              | 4 ++--
 util/cpuinfo-i386.c              | 1 +
 3 files changed, 4 insertions(+), 2 deletions(-)

Comments

Richard Henderson June 22, 2024, 4:55 p.m. UTC | #1
On 6/21/24 23:15, Paolo Bonzini wrote:
> This reverts commit b18236897ca15c3db1506d8edb9a191dfe51429c.
> The x86-64 instruction set can now be tuned down to x86-64 v1
> or i386 Pentium Pro.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>   host/include/i386/host/cpuinfo.h | 1 +
>   util/bufferiszero.c              | 4 ++--
>   util/cpuinfo-i386.c              | 1 +
>   3 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/host/include/i386/host/cpuinfo.h b/host/include/i386/host/cpuinfo.h
> index 72f6fad61e5..81771733eaa 100644
> --- a/host/include/i386/host/cpuinfo.h
> +++ b/host/include/i386/host/cpuinfo.h
> @@ -14,6 +14,7 @@
>   #define CPUINFO_POPCNT          (1u << 4)
>   #define CPUINFO_BMI1            (1u << 5)
>   #define CPUINFO_BMI2            (1u << 6)
> +#define CPUINFO_SSE2            (1u << 7)
>   #define CPUINFO_AVX1            (1u << 9)
>   #define CPUINFO_AVX2            (1u << 10)
>   #define CPUINFO_AVX512F         (1u << 11)
> diff --git a/util/bufferiszero.c b/util/bufferiszero.c
> index 11c080e02cf..74864f7b782 100644
> --- a/util/bufferiszero.c
> +++ b/util/bufferiszero.c
> @@ -188,14 +188,14 @@ static biz_accel_fn const accel_table[] = {
>   
>   static unsigned best_accel(void)
>   {
> -#ifdef CONFIG_AVX2_OPT
>       unsigned info = cpuinfo_init();
>   
> +#ifdef CONFIG_AVX2_OPT
>       if (info & CPUINFO_AVX2) {
>           return 2;
>       }
>   #endif
> -    return 1;
> +    return info & CPUINFO_SSE2 ? 1 : 0;
>   }

Merge conflict with master here -- bufferiszero.c has been split.
This hunk now goes in host/include/i386/host/bufferiszero.c.inc.


r~
diff mbox series

Patch

diff --git a/host/include/i386/host/cpuinfo.h b/host/include/i386/host/cpuinfo.h
index 72f6fad61e5..81771733eaa 100644
--- a/host/include/i386/host/cpuinfo.h
+++ b/host/include/i386/host/cpuinfo.h
@@ -14,6 +14,7 @@ 
 #define CPUINFO_POPCNT          (1u << 4)
 #define CPUINFO_BMI1            (1u << 5)
 #define CPUINFO_BMI2            (1u << 6)
+#define CPUINFO_SSE2            (1u << 7)
 #define CPUINFO_AVX1            (1u << 9)
 #define CPUINFO_AVX2            (1u << 10)
 #define CPUINFO_AVX512F         (1u << 11)
diff --git a/util/bufferiszero.c b/util/bufferiszero.c
index 11c080e02cf..74864f7b782 100644
--- a/util/bufferiszero.c
+++ b/util/bufferiszero.c
@@ -188,14 +188,14 @@  static biz_accel_fn const accel_table[] = {
 
 static unsigned best_accel(void)
 {
-#ifdef CONFIG_AVX2_OPT
     unsigned info = cpuinfo_init();
 
+#ifdef CONFIG_AVX2_OPT
     if (info & CPUINFO_AVX2) {
         return 2;
     }
 #endif
-    return 1;
+    return info & CPUINFO_SSE2 ? 1 : 0;
 }
 
 #elif defined(__aarch64__) && defined(__ARM_NEON)
diff --git a/util/cpuinfo-i386.c b/util/cpuinfo-i386.c
index ca74ef04f54..90f92a42dc8 100644
--- a/util/cpuinfo-i386.c
+++ b/util/cpuinfo-i386.c
@@ -34,6 +34,7 @@  unsigned __attribute__((constructor)) cpuinfo_init(void)
     if (max >= 1) {
         __cpuid(1, a, b, c, d);
 
+        info |= (d & bit_SSE2 ? CPUINFO_SSE2 : 0);
         info |= (c & bit_MOVBE ? CPUINFO_MOVBE : 0);
         info |= (c & bit_POPCNT ? CPUINFO_POPCNT : 0);
         info |= (c & bit_PCLMUL ? CPUINFO_PCLMUL : 0);