libvirt/SOURCES/libvirt-cputest-Test-CPU-si...

756 lines
26 KiB
Diff

From 58b7dda3dda6a768f465f2b8782ef665bd0d7f72 Mon Sep 17 00:00:00 2001
Message-Id: <58b7dda3dda6a768f465f2b8782ef665bd0d7f72@dist-git>
From: Jiri Denemark <jdenemar@redhat.com>
Date: Fri, 21 Jun 2019 09:25:08 +0200
Subject: [PATCH] cputest: Test CPU signatures
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The signature computation code is not too complicated and it will likely
never change so testing it is not very important. We do it mostly for a
nice side effect of easily accessible signature numbers for all CPU
data files.
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
(cherry picked from commit dd08d27fc205c86961b6d957fbb92da5aead5d1b)
https://bugzilla.redhat.com/show_bug.cgi?id=1686895
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Message-Id: <24fc3fddd709251f12a12589605c76634af8fb1b.1561068591.git.jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
---
tests/cputest.c | 86 +++++++++++++++++++
tests/cputestdata/x86_64-cpuid-A10-5800K.sig | 4 +
tests/cputestdata/x86_64-cpuid-Atom-D510.sig | 4 +
tests/cputestdata/x86_64-cpuid-Atom-N450.sig | 4 +
.../cputestdata/x86_64-cpuid-Core-i5-2500.sig | 4 +
.../x86_64-cpuid-Core-i5-2540M.sig | 4 +
.../x86_64-cpuid-Core-i5-4670T.sig | 4 +
.../cputestdata/x86_64-cpuid-Core-i5-650.sig | 4 +
.../cputestdata/x86_64-cpuid-Core-i5-6600.sig | 4 +
.../x86_64-cpuid-Core-i7-2600-xsaveopt.sig | 4 +
.../cputestdata/x86_64-cpuid-Core-i7-2600.sig | 4 +
.../x86_64-cpuid-Core-i7-3520M.sig | 4 +
.../x86_64-cpuid-Core-i7-3740QM.sig | 4 +
.../cputestdata/x86_64-cpuid-Core-i7-3770.sig | 4 +
.../x86_64-cpuid-Core-i7-4510U.sig | 4 +
.../x86_64-cpuid-Core-i7-4600U.sig | 4 +
.../x86_64-cpuid-Core-i7-5600U-arat.sig | 4 +
.../x86_64-cpuid-Core-i7-5600U-ibrs.sig | 4 +
.../x86_64-cpuid-Core-i7-5600U.sig | 4 +
.../x86_64-cpuid-Core-i7-7600U.sig | 4 +
.../cputestdata/x86_64-cpuid-Core-i7-7700.sig | 4 +
.../cputestdata/x86_64-cpuid-Core-i7-8700.sig | 4 +
.../cputestdata/x86_64-cpuid-Core2-E6850.sig | 4 +
.../cputestdata/x86_64-cpuid-Core2-Q9500.sig | 4 +
.../x86_64-cpuid-EPYC-7601-32-Core-ibpb.sig | 4 +
.../x86_64-cpuid-EPYC-7601-32-Core.sig | 4 +
tests/cputestdata/x86_64-cpuid-FX-8150.sig | 4 +
.../cputestdata/x86_64-cpuid-Opteron-1352.sig | 4 +
.../cputestdata/x86_64-cpuid-Opteron-2350.sig | 4 +
.../cputestdata/x86_64-cpuid-Opteron-6234.sig | 4 +
.../cputestdata/x86_64-cpuid-Opteron-6282.sig | 4 +
.../x86_64-cpuid-Pentium-P6100.sig | 4 +
tests/cputestdata/x86_64-cpuid-Phenom-B95.sig | 4 +
.../x86_64-cpuid-Ryzen-7-1800X-Eight-Core.sig | 4 +
tests/cputestdata/x86_64-cpuid-Xeon-5110.sig | 4 +
.../x86_64-cpuid-Xeon-E3-1245-v5.sig | 4 +
.../x86_64-cpuid-Xeon-E5-2609-v3.sig | 4 +
.../x86_64-cpuid-Xeon-E5-2623-v4.sig | 4 +
.../x86_64-cpuid-Xeon-E5-2630-v3.sig | 4 +
.../x86_64-cpuid-Xeon-E5-2630-v4.sig | 4 +
.../x86_64-cpuid-Xeon-E5-2650-v3.sig | 4 +
.../x86_64-cpuid-Xeon-E5-2650-v4.sig | 4 +
.../cputestdata/x86_64-cpuid-Xeon-E5-2650.sig | 4 +
.../cputestdata/x86_64-cpuid-Xeon-E7-4820.sig | 4 +
.../cputestdata/x86_64-cpuid-Xeon-E7-4830.sig | 4 +
.../x86_64-cpuid-Xeon-E7-8890-v3.sig | 4 +
tests/cputestdata/x86_64-cpuid-Xeon-E7540.sig | 4 +
.../x86_64-cpuid-Xeon-Gold-5115.sig | 4 +
.../x86_64-cpuid-Xeon-Gold-6148.sig | 4 +
tests/cputestdata/x86_64-cpuid-Xeon-W3520.sig | 4 +
tests/cputestdata/x86_64-cpuid-Xeon-X5460.sig | 4 +
51 files changed, 286 insertions(+)
create mode 100644 tests/cputestdata/x86_64-cpuid-A10-5800K.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Atom-D510.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Atom-N450.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i5-2500.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i5-2540M.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i5-4670T.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i5-650.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i5-6600.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-2600.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-3520M.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-3740QM.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-3770.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-4510U.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-4600U.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-5600U-arat.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-5600U-ibrs.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-5600U.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-7600U.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-7700.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core-i7-8700.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core2-E6850.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Core2-Q9500.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-FX-8150.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Opteron-1352.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Opteron-2350.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Opteron-6234.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Opteron-6282.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Pentium-P6100.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Phenom-B95.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-5110.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E3-1245-v5.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2609-v3.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2623-v4.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2630-v3.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2630-v4.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2650-v3.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2650-v4.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E5-2650.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4820.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-4830.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7-8890-v3.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-E7540.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-Gold-5115.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-Gold-6148.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-W3520.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Xeon-X5460.sig
diff --git a/tests/cputest.c b/tests/cputest.c
index 9e5f807823..0cb9a57592 100644
--- a/tests/cputest.c
+++ b/tests/cputest.c
@@ -37,6 +37,7 @@
#include "testutils.h"
#include "cpu_conf.h"
#include "cpu/cpu.h"
+#include "cpu/cpu_x86.h"
#include "cpu/cpu_map.h"
#include "virstring.h"
@@ -648,6 +649,62 @@ cpuTestGuestCPUID(const void *arg)
}
+static int
+cpuTestCompareSignature(const struct data *data,
+ virCPUDataPtr hostData)
+{
+ VIR_AUTOFREE(char *) result = NULL;
+ VIR_AUTOFREE(char *) sigStr = NULL;
+ unsigned long signature;
+ unsigned int family;
+ unsigned int model;
+ unsigned int stepping;
+
+ signature = virCPUx86DataGetSignature(hostData, &family, &model, &stepping);
+
+ if (virAsprintf(&result, "%s/cputestdata/%s-cpuid-%s.sig",
+ abs_srcdir, virArchToString(data->arch), data->host) < 0)
+ return -1;
+
+ if (virAsprintf(&sigStr,
+ "%1$06lx\n"
+ "family: %2$3u (0x%2$02x)\n"
+ "model: %3$3u (0x%3$02x)\n"
+ "stepping: %4$3u (0x%4$02x)\n",
+ signature, family, model, stepping) < 0)
+ return -1;
+
+ return virTestCompareToFile(sigStr, result);
+}
+
+
+static int
+cpuTestCPUIDSignature(const void *arg)
+{
+ const struct data *data = arg;
+ virCPUDataPtr hostData = NULL;
+ char *hostFile = NULL;
+ char *host = NULL;
+ int ret = -1;
+
+ if (virAsprintf(&hostFile, "%s/cputestdata/%s-cpuid-%s.xml",
+ abs_srcdir, virArchToString(data->arch), data->host) < 0)
+ goto cleanup;
+
+ if (virTestLoadFile(hostFile, &host) < 0 ||
+ !(hostData = virCPUDataParse(host)))
+ goto cleanup;
+
+ ret = cpuTestCompareSignature(data, hostData);
+
+ cleanup:
+ virCPUDataFree(hostData);
+ VIR_FREE(hostFile);
+ VIR_FREE(host);
+ return ret;
+}
+
+
static int
cpuTestUpdateLiveCompare(virArch arch,
virCPUDefPtr actual,
@@ -869,6 +926,31 @@ cpuTestJSONCPUID(const void *arg)
VIR_FREE(result);
return ret;
}
+
+
+static int
+cpuTestJSONSignature(const void *arg)
+{
+ const struct data *data = arg;
+ virQEMUCapsPtr qemuCaps = NULL;
+ virCPUDataPtr hostData = NULL;
+ qemuMonitorCPUModelInfoPtr modelInfo;
+ int ret = -1;
+
+ if (!(qemuCaps = cpuTestMakeQEMUCaps(data)))
+ goto cleanup;
+
+ modelInfo = virQEMUCapsGetCPUModelInfo(qemuCaps, VIR_DOMAIN_VIRT_KVM);
+ if (!(hostData = virQEMUCapsGetCPUModelX86Data(modelInfo, false)))
+ goto cleanup;
+
+ ret = cpuTestCompareSignature(data, hostData);
+
+ cleanup:
+ virObjectUnref(qemuCaps);
+ virCPUDataFree(hostData);
+ return ret;
+}
#endif
@@ -1014,6 +1096,8 @@ mymain(void)
if (json != JSON_NONE) { \
DO_TEST(arch, cpuTestJSONCPUID, host, host, \
NULL, NULL, json, 0); \
+ DO_TEST(arch, cpuTestJSONSignature, host, host, \
+ NULL, NULL, 0, 0); \
} \
} while (0)
#else
@@ -1026,6 +1110,8 @@ mymain(void)
NULL, NULL, 0, 0); \
DO_TEST(arch, cpuTestGuestCPUID, host, host, \
NULL, NULL, json, 0); \
+ DO_TEST(arch, cpuTestCPUIDSignature, host, host, \
+ NULL, NULL, 0, 0); \
DO_TEST_JSON(arch, host, json); \
if (json != JSON_NONE) { \
DO_TEST(arch, cpuTestUpdateLive, host, host, \
diff --git a/tests/cputestdata/x86_64-cpuid-A10-5800K.sig b/tests/cputestdata/x86_64-cpuid-A10-5800K.sig
new file mode 100644
index 0000000000..8045eda561
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-A10-5800K.sig
@@ -0,0 +1,4 @@
+610f01
+family: 21 (0x15)
+model: 16 (0x10)
+stepping: 1 (0x01)
diff --git a/tests/cputestdata/x86_64-cpuid-Atom-D510.sig b/tests/cputestdata/x86_64-cpuid-Atom-D510.sig
new file mode 100644
index 0000000000..d22d28ff8a
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Atom-D510.sig
@@ -0,0 +1,4 @@
+0106ca
+family: 6 (0x06)
+model: 28 (0x1c)
+stepping: 10 (0x0a)
diff --git a/tests/cputestdata/x86_64-cpuid-Atom-N450.sig b/tests/cputestdata/x86_64-cpuid-Atom-N450.sig
new file mode 100644
index 0000000000..d22d28ff8a
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Atom-N450.sig
@@ -0,0 +1,4 @@
+0106ca
+family: 6 (0x06)
+model: 28 (0x1c)
+stepping: 10 (0x0a)
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i5-2500.sig b/tests/cputestdata/x86_64-cpuid-Core-i5-2500.sig
new file mode 100644
index 0000000000..9b113c3798
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Core-i5-2500.sig
@@ -0,0 +1,4 @@
+0206a7
+family: 6 (0x06)
+model: 42 (0x2a)
+stepping: 7 (0x07)
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i5-2540M.sig b/tests/cputestdata/x86_64-cpuid-Core-i5-2540M.sig
new file mode 100644
index 0000000000..9b113c3798
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Core-i5-2540M.sig
@@ -0,0 +1,4 @@
+0206a7
+family: 6 (0x06)
+model: 42 (0x2a)
+stepping: 7 (0x07)
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i5-4670T.sig b/tests/cputestdata/x86_64-cpuid-Core-i5-4670T.sig
new file mode 100644
index 0000000000..e2fb6c5dd2
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Core-i5-4670T.sig
@@ -0,0 +1,4 @@
+0306c3
+family: 6 (0x06)
+model: 60 (0x3c)
+stepping: 3 (0x03)
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i5-650.sig b/tests/cputestdata/x86_64-cpuid-Core-i5-650.sig
new file mode 100644
index 0000000000..fc7c566de5
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Core-i5-650.sig
@@ -0,0 +1,4 @@
+020652
+family: 6 (0x06)
+model: 37 (0x25)
+stepping: 2 (0x02)
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i5-6600.sig b/tests/cputestdata/x86_64-cpuid-Core-i5-6600.sig
new file mode 100644
index 0000000000..7e57c2ded6
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Core-i5-6600.sig
@@ -0,0 +1,4 @@
+0506e3
+family: 6 (0x06)
+model: 94 (0x5e)
+stepping: 3 (0x03)
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt.sig b/tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt.sig
new file mode 100644
index 0000000000..9b113c3798
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-2600-xsaveopt.sig
@@ -0,0 +1,4 @@
+0206a7
+family: 6 (0x06)
+model: 42 (0x2a)
+stepping: 7 (0x07)
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-2600.sig b/tests/cputestdata/x86_64-cpuid-Core-i7-2600.sig
new file mode 100644
index 0000000000..9b113c3798
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-2600.sig
@@ -0,0 +1,4 @@
+0206a7
+family: 6 (0x06)
+model: 42 (0x2a)
+stepping: 7 (0x07)
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-3520M.sig b/tests/cputestdata/x86_64-cpuid-Core-i7-3520M.sig
new file mode 100644
index 0000000000..9c6ea10a83
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-3520M.sig
@@ -0,0 +1,4 @@
+0306a9
+family: 6 (0x06)
+model: 58 (0x3a)
+stepping: 9 (0x09)
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-3740QM.sig b/tests/cputestdata/x86_64-cpuid-Core-i7-3740QM.sig
new file mode 100644
index 0000000000..9c6ea10a83
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-3740QM.sig
@@ -0,0 +1,4 @@
+0306a9
+family: 6 (0x06)
+model: 58 (0x3a)
+stepping: 9 (0x09)
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-3770.sig b/tests/cputestdata/x86_64-cpuid-Core-i7-3770.sig
new file mode 100644
index 0000000000..9c6ea10a83
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-3770.sig
@@ -0,0 +1,4 @@
+0306a9
+family: 6 (0x06)
+model: 58 (0x3a)
+stepping: 9 (0x09)
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-4510U.sig b/tests/cputestdata/x86_64-cpuid-Core-i7-4510U.sig
new file mode 100644
index 0000000000..fd6726a3da
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-4510U.sig
@@ -0,0 +1,4 @@
+040651
+family: 6 (0x06)
+model: 69 (0x45)
+stepping: 1 (0x01)
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-4600U.sig b/tests/cputestdata/x86_64-cpuid-Core-i7-4600U.sig
new file mode 100644
index 0000000000..fd6726a3da
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-4600U.sig
@@ -0,0 +1,4 @@
+040651
+family: 6 (0x06)
+model: 69 (0x45)
+stepping: 1 (0x01)
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-5600U-arat.sig b/tests/cputestdata/x86_64-cpuid-Core-i7-5600U-arat.sig
new file mode 100644
index 0000000000..dd18d0f76d
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-5600U-arat.sig
@@ -0,0 +1,4 @@
+0306d4
+family: 6 (0x06)
+model: 61 (0x3d)
+stepping: 4 (0x04)
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-5600U-ibrs.sig b/tests/cputestdata/x86_64-cpuid-Core-i7-5600U-ibrs.sig
new file mode 100644
index 0000000000..dd18d0f76d
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-5600U-ibrs.sig
@@ -0,0 +1,4 @@
+0306d4
+family: 6 (0x06)
+model: 61 (0x3d)
+stepping: 4 (0x04)
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-5600U.sig b/tests/cputestdata/x86_64-cpuid-Core-i7-5600U.sig
new file mode 100644
index 0000000000..dd18d0f76d
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-5600U.sig
@@ -0,0 +1,4 @@
+0306d4
+family: 6 (0x06)
+model: 61 (0x3d)
+stepping: 4 (0x04)
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-7600U.sig b/tests/cputestdata/x86_64-cpuid-Core-i7-7600U.sig
new file mode 100644
index 0000000000..8f757722bb
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-7600U.sig
@@ -0,0 +1,4 @@
+0806e9
+family: 6 (0x06)
+model: 142 (0x8e)
+stepping: 9 (0x09)
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-7700.sig b/tests/cputestdata/x86_64-cpuid-Core-i7-7700.sig
new file mode 100644
index 0000000000..d4db84a618
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-7700.sig
@@ -0,0 +1,4 @@
+0906e9
+family: 6 (0x06)
+model: 158 (0x9e)
+stepping: 9 (0x09)
diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-8700.sig b/tests/cputestdata/x86_64-cpuid-Core-i7-8700.sig
new file mode 100644
index 0000000000..45d6ea29d0
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-8700.sig
@@ -0,0 +1,4 @@
+0906ea
+family: 6 (0x06)
+model: 158 (0x9e)
+stepping: 10 (0x0a)
diff --git a/tests/cputestdata/x86_64-cpuid-Core2-E6850.sig b/tests/cputestdata/x86_64-cpuid-Core2-E6850.sig
new file mode 100644
index 0000000000..2382914bc7
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Core2-E6850.sig
@@ -0,0 +1,4 @@
+0006fb
+family: 6 (0x06)
+model: 15 (0x0f)
+stepping: 11 (0x0b)
diff --git a/tests/cputestdata/x86_64-cpuid-Core2-Q9500.sig b/tests/cputestdata/x86_64-cpuid-Core2-Q9500.sig
new file mode 100644
index 0000000000..9aec5927d0
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Core2-Q9500.sig
@@ -0,0 +1,4 @@
+01067a
+family: 6 (0x06)
+model: 23 (0x17)
+stepping: 10 (0x0a)
diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb.sig b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb.sig
new file mode 100644
index 0000000000..8fe15b7991
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb.sig
@@ -0,0 +1,4 @@
+800f12
+family: 23 (0x17)
+model: 1 (0x01)
+stepping: 2 (0x02)
diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core.sig b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core.sig
new file mode 100644
index 0000000000..8fe15b7991
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core.sig
@@ -0,0 +1,4 @@
+800f12
+family: 23 (0x17)
+model: 1 (0x01)
+stepping: 2 (0x02)
diff --git a/tests/cputestdata/x86_64-cpuid-FX-8150.sig b/tests/cputestdata/x86_64-cpuid-FX-8150.sig
new file mode 100644
index 0000000000..4b6440a315
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-FX-8150.sig
@@ -0,0 +1,4 @@
+600f12
+family: 21 (0x15)
+model: 1 (0x01)
+stepping: 2 (0x02)
diff --git a/tests/cputestdata/x86_64-cpuid-Opteron-1352.sig b/tests/cputestdata/x86_64-cpuid-Opteron-1352.sig
new file mode 100644
index 0000000000..d21535b4b9
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Opteron-1352.sig
@@ -0,0 +1,4 @@
+100f23
+family: 16 (0x10)
+model: 2 (0x02)
+stepping: 3 (0x03)
diff --git a/tests/cputestdata/x86_64-cpuid-Opteron-2350.sig b/tests/cputestdata/x86_64-cpuid-Opteron-2350.sig
new file mode 100644
index 0000000000..d21535b4b9
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Opteron-2350.sig
@@ -0,0 +1,4 @@
+100f23
+family: 16 (0x10)
+model: 2 (0x02)
+stepping: 3 (0x03)
diff --git a/tests/cputestdata/x86_64-cpuid-Opteron-6234.sig b/tests/cputestdata/x86_64-cpuid-Opteron-6234.sig
new file mode 100644
index 0000000000..4b6440a315
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Opteron-6234.sig
@@ -0,0 +1,4 @@
+600f12
+family: 21 (0x15)
+model: 1 (0x01)
+stepping: 2 (0x02)
diff --git a/tests/cputestdata/x86_64-cpuid-Opteron-6282.sig b/tests/cputestdata/x86_64-cpuid-Opteron-6282.sig
new file mode 100644
index 0000000000..4b6440a315
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Opteron-6282.sig
@@ -0,0 +1,4 @@
+600f12
+family: 21 (0x15)
+model: 1 (0x01)
+stepping: 2 (0x02)
diff --git a/tests/cputestdata/x86_64-cpuid-Pentium-P6100.sig b/tests/cputestdata/x86_64-cpuid-Pentium-P6100.sig
new file mode 100644
index 0000000000..8712d34023
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Pentium-P6100.sig
@@ -0,0 +1,4 @@
+020655
+family: 6 (0x06)
+model: 37 (0x25)
+stepping: 5 (0x05)
diff --git a/tests/cputestdata/x86_64-cpuid-Phenom-B95.sig b/tests/cputestdata/x86_64-cpuid-Phenom-B95.sig
new file mode 100644
index 0000000000..c93dbebc45
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Phenom-B95.sig
@@ -0,0 +1,4 @@
+100f42
+family: 16 (0x10)
+model: 4 (0x04)
+stepping: 2 (0x02)
diff --git a/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core.sig b/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core.sig
new file mode 100644
index 0000000000..031bb84902
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core.sig
@@ -0,0 +1,4 @@
+800f11
+family: 23 (0x17)
+model: 1 (0x01)
+stepping: 1 (0x01)
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-5110.sig b/tests/cputestdata/x86_64-cpuid-Xeon-5110.sig
new file mode 100644
index 0000000000..15f8400ca6
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-5110.sig
@@ -0,0 +1,4 @@
+0006f6
+family: 6 (0x06)
+model: 15 (0x0f)
+stepping: 6 (0x06)
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1245-v5.sig b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1245-v5.sig
new file mode 100644
index 0000000000..7e57c2ded6
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1245-v5.sig
@@ -0,0 +1,4 @@
+0506e3
+family: 6 (0x06)
+model: 94 (0x5e)
+stepping: 3 (0x03)
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E5-2609-v3.sig b/tests/cputestdata/x86_64-cpuid-Xeon-E5-2609-v3.sig
new file mode 100644
index 0000000000..2c548c9934
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-E5-2609-v3.sig
@@ -0,0 +1,4 @@
+0306f2
+family: 6 (0x06)
+model: 63 (0x3f)
+stepping: 2 (0x02)
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E5-2623-v4.sig b/tests/cputestdata/x86_64-cpuid-Xeon-E5-2623-v4.sig
new file mode 100644
index 0000000000..4d1622a8ef
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-E5-2623-v4.sig
@@ -0,0 +1,4 @@
+0406f1
+family: 6 (0x06)
+model: 79 (0x4f)
+stepping: 1 (0x01)
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E5-2630-v3.sig b/tests/cputestdata/x86_64-cpuid-Xeon-E5-2630-v3.sig
new file mode 100644
index 0000000000..2c548c9934
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-E5-2630-v3.sig
@@ -0,0 +1,4 @@
+0306f2
+family: 6 (0x06)
+model: 63 (0x3f)
+stepping: 2 (0x02)
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E5-2630-v4.sig b/tests/cputestdata/x86_64-cpuid-Xeon-E5-2630-v4.sig
new file mode 100644
index 0000000000..4d1622a8ef
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-E5-2630-v4.sig
@@ -0,0 +1,4 @@
+0406f1
+family: 6 (0x06)
+model: 79 (0x4f)
+stepping: 1 (0x01)
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E5-2650-v3.sig b/tests/cputestdata/x86_64-cpuid-Xeon-E5-2650-v3.sig
new file mode 100644
index 0000000000..2c548c9934
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-E5-2650-v3.sig
@@ -0,0 +1,4 @@
+0306f2
+family: 6 (0x06)
+model: 63 (0x3f)
+stepping: 2 (0x02)
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E5-2650-v4.sig b/tests/cputestdata/x86_64-cpuid-Xeon-E5-2650-v4.sig
new file mode 100644
index 0000000000..4d1622a8ef
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-E5-2650-v4.sig
@@ -0,0 +1,4 @@
+0406f1
+family: 6 (0x06)
+model: 79 (0x4f)
+stepping: 1 (0x01)
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E5-2650.sig b/tests/cputestdata/x86_64-cpuid-Xeon-E5-2650.sig
new file mode 100644
index 0000000000..d6493fe186
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-E5-2650.sig
@@ -0,0 +1,4 @@
+0206d7
+family: 6 (0x06)
+model: 45 (0x2d)
+stepping: 7 (0x07)
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E7-4820.sig b/tests/cputestdata/x86_64-cpuid-Xeon-E7-4820.sig
new file mode 100644
index 0000000000..8738e95e41
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-E7-4820.sig
@@ -0,0 +1,4 @@
+0206f2
+family: 6 (0x06)
+model: 47 (0x2f)
+stepping: 2 (0x02)
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E7-4830.sig b/tests/cputestdata/x86_64-cpuid-Xeon-E7-4830.sig
new file mode 100644
index 0000000000..8738e95e41
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-E7-4830.sig
@@ -0,0 +1,4 @@
+0206f2
+family: 6 (0x06)
+model: 47 (0x2f)
+stepping: 2 (0x02)
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E7-8890-v3.sig b/tests/cputestdata/x86_64-cpuid-Xeon-E7-8890-v3.sig
new file mode 100644
index 0000000000..8fb489fac9
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-E7-8890-v3.sig
@@ -0,0 +1,4 @@
+0306f4
+family: 6 (0x06)
+model: 63 (0x3f)
+stepping: 4 (0x04)
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E7540.sig b/tests/cputestdata/x86_64-cpuid-Xeon-E7540.sig
new file mode 100644
index 0000000000..afc150cf82
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-E7540.sig
@@ -0,0 +1,4 @@
+0206e6
+family: 6 (0x06)
+model: 46 (0x2e)
+stepping: 6 (0x06)
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-5115.sig b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-5115.sig
new file mode 100644
index 0000000000..1a3f3449f0
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-5115.sig
@@ -0,0 +1,4 @@
+050654
+family: 6 (0x06)
+model: 85 (0x55)
+stepping: 4 (0x04)
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6148.sig b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6148.sig
new file mode 100644
index 0000000000..1a3f3449f0
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6148.sig
@@ -0,0 +1,4 @@
+050654
+family: 6 (0x06)
+model: 85 (0x55)
+stepping: 4 (0x04)
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-W3520.sig b/tests/cputestdata/x86_64-cpuid-Xeon-W3520.sig
new file mode 100644
index 0000000000..4b641ba966
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-W3520.sig
@@ -0,0 +1,4 @@
+0106a5
+family: 6 (0x06)
+model: 26 (0x1a)
+stepping: 5 (0x05)
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-X5460.sig b/tests/cputestdata/x86_64-cpuid-Xeon-X5460.sig
new file mode 100644
index 0000000000..e17253472f
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-X5460.sig
@@ -0,0 +1,4 @@
+010676
+family: 6 (0x06)
+model: 23 (0x17)
+stepping: 6 (0x06)
--
2.22.0