blob: c794fcb0f6cf8ded50a7002ce6a644dc65783aeb [file] [log] [blame]
Marat Dukhan92dae312017-05-09 14:10:17 +00001#include <gtest/gtest.h>
2
3#include <cpuinfo.h>
4#include <cpuinfo-mock.h>
5
6
7TEST(PROCESSORS, count) {
8 ASSERT_EQ(2, cpuinfo_processors_count);
9}
10
11TEST(PROCESSORS, non_null) {
Marat Dukhan30401972017-09-26 18:35:52 -070012 ASSERT_TRUE(cpuinfo_get_processors());
Marat Dukhan92dae312017-05-09 14:10:17 +000013}
14
Marat Dukhan67d4b012017-08-28 11:06:35 -070015TEST(PROCESSORS, vendor) {
Marat Dukhan92dae312017-05-09 14:10:17 +000016 for (uint32_t i = 0; i < cpuinfo_processors_count; i++) {
Marat Dukhan30401972017-09-26 18:35:52 -070017 ASSERT_EQ(cpuinfo_vendor_cavium, cpuinfo_get_processors()[i].vendor);
Marat Dukhan92dae312017-05-09 14:10:17 +000018 }
19}
20
Marat Dukhan67d4b012017-08-28 11:06:35 -070021TEST(PROCESSORS, uarch) {
Marat Dukhan92dae312017-05-09 14:10:17 +000022 for (uint32_t i = 0; i < cpuinfo_processors_count; i++) {
Marat Dukhan30401972017-09-26 18:35:52 -070023 ASSERT_EQ(cpuinfo_uarch_thunderx, cpuinfo_get_processors()[i].uarch);
Marat Dukhan92dae312017-05-09 14:10:17 +000024 }
25}
26
Marat Dukhan92dae312017-05-09 14:10:17 +000027TEST(ISA, thumb) {
28 ASSERT_TRUE(cpuinfo_isa.thumb);
29}
30
31TEST(ISA, thumb2) {
32 ASSERT_TRUE(cpuinfo_isa.thumb2);
33}
34
35TEST(ISA, thumbee) {
36 ASSERT_FALSE(cpuinfo_isa.thumbee);
37}
38
39TEST(ISA, jazelle) {
40 ASSERT_FALSE(cpuinfo_isa.jazelle);
41}
42
43TEST(ISA, armv5e) {
44 ASSERT_TRUE(cpuinfo_isa.armv5e);
45}
46
47TEST(ISA, armv6) {
48 ASSERT_TRUE(cpuinfo_isa.armv6);
49}
50
51TEST(ISA, armv6k) {
52 ASSERT_TRUE(cpuinfo_isa.armv6k);
53}
54
55TEST(ISA, armv7) {
56 ASSERT_TRUE(cpuinfo_isa.armv7);
57}
58
59TEST(ISA, armv7mp) {
60 ASSERT_TRUE(cpuinfo_isa.armv7mp);
61}
62
63TEST(ISA, idiv) {
64 ASSERT_TRUE(cpuinfo_isa.idiv);
65}
66
67TEST(ISA, vfpv2) {
68 ASSERT_FALSE(cpuinfo_isa.vfpv2);
69}
70
71TEST(ISA, vfpv3) {
72 ASSERT_TRUE(cpuinfo_isa.vfpv3);
73}
74
75TEST(ISA, d32) {
76 ASSERT_TRUE(cpuinfo_isa.d32);
77}
78
79TEST(ISA, fp16) {
80 ASSERT_TRUE(cpuinfo_isa.fp16);
81}
82
83TEST(ISA, fma) {
84 ASSERT_TRUE(cpuinfo_isa.fma);
85}
86
87TEST(ISA, wmmx) {
88 ASSERT_FALSE(cpuinfo_isa.wmmx);
89}
90
91TEST(ISA, wmmx2) {
92 ASSERT_FALSE(cpuinfo_isa.wmmx2);
93}
94
95TEST(ISA, neon) {
96 ASSERT_TRUE(cpuinfo_isa.neon);
97}
Marat Dukhan92dae312017-05-09 14:10:17 +000098
99TEST(ISA, aes) {
100 ASSERT_TRUE(cpuinfo_isa.aes);
101}
102
103TEST(ISA, sha1) {
104 ASSERT_TRUE(cpuinfo_isa.sha1);
105}
106
107TEST(ISA, sha2) {
108 ASSERT_TRUE(cpuinfo_isa.sha2);
109}
110
111TEST(ISA, pmull) {
112 ASSERT_TRUE(cpuinfo_isa.pmull);
113}
114
115TEST(ISA, crc32) {
116 ASSERT_TRUE(cpuinfo_isa.crc32);
117}
118
119#if CPUINFO_ARCH_ARM64
120TEST(ISA, atomics) {
121 ASSERT_TRUE(cpuinfo_isa.atomics);
122}
123
124TEST(ISA, rdm) {
125 ASSERT_FALSE(cpuinfo_isa.rdm);
126}
127
128TEST(ISA, fp16arith) {
129 ASSERT_FALSE(cpuinfo_isa.fp16arith);
130}
131
132TEST(ISA, jscvt) {
133 ASSERT_FALSE(cpuinfo_isa.jscvt);
134}
135
136TEST(ISA, fcma) {
137 ASSERT_FALSE(cpuinfo_isa.fcma);
138}
139#endif /* CPUINFO_ARCH_ARM64 */
140
141TEST(L1I, count) {
Marat Dukhan30401972017-09-26 18:35:52 -0700142 ASSERT_EQ(2, cpuinfo_get_l1i_caches_count());
Marat Dukhan92dae312017-05-09 14:10:17 +0000143}
144
145TEST(L1I, non_null) {
Marat Dukhan30401972017-09-26 18:35:52 -0700146 ASSERT_TRUE(cpuinfo_get_l1i_caches());
Marat Dukhan92dae312017-05-09 14:10:17 +0000147}
148
149TEST(L1I, size) {
Marat Dukhan30401972017-09-26 18:35:52 -0700150 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
151 ASSERT_EQ(78 * 1024, cpuinfo_get_l1i_cache(i)->size);
Marat Dukhan92dae312017-05-09 14:10:17 +0000152 }
153}
154
155TEST(L1I, associativity) {
Marat Dukhan30401972017-09-26 18:35:52 -0700156 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
157 ASSERT_EQ(4, cpuinfo_get_l1i_cache(i)->associativity);
Marat Dukhan92dae312017-05-09 14:10:17 +0000158 }
159}
160
161TEST(L1I, sets) {
Marat Dukhan30401972017-09-26 18:35:52 -0700162 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
163 ASSERT_EQ(312, cpuinfo_get_l1i_cache(i)->sets);
Marat Dukhan92dae312017-05-09 14:10:17 +0000164 }
165}
166
167TEST(L1I, partitions) {
Marat Dukhan30401972017-09-26 18:35:52 -0700168 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
169 ASSERT_EQ(1, cpuinfo_get_l1i_cache(i)->partitions);
Marat Dukhan92dae312017-05-09 14:10:17 +0000170 }
171}
172
173TEST(L1I, line_size) {
Marat Dukhan30401972017-09-26 18:35:52 -0700174 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
175 ASSERT_EQ(64, cpuinfo_get_l1i_cache(i)->line_size);
Marat Dukhan92dae312017-05-09 14:10:17 +0000176 }
177}
178
179TEST(L1I, flags) {
Marat Dukhan30401972017-09-26 18:35:52 -0700180 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
181 ASSERT_EQ(0, cpuinfo_get_l1i_cache(i)->flags);
Marat Dukhan92dae312017-05-09 14:10:17 +0000182 }
183}
184
185TEST(L1I, processors) {
Marat Dukhan30401972017-09-26 18:35:52 -0700186 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
187 ASSERT_EQ(i, cpuinfo_get_l1i_cache(i)->processor_start);
188 ASSERT_EQ(1, cpuinfo_get_l1i_cache(i)->processor_count);
Marat Dukhan92dae312017-05-09 14:10:17 +0000189 }
190}
191
192TEST(L1D, count) {
Marat Dukhan30401972017-09-26 18:35:52 -0700193 ASSERT_EQ(2, cpuinfo_get_l1d_caches_count());
Marat Dukhan92dae312017-05-09 14:10:17 +0000194}
195
196TEST(L1D, non_null) {
Marat Dukhan30401972017-09-26 18:35:52 -0700197 ASSERT_TRUE(cpuinfo_get_l1d_caches());
Marat Dukhan92dae312017-05-09 14:10:17 +0000198}
199
200TEST(L1D, size) {
Marat Dukhan30401972017-09-26 18:35:52 -0700201 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
202 ASSERT_EQ(32 * 1024, cpuinfo_get_l1d_cache(i)->size);
Marat Dukhan92dae312017-05-09 14:10:17 +0000203 }
204}
205
206TEST(L1D, associativity) {
Marat Dukhan30401972017-09-26 18:35:52 -0700207 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
208 ASSERT_EQ(4, cpuinfo_get_l1d_cache(i)->associativity);
Marat Dukhan92dae312017-05-09 14:10:17 +0000209 }
210}
211
212TEST(L1D, sets) {
Marat Dukhan30401972017-09-26 18:35:52 -0700213 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
214 ASSERT_EQ(128, cpuinfo_get_l1d_cache(i)->sets);
Marat Dukhan92dae312017-05-09 14:10:17 +0000215 }
216}
217
218TEST(L1D, partitions) {
Marat Dukhan30401972017-09-26 18:35:52 -0700219 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
220 ASSERT_EQ(1, cpuinfo_get_l1d_cache(i)->partitions);
Marat Dukhan92dae312017-05-09 14:10:17 +0000221 }
222}
223
224TEST(L1D, line_size) {
Marat Dukhan30401972017-09-26 18:35:52 -0700225 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
226 ASSERT_EQ(64, cpuinfo_get_l1d_cache(i)->line_size);
Marat Dukhan92dae312017-05-09 14:10:17 +0000227 }
228}
229
230TEST(L1D, flags) {
Marat Dukhan30401972017-09-26 18:35:52 -0700231 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
232 ASSERT_EQ(0, cpuinfo_get_l1d_cache(i)->flags);
Marat Dukhan92dae312017-05-09 14:10:17 +0000233 }
234}
235
236TEST(L1D, processors) {
Marat Dukhan30401972017-09-26 18:35:52 -0700237 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
238 ASSERT_EQ(i, cpuinfo_get_l1d_cache(i)->processor_start);
239 ASSERT_EQ(1, cpuinfo_get_l1d_cache(i)->processor_count);
Marat Dukhan92dae312017-05-09 14:10:17 +0000240 }
241}
242
243TEST(L2, count) {
Marat Dukhan30401972017-09-26 18:35:52 -0700244 ASSERT_EQ(1, cpuinfo_get_l2_caches_count());
Marat Dukhan92dae312017-05-09 14:10:17 +0000245}
246
247TEST(L2, non_null) {
Marat Dukhan30401972017-09-26 18:35:52 -0700248 ASSERT_TRUE(cpuinfo_get_l2_caches());
Marat Dukhan92dae312017-05-09 14:10:17 +0000249}
250
251TEST(L2, size) {
Marat Dukhan30401972017-09-26 18:35:52 -0700252 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
253 ASSERT_EQ(16 * 1024 * 1024, cpuinfo_get_l2_cache(i)->size);
Marat Dukhan92dae312017-05-09 14:10:17 +0000254 }
255}
256
257TEST(L2, associativity) {
Marat Dukhan30401972017-09-26 18:35:52 -0700258 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
259 ASSERT_EQ(8, cpuinfo_get_l2_cache(i)->associativity);
Marat Dukhan92dae312017-05-09 14:10:17 +0000260 }
261}
262
263TEST(L2, sets) {
Marat Dukhan30401972017-09-26 18:35:52 -0700264 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
265 ASSERT_EQ(32768, cpuinfo_get_l2_cache(i)->sets);
Marat Dukhan92dae312017-05-09 14:10:17 +0000266 }
267}
268
269TEST(L2, partitions) {
Marat Dukhan30401972017-09-26 18:35:52 -0700270 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
271 ASSERT_EQ(1, cpuinfo_get_l2_cache(i)->partitions);
Marat Dukhan92dae312017-05-09 14:10:17 +0000272 }
273}
274
275TEST(L2, line_size) {
Marat Dukhan30401972017-09-26 18:35:52 -0700276 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
277 ASSERT_EQ(64, cpuinfo_get_l2_cache(i)->line_size);
Marat Dukhan92dae312017-05-09 14:10:17 +0000278 }
279}
280
281TEST(L2, flags) {
Marat Dukhan30401972017-09-26 18:35:52 -0700282 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
283 ASSERT_EQ(0, cpuinfo_get_l2_cache(i)->flags);
Marat Dukhan92dae312017-05-09 14:10:17 +0000284 }
285}
286
287TEST(L2, processors) {
Marat Dukhan30401972017-09-26 18:35:52 -0700288 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
289 ASSERT_EQ(0, cpuinfo_get_l2_cache(i)->processor_start);
290 ASSERT_EQ(2, cpuinfo_get_l2_cache(i)->processor_count);
Marat Dukhan92dae312017-05-09 14:10:17 +0000291 }
292}
293
294TEST(L3, none) {
Marat Dukhan30401972017-09-26 18:35:52 -0700295 ASSERT_EQ(0, cpuinfo_get_l3_caches_count());
296 ASSERT_FALSE(cpuinfo_get_l3_caches());
Marat Dukhan92dae312017-05-09 14:10:17 +0000297}
298
299TEST(L4, none) {
Marat Dukhan30401972017-09-26 18:35:52 -0700300 ASSERT_EQ(0, cpuinfo_get_l4_caches_count());
301 ASSERT_FALSE(cpuinfo_get_l4_caches());
Marat Dukhan92dae312017-05-09 14:10:17 +0000302}
303
Marat Dukhana70e55d2017-08-18 08:33:38 +0000304#include <scaleway.h>
305
Marat Dukhan92dae312017-05-09 14:10:17 +0000306int main(int argc, char* argv[]) {
Marat Dukhana70e55d2017-08-18 08:33:38 +0000307 cpuinfo_mock_filesystem(filesystem);
Marat Dukhan92dae312017-05-09 14:10:17 +0000308 cpuinfo_initialize();
309 ::testing::InitGoogleTest(&argc, argv);
310 return RUN_ALL_TESTS();
Marat Dukhan30401972017-09-26 18:35:52 -0700311}