blob: 057073003cd980ac61cbb2f9bccbbba499d45db6 [file] [log] [blame]
Marat Dukhan8dd5ffc2017-08-11 00:05:50 -07001#include <gtest/gtest.h>
2
3#include <cpuinfo.h>
4#include <cpuinfo-mock.h>
5
6
7TEST(PROCESSORS, count) {
8 ASSERT_EQ(4, cpuinfo_processors_count);
9}
10
11TEST(PROCESSORS, non_null) {
12 ASSERT_TRUE(cpuinfo_processors);
13}
14
Marat Dukhan2d37dc42017-09-25 01:32:37 -070015TEST(PROCESSORS, smt_id) {
Marat Dukhan8dd5ffc2017-08-11 00:05:50 -070016 for (uint32_t i = 0; i < cpuinfo_processors_count; i++) {
Marat Dukhan2d37dc42017-09-25 01:32:37 -070017 ASSERT_EQ(0, cpuinfo_processors[i].smt_id);
Marat Dukhan8dd5ffc2017-08-11 00:05:50 -070018 }
19}
20
Marat Dukhan2d37dc42017-09-25 01:32:37 -070021TEST(PROCESSORS, core) {
Marat Dukhan8dd5ffc2017-08-11 00:05:50 -070022 for (uint32_t i = 0; i < cpuinfo_processors_count; i++) {
Marat Dukhan2d37dc42017-09-25 01:32:37 -070023 ASSERT_EQ(&cpuinfo_cores[i], cpuinfo_processors[i].core);
24 }
25}
26
27TEST(PROCESSORS, package) {
28 for (uint32_t i = 0; i < cpuinfo_processors_count; i++) {
29 ASSERT_EQ(&cpuinfo_packages[0], cpuinfo_processors[i].package);
Marat Dukhan8dd5ffc2017-08-11 00:05:50 -070030 }
31}
32
Marat Dukhan846c1782017-09-13 09:47:26 -070033TEST(PROCESSORS, linux_id) {
34 for (uint32_t i = 0; i < cpuinfo_processors_count; i++) {
Marat Dukhan15e1df92017-09-13 11:10:10 -070035 ASSERT_EQ(i, cpuinfo_processors[i].linux_id);
Marat Dukhan846c1782017-09-13 09:47:26 -070036 }
37}
38
Marat Dukhan2d37dc42017-09-25 01:32:37 -070039TEST(PROCESSORS, l1i) {
40 for (uint32_t i = 0; i < cpuinfo_processors_count; i++) {
41 ASSERT_EQ(&cpuinfo_get_l1i_cache().instances[i], cpuinfo_processors[i].cache.l1i);
42 }
43}
44
45TEST(PROCESSORS, l1d) {
46 for (uint32_t i = 0; i < cpuinfo_processors_count; i++) {
47 ASSERT_EQ(&cpuinfo_get_l1d_cache().instances[i], cpuinfo_processors[i].cache.l1d);
48 }
49}
50
51TEST(PROCESSORS, l2) {
52 for (uint32_t i = 0; i < cpuinfo_processors_count; i++) {
53 ASSERT_EQ(&cpuinfo_get_l2_cache().instances[0], cpuinfo_processors[i].cache.l2);
54 }
55}
56
57TEST(PROCESSORS, l3) {
58 for (uint32_t i = 0; i < cpuinfo_processors_count; i++) {
59 ASSERT_FALSE(cpuinfo_processors[i].cache.l3);
60 }
61}
62
63TEST(PROCESSORS, l4) {
64 for (uint32_t i = 0; i < cpuinfo_processors_count; i++) {
65 ASSERT_FALSE(cpuinfo_processors[i].cache.l4);
66 }
67}
68
Marat Dukhan7073e832017-09-24 22:23:55 -070069TEST(CORES, count) {
70 ASSERT_EQ(4, cpuinfo_cores_count);
71}
72
Marat Dukhan2d37dc42017-09-25 01:32:37 -070073TEST(CORES, non_null) {
74 ASSERT_TRUE(cpuinfo_cores);
75}
76
Marat Dukhan7073e832017-09-24 22:23:55 -070077TEST(CORES, processor_start) {
78 for (uint32_t i = 0; i < cpuinfo_cores_count; i++) {
79 ASSERT_EQ(i, cpuinfo_cores[i].processor_start);
80 }
81}
82
83TEST(CORES, processor_count) {
84 for (uint32_t i = 0; i < cpuinfo_cores_count; i++) {
85 ASSERT_EQ(1, cpuinfo_cores[i].processor_count);
86 }
87}
88
Marat Dukhan2d37dc42017-09-25 01:32:37 -070089TEST(CORES, core_id) {
90 for (uint32_t i = 0; i < cpuinfo_cores_count; i++) {
91 ASSERT_EQ(i, cpuinfo_cores[i].core_id);
92 }
93}
94
95TEST(CORES, package) {
96 for (uint32_t i = 0; i < cpuinfo_cores_count; i++) {
97 ASSERT_EQ(&cpuinfo_packages[0], cpuinfo_cores[i].package);
98 }
99}
100
101TEST(CORES, vendor) {
102 for (uint32_t i = 0; i < cpuinfo_cores_count; i++) {
103 ASSERT_EQ(cpuinfo_vendor_qualcomm, cpuinfo_cores[i].vendor);
104 }
105}
106
107TEST(CORES, uarch) {
108 for (uint32_t i = 0; i < cpuinfo_cores_count; i++) {
109 ASSERT_EQ(cpuinfo_uarch_krait, cpuinfo_cores[i].uarch);
110 }
111}
112
113TEST(CORES, midr) {
114 for (uint32_t i = 0; i < cpuinfo_cores_count; i++) {
115 ASSERT_EQ(UINT32_C(0x513F06F1), cpuinfo_cores[i].midr);
116 }
117}
118
Marat Dukhanfb4fbe02017-09-13 00:51:05 -0700119TEST(PACKAGES, count) {
120 ASSERT_EQ(1, cpuinfo_packages_count);
121}
122
123TEST(PACKAGES, name) {
124 for (uint32_t i = 0; i < cpuinfo_packages_count; i++) {
125 ASSERT_EQ("Qualcomm APQ8084",
126 std::string(cpuinfo_packages[i].name,
127 strnlen(cpuinfo_packages[i].name, CPUINFO_PACKAGE_NAME_MAX)));
128 }
129}
130
131TEST(PACKAGES, processor_start) {
132 for (uint32_t i = 0; i < cpuinfo_packages_count; i++) {
133 ASSERT_EQ(0, cpuinfo_packages[i].processor_start);
134 }
135}
136
137TEST(PACKAGES, processor_count) {
138 for (uint32_t i = 0; i < cpuinfo_packages_count; i++) {
139 ASSERT_EQ(4, cpuinfo_packages[i].processor_count);
140 }
141}
142
143TEST(PACKAGES, core_start) {
144 for (uint32_t i = 0; i < cpuinfo_packages_count; i++) {
145 ASSERT_EQ(0, cpuinfo_packages[i].core_start);
146 }
147}
148
149TEST(PACKAGES, core_count) {
150 for (uint32_t i = 0; i < cpuinfo_packages_count; i++) {
151 ASSERT_EQ(4, cpuinfo_packages[i].core_count);
152 }
153}
154
Marat Dukhan8dd5ffc2017-08-11 00:05:50 -0700155TEST(ISA, thumb) {
156 ASSERT_TRUE(cpuinfo_isa.thumb);
157}
158
159TEST(ISA, thumb2) {
160 ASSERT_TRUE(cpuinfo_isa.thumb2);
161}
162
163TEST(ISA, thumbee) {
164 ASSERT_FALSE(cpuinfo_isa.thumbee);
165}
166
167TEST(ISA, jazelle) {
168 ASSERT_FALSE(cpuinfo_isa.jazelle);
169}
170
171TEST(ISA, armv5e) {
172 ASSERT_TRUE(cpuinfo_isa.armv5e);
173}
174
175TEST(ISA, armv6) {
176 ASSERT_TRUE(cpuinfo_isa.armv6);
177}
178
179TEST(ISA, armv6k) {
180 ASSERT_TRUE(cpuinfo_isa.armv6k);
181}
182
183TEST(ISA, armv7) {
184 ASSERT_TRUE(cpuinfo_isa.armv7);
185}
186
187TEST(ISA, armv7mp) {
188 ASSERT_TRUE(cpuinfo_isa.armv7mp);
189}
190
191TEST(ISA, idiv) {
192 ASSERT_TRUE(cpuinfo_isa.idiv);
193}
194
195TEST(ISA, vfpv2) {
196 ASSERT_FALSE(cpuinfo_isa.vfpv2);
197}
198
199TEST(ISA, vfpv3) {
200 ASSERT_TRUE(cpuinfo_isa.vfpv3);
201}
202
203TEST(ISA, d32) {
204 ASSERT_TRUE(cpuinfo_isa.d32);
205}
206
207TEST(ISA, fp16) {
208 ASSERT_TRUE(cpuinfo_isa.fp16);
209}
210
211TEST(ISA, fma) {
212 ASSERT_TRUE(cpuinfo_isa.fma);
213}
214
215TEST(ISA, wmmx) {
216 ASSERT_FALSE(cpuinfo_isa.wmmx);
217}
218
219TEST(ISA, wmmx2) {
220 ASSERT_FALSE(cpuinfo_isa.wmmx2);
221}
222
223TEST(ISA, neon) {
224 ASSERT_TRUE(cpuinfo_isa.neon);
225}
226
227TEST(ISA, aes) {
228 ASSERT_FALSE(cpuinfo_isa.aes);
229}
230
231TEST(ISA, sha1) {
232 ASSERT_FALSE(cpuinfo_isa.sha1);
233}
234
235TEST(ISA, sha2) {
236 ASSERT_FALSE(cpuinfo_isa.sha2);
237}
238
239TEST(ISA, pmull) {
240 ASSERT_FALSE(cpuinfo_isa.pmull);
241}
242
243TEST(ISA, crc32) {
244 ASSERT_FALSE(cpuinfo_isa.crc32);
245}
246
247TEST(L1I, count) {
248 cpuinfo_caches l1i = cpuinfo_get_l1i_cache();
249 ASSERT_EQ(4, l1i.count);
250}
251
252TEST(L1I, non_null) {
253 cpuinfo_caches l1i = cpuinfo_get_l1i_cache();
254 ASSERT_TRUE(l1i.instances);
255}
256
257TEST(L1I, size) {
258 cpuinfo_caches l1i = cpuinfo_get_l1i_cache();
259 for (uint32_t k = 0; k < l1i.count; k++) {
260 ASSERT_EQ(16 * 1024, l1i.instances[k].size);
261 }
262}
263
264TEST(L1I, associativity) {
265 cpuinfo_caches l1i = cpuinfo_get_l1i_cache();
266 for (uint32_t k = 0; k < l1i.count; k++) {
267 ASSERT_EQ(4, l1i.instances[k].associativity);
268 }
269}
270
271TEST(L1I, sets) {
272 cpuinfo_caches l1i = cpuinfo_get_l1i_cache();
273 for (uint32_t k = 0; k < l1i.count; k++) {
Marat Dukhane9cdede2017-08-25 17:41:43 -0700274 ASSERT_EQ(l1i.instances[k].size,
275 l1i.instances[k].sets * l1i.instances[k].line_size * l1i.instances[k].partitions * l1i.instances[k].associativity);
Marat Dukhan8dd5ffc2017-08-11 00:05:50 -0700276 }
277}
278
279TEST(L1I, partitions) {
280 cpuinfo_caches l1i = cpuinfo_get_l1i_cache();
281 for (uint32_t k = 0; k < l1i.count; k++) {
282 ASSERT_EQ(1, l1i.instances[k].partitions);
283 }
284}
285
286TEST(L1I, line_size) {
287 cpuinfo_caches l1i = cpuinfo_get_l1i_cache();
288 for (uint32_t k = 0; k < l1i.count; k++) {
289 ASSERT_EQ(64, l1i.instances[k].line_size);
290 }
291}
292
293TEST(L1I, flags) {
294 cpuinfo_caches l1i = cpuinfo_get_l1i_cache();
295 for (uint32_t k = 0; k < l1i.count; k++) {
296 ASSERT_EQ(0, l1i.instances[k].flags);
297 }
298}
299
300TEST(L1I, processors) {
301 cpuinfo_caches l1i = cpuinfo_get_l1i_cache();
302 for (uint32_t k = 0; k < l1i.count; k++) {
Marat Dukhanab3a1272017-08-25 23:20:07 -0700303 ASSERT_EQ(k, l1i.instances[k].processor_start);
304 ASSERT_EQ(1, l1i.instances[k].processor_count);
Marat Dukhan8dd5ffc2017-08-11 00:05:50 -0700305 }
306}
307
308TEST(L1D, count) {
309 cpuinfo_caches l1d = cpuinfo_get_l1d_cache();
310 ASSERT_EQ(4, l1d.count);
311}
312
313TEST(L1D, non_null) {
314 cpuinfo_caches l1d = cpuinfo_get_l1d_cache();
315 ASSERT_TRUE(l1d.instances);
316}
317
318TEST(L1D, size) {
319 cpuinfo_caches l1d = cpuinfo_get_l1d_cache();
320 for (uint32_t k = 0; k < l1d.count; k++) {
321 ASSERT_EQ(16 * 1024, l1d.instances[k].size);
322 }
323}
324
325TEST(L1D, associativity) {
326 cpuinfo_caches l1d = cpuinfo_get_l1d_cache();
327 for (uint32_t k = 0; k < l1d.count; k++) {
328 ASSERT_EQ(4, l1d.instances[k].associativity);
329 }
330}
331
332TEST(L1D, sets) {
333 cpuinfo_caches l1d = cpuinfo_get_l1d_cache();
334 for (uint32_t k = 0; k < l1d.count; k++) {
Marat Dukhane9cdede2017-08-25 17:41:43 -0700335 ASSERT_EQ(l1d.instances[k].size,
336 l1d.instances[k].sets * l1d.instances[k].line_size * l1d.instances[k].partitions * l1d.instances[k].associativity);
Marat Dukhan8dd5ffc2017-08-11 00:05:50 -0700337 }
338}
339
340TEST(L1D, partitions) {
341 cpuinfo_caches l1d = cpuinfo_get_l1d_cache();
342 for (uint32_t k = 0; k < l1d.count; k++) {
343 ASSERT_EQ(1, l1d.instances[k].partitions);
344 }
345}
346
347TEST(L1D, line_size) {
348 cpuinfo_caches l1d = cpuinfo_get_l1d_cache();
349 for (uint32_t k = 0; k < l1d.count; k++) {
350 ASSERT_EQ(64, l1d.instances[k].line_size);
351 }
352}
353
354TEST(L1D, flags) {
355 cpuinfo_caches l1d = cpuinfo_get_l1d_cache();
356 for (uint32_t k = 0; k < l1d.count; k++) {
357 ASSERT_EQ(0, l1d.instances[k].flags);
358 }
359}
360
361TEST(L1D, processors) {
362 cpuinfo_caches l1d = cpuinfo_get_l1d_cache();
363 for (uint32_t k = 0; k < l1d.count; k++) {
Marat Dukhanab3a1272017-08-25 23:20:07 -0700364 ASSERT_EQ(k, l1d.instances[k].processor_start);
365 ASSERT_EQ(1, l1d.instances[k].processor_count);
Marat Dukhan8dd5ffc2017-08-11 00:05:50 -0700366 }
367}
368
369TEST(L2, count) {
370 cpuinfo_caches l2 = cpuinfo_get_l2_cache();
371 ASSERT_EQ(1, l2.count);
372}
373
374TEST(L2, non_null) {
375 cpuinfo_caches l2 = cpuinfo_get_l2_cache();
376 ASSERT_TRUE(l2.instances);
377}
378
379TEST(L2, size) {
380 cpuinfo_caches l2 = cpuinfo_get_l2_cache();
381 for (uint32_t k = 0; k < l2.count; k++) {
382 ASSERT_EQ(2 * 1024 * 1024, l2.instances[k].size);
383 }
384}
385
386TEST(L2, associativity) {
387 cpuinfo_caches l2 = cpuinfo_get_l2_cache();
388 for (uint32_t k = 0; k < l2.count; k++) {
389 ASSERT_EQ(8, l2.instances[k].associativity);
390 }
391}
392
393TEST(L2, sets) {
394 cpuinfo_caches l2 = cpuinfo_get_l2_cache();
395 for (uint32_t k = 0; k < l2.count; k++) {
Marat Dukhane9cdede2017-08-25 17:41:43 -0700396 ASSERT_EQ(l2.instances[k].size,
397 l2.instances[k].sets * l2.instances[k].line_size * l2.instances[k].partitions * l2.instances[k].associativity);
Marat Dukhan8dd5ffc2017-08-11 00:05:50 -0700398 }
399}
400
401TEST(L2, partitions) {
402 cpuinfo_caches l2 = cpuinfo_get_l2_cache();
403 for (uint32_t k = 0; k < l2.count; k++) {
404 ASSERT_EQ(1, l2.instances[k].partitions);
405 }
406}
407
408TEST(L2, line_size) {
409 cpuinfo_caches l2 = cpuinfo_get_l2_cache();
410 for (uint32_t k = 0; k < l2.count; k++) {
411 ASSERT_EQ(128, l2.instances[k].line_size);
412 }
413}
414
415TEST(L2, flags) {
416 cpuinfo_caches l2 = cpuinfo_get_l2_cache();
417 for (uint32_t k = 0; k < l2.count; k++) {
418 ASSERT_EQ(0, l2.instances[k].flags);
419 }
420}
421
422TEST(L2, processors) {
423 cpuinfo_caches l2 = cpuinfo_get_l2_cache();
424 for (uint32_t k = 0; k < l2.count; k++) {
Marat Dukhanab3a1272017-08-25 23:20:07 -0700425 ASSERT_EQ(0, l2.instances[k].processor_start);
426 ASSERT_EQ(4, l2.instances[k].processor_count);
Marat Dukhan8dd5ffc2017-08-11 00:05:50 -0700427 }
428}
429
430TEST(L3, none) {
431 cpuinfo_caches l3 = cpuinfo_get_l3_cache();
432 ASSERT_EQ(0, l3.count);
433 ASSERT_FALSE(l3.instances);
434}
435
436TEST(L4, none) {
437 cpuinfo_caches l4 = cpuinfo_get_l4_cache();
438 ASSERT_EQ(0, l4.count);
439 ASSERT_FALSE(l4.instances);
440}
441
442#include <nexus6.h>
443
444int main(int argc, char* argv[]) {
445 cpuinfo_mock_filesystem(filesystem);
Marat Dukhan5659d292017-09-12 23:21:03 -0700446#ifdef __ANDROID__
447 cpuinfo_mock_android_properties(properties);
448#endif
Marat Dukhan8dd5ffc2017-08-11 00:05:50 -0700449 cpuinfo_initialize();
450 ::testing::InitGoogleTest(&argc, argv);
451 return RUN_ALL_TESTS();
452}