mirror of
https://github.com/google/cpu_features.git
synced 2025-04-27 15:12:30 +02:00
Add AVX_VNNI
This commit is contained in:
parent
cbc8f9c7a3
commit
c6b0a803a8
@ -60,6 +60,7 @@ typedef struct {
|
||||
int sse4a : 1;
|
||||
|
||||
int avx : 1;
|
||||
int avx_vnni : 1;
|
||||
int avx2 : 1;
|
||||
|
||||
int avx512f : 1;
|
||||
@ -215,6 +216,7 @@ typedef enum {
|
||||
X86_SSE4_2,
|
||||
X86_SSE4A,
|
||||
X86_AVX,
|
||||
X86_AVX_VNNI,
|
||||
X86_AVX2,
|
||||
X86_AVX512F,
|
||||
X86_AVX512CD,
|
||||
|
@ -342,6 +342,7 @@ static void ParseCpuId(const Leaves* leaves, X86Info* info,
|
||||
if (os_preserves->avx_registers) {
|
||||
features->fma3 = IsBitSet(leaf_1.ecx, 12);
|
||||
features->avx = IsBitSet(leaf_1.ecx, 28);
|
||||
features->avx_vnni = IsBitSet(leaf_7_1.eax, 4);
|
||||
features->avx2 = IsBitSet(leaf_7.ebx, 5);
|
||||
}
|
||||
if (os_preserves->avx512_registers) {
|
||||
@ -1729,6 +1730,7 @@ CacheInfo GetX86CacheInfo(void) {
|
||||
LINE(X86_SSE4_2, sse4_2, , , ) \
|
||||
LINE(X86_SSE4A, sse4a, , , ) \
|
||||
LINE(X86_AVX, avx, , , ) \
|
||||
LINE(X86_AVX_VNNI, avx_vnni, , , ) \
|
||||
LINE(X86_AVX2, avx2, , , ) \
|
||||
LINE(X86_AVX512F, avx512f, , , ) \
|
||||
LINE(X86_AVX512CD, avx512cd, , , ) \
|
||||
|
@ -828,6 +828,24 @@ TEST_F(CpuidX86Test, AMD_K18_ZEN_DHYANA_OCTAL_CORE_C86_3250) {
|
||||
EXPECT_EQ(GetX86Microarchitecture(&info), X86Microarchitecture::AMD_ZEN);
|
||||
}
|
||||
|
||||
// http://users.atw.hu/instlatx64/GenuineIntel/GenuineIntel00906A4_AlderLakeP_00_CPUID.txt
|
||||
TEST_F(CpuidX86Test, INTEL_ALDER_LAKE_AVX_VNNI) {
|
||||
cpu().SetOsBackupsExtendedRegisters(true);
|
||||
cpu().SetLeaves({
|
||||
{{0x00000000, 0}, Leaf{0x00000020, 0x756E6547, 0x6C65746E, 0x49656E69}},
|
||||
{{0x00000001, 0}, Leaf{0x000906A4, 0x00400800, 0x7FFAFBBF, 0xBFEBFBFF}},
|
||||
{{0x00000007, 0}, Leaf{0x00000001, 0x239CA7EB, 0x984007AC, 0xFC18C410}},
|
||||
{{0x00000007, 1}, Leaf{0x00400810, 0x00000000, 0x00000000, 0x00000000}},
|
||||
});
|
||||
const auto info = GetX86Info();
|
||||
|
||||
EXPECT_STREQ(info.vendor, CPU_FEATURES_VENDOR_GENUINE_INTEL);
|
||||
EXPECT_EQ(info.family, 0x06);
|
||||
EXPECT_EQ(info.model, 0x9A);
|
||||
EXPECT_TRUE(info.features.avx_vnni);
|
||||
EXPECT_EQ(GetX86Microarchitecture(&info), X86Microarchitecture::INTEL_ADL);
|
||||
}
|
||||
|
||||
// https://github.com/InstLatx64/InstLatx64/blob/master/GenuineIntel/GenuineIntel00106A1_Nehalem_CPUID.txt
|
||||
TEST_F(CpuidX86Test, Nehalem) {
|
||||
// Pre AVX cpus don't have xsave
|
||||
|
Loading…
x
Reference in New Issue
Block a user