summaryrefslogtreecommitdiff
path: root/src/common/telemetry.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/telemetry.cpp')
-rw-r--r--src/common/telemetry.cpp61
1 files changed, 44 insertions, 17 deletions
diff --git a/src/common/telemetry.cpp b/src/common/telemetry.cpp
index 6241d08b3..67261c55b 100644
--- a/src/common/telemetry.cpp
+++ b/src/common/telemetry.cpp
@@ -4,7 +4,6 @@
4 4
5#include <algorithm> 5#include <algorithm>
6#include <cstring> 6#include <cstring>
7#include "common/assert.h"
8#include "common/scm_rev.h" 7#include "common/scm_rev.h"
9#include "common/telemetry.h" 8#include "common/telemetry.h"
10 9
@@ -55,22 +54,50 @@ void AppendBuildInfo(FieldCollection& fc) {
55 54
56void AppendCPUInfo(FieldCollection& fc) { 55void AppendCPUInfo(FieldCollection& fc) {
57#ifdef ARCHITECTURE_x86_64 56#ifdef ARCHITECTURE_x86_64
58 fc.AddField(FieldType::UserSystem, "CPU_Model", Common::GetCPUCaps().cpu_string); 57
59 fc.AddField(FieldType::UserSystem, "CPU_BrandString", Common::GetCPUCaps().brand_string); 58 const auto& caps = Common::GetCPUCaps();
60 fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AES", Common::GetCPUCaps().aes); 59 const auto add_field = [&fc](std::string_view field_name, const auto& field_value) {
61 fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AVX", Common::GetCPUCaps().avx); 60 fc.AddField(FieldType::UserSystem, field_name, field_value);
62 fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AVX2", Common::GetCPUCaps().avx2); 61 };
63 fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AVX512", Common::GetCPUCaps().avx512); 62 add_field("CPU_Model", caps.cpu_string);
64 fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_BMI1", Common::GetCPUCaps().bmi1); 63 add_field("CPU_BrandString", caps.brand_string);
65 fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_BMI2", Common::GetCPUCaps().bmi2); 64
66 fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_FMA", Common::GetCPUCaps().fma); 65 add_field("CPU_Extension_x64_SSE", caps.sse);
67 fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_FMA4", Common::GetCPUCaps().fma4); 66 add_field("CPU_Extension_x64_SSE2", caps.sse2);
68 fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSE", Common::GetCPUCaps().sse); 67 add_field("CPU_Extension_x64_SSE3", caps.sse3);
69 fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSE2", Common::GetCPUCaps().sse2); 68 add_field("CPU_Extension_x64_SSSE3", caps.ssse3);
70 fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSE3", Common::GetCPUCaps().sse3); 69 add_field("CPU_Extension_x64_SSE41", caps.sse4_1);
71 fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSSE3", Common::GetCPUCaps().ssse3); 70 add_field("CPU_Extension_x64_SSE42", caps.sse4_2);
72 fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSE41", Common::GetCPUCaps().sse4_1); 71
73 fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSE42", Common::GetCPUCaps().sse4_2); 72 add_field("CPU_Extension_x64_AVX", caps.avx);
73 add_field("CPU_Extension_x64_AVX_VNNI", caps.avx_vnni);
74 add_field("CPU_Extension_x64_AVX2", caps.avx2);
75
76 // Skylake-X/SP level AVX512, for compatibility with the previous telemetry field
77 add_field("CPU_Extension_x64_AVX512",
78 caps.avx512f && caps.avx512cd && caps.avx512vl && caps.avx512dq && caps.avx512bw);
79
80 add_field("CPU_Extension_x64_AVX512F", caps.avx512f);
81 add_field("CPU_Extension_x64_AVX512CD", caps.avx512cd);
82 add_field("CPU_Extension_x64_AVX512VL", caps.avx512vl);
83 add_field("CPU_Extension_x64_AVX512DQ", caps.avx512dq);
84 add_field("CPU_Extension_x64_AVX512BW", caps.avx512bw);
85 add_field("CPU_Extension_x64_AVX512BITALG", caps.avx512bitalg);
86 add_field("CPU_Extension_x64_AVX512VBMI", caps.avx512vbmi);
87
88 add_field("CPU_Extension_x64_AES", caps.aes);
89 add_field("CPU_Extension_x64_BMI1", caps.bmi1);
90 add_field("CPU_Extension_x64_BMI2", caps.bmi2);
91 add_field("CPU_Extension_x64_F16C", caps.f16c);
92 add_field("CPU_Extension_x64_FMA", caps.fma);
93 add_field("CPU_Extension_x64_FMA4", caps.fma4);
94 add_field("CPU_Extension_x64_GFNI", caps.gfni);
95 add_field("CPU_Extension_x64_INVARIANT_TSC", caps.invariant_tsc);
96 add_field("CPU_Extension_x64_LZCNT", caps.lzcnt);
97 add_field("CPU_Extension_x64_MOVBE", caps.movbe);
98 add_field("CPU_Extension_x64_PCLMULQDQ", caps.pclmulqdq);
99 add_field("CPU_Extension_x64_POPCNT", caps.popcnt);
100 add_field("CPU_Extension_x64_SHA", caps.sha);
74#else 101#else
75 fc.AddField(FieldType::UserSystem, "CPU_Model", "Other"); 102 fc.AddField(FieldType::UserSystem, "CPU_Model", "Other");
76#endif 103#endif