diff options
| author | Richard Henderson <richard.henderson@linaro.org> | 2025-08-05 11:40:31 +1000 |
|---|---|---|
| committer | Richard Henderson <richard.henderson@linaro.org> | 2025-09-04 09:49:23 +0200 |
| commit | b8eb3dd49583729edceb18628e626eac15a15de4 (patch) | |
| tree | f24a34806ca0c8cf21e12067b744654579fcd1ac | |
| parent | 27ea28a0b369b4b14a485a5d6f045e0dc1db4e38 (diff) | |
| download | focaccia-qemu-b8eb3dd49583729edceb18628e626eac15a15de4.tar.gz focaccia-qemu-b8eb3dd49583729edceb18628e626eac15a15de4.zip | |
cpuinfo/i386: Detect GFNI as an AVX extension
We won't use the SSE GFNI instructions, so delay detection until we know AVX is present. Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
| -rw-r--r-- | host/include/i386/host/cpuinfo.h | 1 | ||||
| -rw-r--r-- | include/qemu/cpuid.h | 3 | ||||
| -rw-r--r-- | util/cpuinfo-i386.c | 1 |
3 files changed, 5 insertions, 0 deletions
diff --git a/host/include/i386/host/cpuinfo.h b/host/include/i386/host/cpuinfo.h index 9541a64da6..93d029d499 100644 --- a/host/include/i386/host/cpuinfo.h +++ b/host/include/i386/host/cpuinfo.h @@ -27,6 +27,7 @@ #define CPUINFO_ATOMIC_VMOVDQU (1u << 17) #define CPUINFO_AES (1u << 18) #define CPUINFO_PCLMUL (1u << 19) +#define CPUINFO_GFNI (1u << 20) /* Initialized with a constructor. */ extern unsigned cpuinfo; diff --git a/include/qemu/cpuid.h b/include/qemu/cpuid.h index b11161555b..de7a900509 100644 --- a/include/qemu/cpuid.h +++ b/include/qemu/cpuid.h @@ -68,6 +68,9 @@ #ifndef bit_AVX512VBMI2 #define bit_AVX512VBMI2 (1 << 6) #endif +#ifndef bit_GFNI +#define bit_GFNI (1 << 8) +#endif /* Leaf 0x80000001, %ecx */ #ifndef bit_LZCNT diff --git a/util/cpuinfo-i386.c b/util/cpuinfo-i386.c index c8c8a1b370..f4c5b6ff40 100644 --- a/util/cpuinfo-i386.c +++ b/util/cpuinfo-i386.c @@ -50,6 +50,7 @@ unsigned __attribute__((constructor)) cpuinfo_init(void) if ((bv & 6) == 6) { info |= CPUINFO_AVX1; info |= (b7 & bit_AVX2 ? CPUINFO_AVX2 : 0); + info |= (c7 & bit_GFNI ? CPUINFO_GFNI : 0); if ((bv & 0xe0) == 0xe0) { info |= (b7 & bit_AVX512F ? CPUINFO_AVX512F : 0); |