[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 46/49] target/i386: add CPUID.24 features for AVX10
From: |
Paolo Bonzini |
Subject: |
[PULL 46/49] target/i386: add CPUID.24 features for AVX10 |
Date: |
Thu, 31 Oct 2024 18:52:10 +0100 |
From: Tao Su <tao1.su@linux.intel.com>
Introduce features for the supported vector bit lengths.
Signed-off-by: Tao Su <tao1.su@linux.intel.com>
Link: 20241028024512.156724-3-tao1.su@linux.intel.com">https://lore.kernel.org/r/20241028024512.156724-3-tao1.su@linux.intel.com
Link: 20241028024512.156724-4-tao1.su@linux.intel.com">https://lore.kernel.org/r/20241028024512.156724-4-tao1.su@linux.intel.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Tested-by: Xuelian Guo <xuelian.guo@intel.com>
Link: 20241031085233.425388-6-tao1.su@linux.intel.com">https://lore.kernel.org/r/20241031085233.425388-6-tao1.su@linux.intel.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
target/i386/cpu.h | 8 ++++++++
target/i386/cpu.c | 15 +++++++++++++++
2 files changed, 23 insertions(+)
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
index 72e98b25114..f8f97fe9330 100644
--- a/target/i386/cpu.h
+++ b/target/i386/cpu.h
@@ -665,6 +665,7 @@ typedef enum FeatureWord {
FEAT_XSAVE_XSS_HI, /* CPUID[EAX=0xd,ECX=1].EDX */
FEAT_7_1_EDX, /* CPUID[EAX=7,ECX=1].EDX */
FEAT_7_2_EDX, /* CPUID[EAX=7,ECX=2].EDX */
+ FEAT_24_0_EBX, /* CPUID[EAX=0x24,ECX=0].EBX */
FEATURE_WORDS,
} FeatureWord;
@@ -993,6 +994,13 @@ uint64_t x86_cpu_get_supported_feature_word(X86CPU *cpu,
FeatureWord w);
/* Packets which contain IP payload have LIP values */
#define CPUID_14_0_ECX_LIP (1U << 31)
+/* AVX10 128-bit vector support is present */
+#define CPUID_24_0_EBX_AVX10_128 (1U << 16)
+/* AVX10 256-bit vector support is present */
+#define CPUID_24_0_EBX_AVX10_256 (1U << 17)
+/* AVX10 512-bit vector support is present */
+#define CPUID_24_0_EBX_AVX10_512 (1U << 18)
+
/* RAS Features */
#define CPUID_8000_0007_EBX_OVERFLOW_RECOV (1U << 0)
#define CPUID_8000_0007_EBX_SUCCOR (1U << 1)
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 681c04e056e..3731155c2d5 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -901,6 +901,7 @@ void x86_cpu_vendor_words2str(char *dst, uint32_t vendor1,
#define TCG_SGX_12_0_EAX_FEATURES 0
#define TCG_SGX_12_0_EBX_FEATURES 0
#define TCG_SGX_12_1_EAX_FEATURES 0
+#define TCG_24_0_EBX_FEATURES 0
#if defined CONFIG_USER_ONLY
#define CPUID_8000_0008_EBX_KERNEL_FEATURES (CPUID_8000_0008_EBX_IBPB | \
@@ -1166,6 +1167,20 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
},
.tcg_features = TCG_7_2_EDX_FEATURES,
},
+ [FEAT_24_0_EBX] = {
+ .type = CPUID_FEATURE_WORD,
+ .feat_names = {
+ [16] = "avx10-128",
+ [17] = "avx10-256",
+ [18] = "avx10-512",
+ },
+ .cpuid = {
+ .eax = 0x24,
+ .needs_ecx = true, .ecx = 0,
+ .reg = R_EBX,
+ },
+ .tcg_features = TCG_24_0_EBX_FEATURES,
+ },
[FEAT_8000_0007_EDX] = {
.type = CPUID_FEATURE_WORD,
.feat_names = {
--
2.47.0
- [PULL 38/49] target/i386: make flag variables unsigned, (continued)
- [PULL 38/49] target/i386: make flag variables unsigned, Paolo Bonzini, 2024/10/31
- [PULL 40/49] target/i386: use higher-precision arithmetic to compute CF, Paolo Bonzini, 2024/10/31
- [PULL 48/49] target/i386: Add AVX512 state when AVX10 is supported, Paolo Bonzini, 2024/10/31
- [PULL 29/49] target/i386: Tidy cc_op_str usage, Paolo Bonzini, 2024/10/31
- [PULL 32/49] target/i386: Introduce cc_op_size, Paolo Bonzini, 2024/10/31
- [PULL 41/49] target/i386: use + to put flags together, Paolo Bonzini, 2024/10/31
- [PULL 33/49] target/i386: Wrap cc_op_live with a validity check, Paolo Bonzini, 2024/10/31
- [PULL 37/49] target/i386: add a note about gen_jcc1, Paolo Bonzini, 2024/10/31
- [PULL 43/49] target/i386: do not rely on ExtSaveArea for accelerator-supported XCR0 bits, Paolo Bonzini, 2024/10/31
- [PULL 44/49] target/i386: return bool from x86_cpu_filter_features, Paolo Bonzini, 2024/10/31
- [PULL 46/49] target/i386: add CPUID.24 features for AVX10,
Paolo Bonzini <=
- [PULL 14/49] qom: let object_new use a module if the type is not present, Paolo Bonzini, 2024/10/31