Blob Blame History Raw
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