1 #include <gtest/gtest.h>
2
3 #include <cpuinfo-mock.h>
4 #include <cpuinfo.h>
5
TEST(PROCESSORS,count)6 TEST(PROCESSORS, count) {
7 ASSERT_EQ(8, cpuinfo_get_processors_count());
8 }
9
TEST(PROCESSORS,non_null)10 TEST(PROCESSORS, non_null) {
11 ASSERT_TRUE(cpuinfo_get_processors());
12 }
13
TEST(PROCESSORS,smt_id)14 TEST(PROCESSORS, smt_id) {
15 for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
16 ASSERT_EQ(0, cpuinfo_get_processor(i)->smt_id);
17 }
18 }
19
TEST(PROCESSORS,core)20 TEST(PROCESSORS, core) {
21 for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
22 ASSERT_EQ(cpuinfo_get_core(i), cpuinfo_get_processor(i)->core);
23 }
24 }
25
TEST(PROCESSORS,cluster)26 TEST(PROCESSORS, cluster) {
27 for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
28 switch (i) {
29 case 0:
30 case 1:
31 case 2:
32 case 3:
33 ASSERT_EQ(cpuinfo_get_cluster(0), cpuinfo_get_processor(i)->cluster);
34 break;
35 case 4:
36 case 5:
37 case 6:
38 case 7:
39 ASSERT_EQ(cpuinfo_get_cluster(1), cpuinfo_get_processor(i)->cluster);
40 break;
41 }
42 }
43 }
44
TEST(PROCESSORS,package)45 TEST(PROCESSORS, package) {
46 for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
47 ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_processor(i)->package);
48 }
49 }
50
TEST(PROCESSORS,DISABLED_linux_id)51 TEST(PROCESSORS, DISABLED_linux_id) {
52 for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
53 switch (i) {
54 case 0:
55 case 1:
56 case 2:
57 case 3:
58 ASSERT_EQ(i, cpuinfo_get_processor(i)->linux_id);
59 break;
60 case 4:
61 case 5:
62 case 6:
63 case 7:
64 ASSERT_EQ(i, cpuinfo_get_processor(i)->linux_id);
65 break;
66 }
67 }
68 }
69
TEST(PROCESSORS,l1i)70 TEST(PROCESSORS, l1i) {
71 for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
72 ASSERT_EQ(cpuinfo_get_l1i_cache(i), cpuinfo_get_processor(i)->cache.l1i);
73 }
74 }
75
TEST(PROCESSORS,l1d)76 TEST(PROCESSORS, l1d) {
77 for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
78 ASSERT_EQ(cpuinfo_get_l1d_cache(i), cpuinfo_get_processor(i)->cache.l1d);
79 }
80 }
81
TEST(PROCESSORS,l2)82 TEST(PROCESSORS, l2) {
83 for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
84 switch (i) {
85 case 0:
86 case 1:
87 case 2:
88 case 3:
89 ASSERT_EQ(cpuinfo_get_l2_cache(0), cpuinfo_get_processor(i)->cache.l2);
90 break;
91 case 4:
92 case 5:
93 case 6:
94 case 7:
95 ASSERT_EQ(cpuinfo_get_l2_cache(1), cpuinfo_get_processor(i)->cache.l2);
96 break;
97 }
98 }
99 }
100
TEST(PROCESSORS,l3)101 TEST(PROCESSORS, l3) {
102 for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
103 ASSERT_FALSE(cpuinfo_get_processor(i)->cache.l3);
104 }
105 }
106
TEST(PROCESSORS,l4)107 TEST(PROCESSORS, l4) {
108 for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
109 ASSERT_FALSE(cpuinfo_get_processor(i)->cache.l4);
110 }
111 }
112
TEST(CORES,count)113 TEST(CORES, count) {
114 ASSERT_EQ(8, cpuinfo_get_cores_count());
115 }
116
TEST(CORES,non_null)117 TEST(CORES, non_null) {
118 ASSERT_TRUE(cpuinfo_get_cores());
119 }
120
TEST(CORES,processor_start)121 TEST(CORES, processor_start) {
122 for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
123 ASSERT_EQ(i, cpuinfo_get_core(i)->processor_start);
124 }
125 }
126
TEST(CORES,processor_count)127 TEST(CORES, processor_count) {
128 for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
129 ASSERT_EQ(1, cpuinfo_get_core(i)->processor_count);
130 }
131 }
132
TEST(CORES,core_id)133 TEST(CORES, core_id) {
134 for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
135 ASSERT_EQ(i, cpuinfo_get_core(i)->core_id);
136 }
137 }
138
TEST(CORES,cluster)139 TEST(CORES, cluster) {
140 for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
141 switch (i) {
142 case 0:
143 case 1:
144 case 2:
145 case 3:
146 ASSERT_EQ(cpuinfo_get_cluster(0), cpuinfo_get_core(i)->cluster);
147 break;
148 case 4:
149 case 5:
150 case 6:
151 case 7:
152 ASSERT_EQ(cpuinfo_get_cluster(1), cpuinfo_get_core(i)->cluster);
153 break;
154 }
155 }
156 }
157
TEST(CORES,package)158 TEST(CORES, package) {
159 for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
160 ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_core(i)->package);
161 }
162 }
163
TEST(CORES,vendor)164 TEST(CORES, vendor) {
165 for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
166 ASSERT_EQ(cpuinfo_vendor_arm, cpuinfo_get_core(i)->vendor);
167 }
168 }
169
TEST(CORES,uarch)170 TEST(CORES, uarch) {
171 for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
172 ASSERT_EQ(cpuinfo_uarch_cortex_a53, cpuinfo_get_core(i)->uarch);
173 }
174 }
175
TEST(CORES,midr)176 TEST(CORES, midr) {
177 for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
178 ASSERT_EQ(UINT32_C(0x410FD034), cpuinfo_get_core(i)->midr);
179 }
180 }
181
TEST(CORES,DISABLED_frequency)182 TEST(CORES, DISABLED_frequency) {
183 for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
184 switch (i) {
185 case 0:
186 case 1:
187 case 2:
188 case 3:
189 ASSERT_EQ(UINT64_C(1401000000), cpuinfo_get_core(i)->frequency);
190 break;
191 case 4:
192 case 5:
193 case 6:
194 case 7:
195 ASSERT_EQ(UINT64_C(1094400000), cpuinfo_get_core(i)->frequency);
196 break;
197 }
198 }
199 }
200
TEST(CLUSTERS,count)201 TEST(CLUSTERS, count) {
202 ASSERT_EQ(2, cpuinfo_get_clusters_count());
203 }
204
TEST(CLUSTERS,non_null)205 TEST(CLUSTERS, non_null) {
206 ASSERT_TRUE(cpuinfo_get_clusters());
207 }
208
TEST(CLUSTERS,processor_start)209 TEST(CLUSTERS, processor_start) {
210 for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
211 switch (i) {
212 case 0:
213 ASSERT_EQ(0, cpuinfo_get_cluster(i)->processor_start);
214 break;
215 case 1:
216 ASSERT_EQ(4, cpuinfo_get_cluster(i)->processor_start);
217 break;
218 }
219 }
220 }
221
TEST(CLUSTERS,processor_count)222 TEST(CLUSTERS, processor_count) {
223 for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
224 ASSERT_EQ(4, cpuinfo_get_cluster(i)->processor_count);
225 }
226 }
227
TEST(CLUSTERS,core_start)228 TEST(CLUSTERS, core_start) {
229 for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
230 switch (i) {
231 case 0:
232 ASSERT_EQ(0, cpuinfo_get_cluster(i)->core_start);
233 break;
234 case 1:
235 ASSERT_EQ(4, cpuinfo_get_cluster(i)->core_start);
236 break;
237 }
238 }
239 }
240
TEST(CLUSTERS,core_count)241 TEST(CLUSTERS, core_count) {
242 for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
243 ASSERT_EQ(4, cpuinfo_get_cluster(i)->core_count);
244 }
245 }
246
TEST(CLUSTERS,cluster_id)247 TEST(CLUSTERS, cluster_id) {
248 for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
249 ASSERT_EQ(i, cpuinfo_get_cluster(i)->cluster_id);
250 }
251 }
252
TEST(CLUSTERS,package)253 TEST(CLUSTERS, package) {
254 for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
255 ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_cluster(i)->package);
256 }
257 }
258
TEST(CLUSTERS,vendor)259 TEST(CLUSTERS, vendor) {
260 for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
261 ASSERT_EQ(cpuinfo_vendor_arm, cpuinfo_get_cluster(i)->vendor);
262 }
263 }
264
TEST(CLUSTERS,uarch)265 TEST(CLUSTERS, uarch) {
266 for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
267 ASSERT_EQ(cpuinfo_uarch_cortex_a53, cpuinfo_get_cluster(i)->uarch);
268 }
269 }
270
TEST(CLUSTERS,midr)271 TEST(CLUSTERS, midr) {
272 for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
273 ASSERT_EQ(UINT32_C(0x410FD034), cpuinfo_get_cluster(i)->midr);
274 }
275 }
276
TEST(CLUSTERS,DISABLED_frequency)277 TEST(CLUSTERS, DISABLED_frequency) {
278 for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
279 ASSERT_EQ(UINT64_C(1516800000), cpuinfo_get_cluster(i)->frequency);
280 }
281 }
282
TEST(PACKAGES,count)283 TEST(PACKAGES, count) {
284 ASSERT_EQ(1, cpuinfo_get_packages_count());
285 }
286
TEST(PACKAGES,name)287 TEST(PACKAGES, name) {
288 for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
289 ASSERT_EQ(
290 "Qualcomm MSM8937",
291 std::string(
292 cpuinfo_get_package(i)->name,
293 strnlen(cpuinfo_get_package(i)->name, CPUINFO_PACKAGE_NAME_MAX)));
294 }
295 }
296
TEST(PACKAGES,processor_start)297 TEST(PACKAGES, processor_start) {
298 for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
299 ASSERT_EQ(0, cpuinfo_get_package(i)->processor_start);
300 }
301 }
302
TEST(PACKAGES,processor_count)303 TEST(PACKAGES, processor_count) {
304 for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
305 ASSERT_EQ(8, cpuinfo_get_package(i)->processor_count);
306 }
307 }
308
TEST(PACKAGES,core_start)309 TEST(PACKAGES, core_start) {
310 for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
311 ASSERT_EQ(0, cpuinfo_get_package(i)->core_start);
312 }
313 }
314
TEST(PACKAGES,core_count)315 TEST(PACKAGES, core_count) {
316 for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
317 ASSERT_EQ(8, cpuinfo_get_package(i)->core_count);
318 }
319 }
320
TEST(PACKAGES,cluster_start)321 TEST(PACKAGES, cluster_start) {
322 for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
323 ASSERT_EQ(0, cpuinfo_get_package(i)->cluster_start);
324 }
325 }
326
TEST(PACKAGES,cluster_count)327 TEST(PACKAGES, cluster_count) {
328 for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
329 ASSERT_EQ(2, cpuinfo_get_package(i)->cluster_count);
330 }
331 }
332
TEST(ISA,thumb)333 TEST(ISA, thumb) {
334 ASSERT_TRUE(cpuinfo_has_arm_thumb());
335 }
336
TEST(ISA,thumb2)337 TEST(ISA, thumb2) {
338 ASSERT_TRUE(cpuinfo_has_arm_thumb2());
339 }
340
TEST(ISA,armv5e)341 TEST(ISA, armv5e) {
342 ASSERT_TRUE(cpuinfo_has_arm_v5e());
343 }
344
TEST(ISA,armv6)345 TEST(ISA, armv6) {
346 ASSERT_TRUE(cpuinfo_has_arm_v6());
347 }
348
TEST(ISA,armv6k)349 TEST(ISA, armv6k) {
350 ASSERT_TRUE(cpuinfo_has_arm_v6k());
351 }
352
TEST(ISA,armv7)353 TEST(ISA, armv7) {
354 ASSERT_TRUE(cpuinfo_has_arm_v7());
355 }
356
TEST(ISA,armv7mp)357 TEST(ISA, armv7mp) {
358 ASSERT_TRUE(cpuinfo_has_arm_v7mp());
359 }
360
TEST(ISA,idiv)361 TEST(ISA, idiv) {
362 ASSERT_TRUE(cpuinfo_has_arm_idiv());
363 }
364
TEST(ISA,vfpv2)365 TEST(ISA, vfpv2) {
366 ASSERT_FALSE(cpuinfo_has_arm_vfpv2());
367 }
368
TEST(ISA,vfpv3)369 TEST(ISA, vfpv3) {
370 ASSERT_TRUE(cpuinfo_has_arm_vfpv3());
371 }
372
TEST(ISA,vfpv3_d32)373 TEST(ISA, vfpv3_d32) {
374 ASSERT_TRUE(cpuinfo_has_arm_vfpv3_d32());
375 }
376
TEST(ISA,vfpv3_fp16)377 TEST(ISA, vfpv3_fp16) {
378 ASSERT_TRUE(cpuinfo_has_arm_vfpv3_fp16());
379 }
380
TEST(ISA,vfpv3_fp16_d32)381 TEST(ISA, vfpv3_fp16_d32) {
382 ASSERT_TRUE(cpuinfo_has_arm_vfpv3_fp16_d32());
383 }
384
TEST(ISA,vfpv4)385 TEST(ISA, vfpv4) {
386 ASSERT_TRUE(cpuinfo_has_arm_vfpv4());
387 }
388
TEST(ISA,vfpv4_d32)389 TEST(ISA, vfpv4_d32) {
390 ASSERT_TRUE(cpuinfo_has_arm_vfpv4_d32());
391 }
392
TEST(ISA,wmmx)393 TEST(ISA, wmmx) {
394 ASSERT_FALSE(cpuinfo_has_arm_wmmx());
395 }
396
TEST(ISA,wmmx2)397 TEST(ISA, wmmx2) {
398 ASSERT_FALSE(cpuinfo_has_arm_wmmx2());
399 }
400
TEST(ISA,neon)401 TEST(ISA, neon) {
402 ASSERT_TRUE(cpuinfo_has_arm_neon());
403 }
404
TEST(ISA,neon_fp16)405 TEST(ISA, neon_fp16) {
406 ASSERT_TRUE(cpuinfo_has_arm_neon_fp16());
407 }
408
TEST(ISA,neon_fma)409 TEST(ISA, neon_fma) {
410 ASSERT_TRUE(cpuinfo_has_arm_neon_fma());
411 }
412
TEST(ISA,atomics)413 TEST(ISA, atomics) {
414 ASSERT_FALSE(cpuinfo_has_arm_atomics());
415 }
416
TEST(ISA,neon_rdm)417 TEST(ISA, neon_rdm) {
418 ASSERT_FALSE(cpuinfo_has_arm_neon_rdm());
419 }
420
TEST(ISA,fp16_arith)421 TEST(ISA, fp16_arith) {
422 ASSERT_FALSE(cpuinfo_has_arm_fp16_arith());
423 }
424
TEST(ISA,neon_fp16_arith)425 TEST(ISA, neon_fp16_arith) {
426 ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith());
427 }
428
TEST(ISA,neon_dot)429 TEST(ISA, neon_dot) {
430 ASSERT_FALSE(cpuinfo_has_arm_neon_dot());
431 }
432
TEST(ISA,jscvt)433 TEST(ISA, jscvt) {
434 ASSERT_FALSE(cpuinfo_has_arm_jscvt());
435 }
436
TEST(ISA,fcma)437 TEST(ISA, fcma) {
438 ASSERT_FALSE(cpuinfo_has_arm_fcma());
439 }
440
TEST(ISA,aes)441 TEST(ISA, aes) {
442 ASSERT_TRUE(cpuinfo_has_arm_aes());
443 }
444
TEST(ISA,sha1)445 TEST(ISA, sha1) {
446 ASSERT_TRUE(cpuinfo_has_arm_sha1());
447 }
448
TEST(ISA,sha2)449 TEST(ISA, sha2) {
450 ASSERT_TRUE(cpuinfo_has_arm_sha2());
451 }
452
TEST(ISA,pmull)453 TEST(ISA, pmull) {
454 ASSERT_TRUE(cpuinfo_has_arm_pmull());
455 }
456
TEST(ISA,crc32)457 TEST(ISA, crc32) {
458 ASSERT_TRUE(cpuinfo_has_arm_crc32());
459 }
460
TEST(L1I,count)461 TEST(L1I, count) {
462 ASSERT_EQ(8, cpuinfo_get_l1i_caches_count());
463 }
464
TEST(L1I,non_null)465 TEST(L1I, non_null) {
466 ASSERT_TRUE(cpuinfo_get_l1i_caches());
467 }
468
TEST(L1I,size)469 TEST(L1I, size) {
470 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
471 ASSERT_EQ(32 * 1024, cpuinfo_get_l1i_cache(i)->size);
472 }
473 }
474
TEST(L1I,associativity)475 TEST(L1I, associativity) {
476 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
477 ASSERT_EQ(2, cpuinfo_get_l1i_cache(i)->associativity);
478 }
479 }
480
TEST(L1I,sets)481 TEST(L1I, sets) {
482 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
483 ASSERT_EQ(
484 cpuinfo_get_l1i_cache(i)->size,
485 cpuinfo_get_l1i_cache(i)->sets * cpuinfo_get_l1i_cache(i)->line_size *
486 cpuinfo_get_l1i_cache(i)->partitions * cpuinfo_get_l1i_cache(i)->associativity);
487 }
488 }
489
TEST(L1I,partitions)490 TEST(L1I, partitions) {
491 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
492 ASSERT_EQ(1, cpuinfo_get_l1i_cache(i)->partitions);
493 }
494 }
495
TEST(L1I,line_size)496 TEST(L1I, line_size) {
497 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
498 ASSERT_EQ(64, cpuinfo_get_l1i_cache(i)->line_size);
499 }
500 }
501
TEST(L1I,flags)502 TEST(L1I, flags) {
503 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
504 ASSERT_EQ(0, cpuinfo_get_l1i_cache(i)->flags);
505 }
506 }
507
TEST(L1I,processors)508 TEST(L1I, processors) {
509 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
510 ASSERT_EQ(i, cpuinfo_get_l1i_cache(i)->processor_start);
511 ASSERT_EQ(1, cpuinfo_get_l1i_cache(i)->processor_count);
512 }
513 }
514
TEST(L1D,count)515 TEST(L1D, count) {
516 ASSERT_EQ(8, cpuinfo_get_l1d_caches_count());
517 }
518
TEST(L1D,non_null)519 TEST(L1D, non_null) {
520 ASSERT_TRUE(cpuinfo_get_l1d_caches());
521 }
522
TEST(L1D,size)523 TEST(L1D, size) {
524 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
525 ASSERT_EQ(32 * 1024, cpuinfo_get_l1d_cache(i)->size);
526 }
527 }
528
TEST(L1D,associativity)529 TEST(L1D, associativity) {
530 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
531 ASSERT_EQ(4, cpuinfo_get_l1d_cache(i)->associativity);
532 }
533 }
534
TEST(L1D,sets)535 TEST(L1D, sets) {
536 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
537 ASSERT_EQ(
538 cpuinfo_get_l1d_cache(i)->size,
539 cpuinfo_get_l1d_cache(i)->sets * cpuinfo_get_l1d_cache(i)->line_size *
540 cpuinfo_get_l1d_cache(i)->partitions * cpuinfo_get_l1d_cache(i)->associativity);
541 }
542 }
543
TEST(L1D,partitions)544 TEST(L1D, partitions) {
545 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
546 ASSERT_EQ(1, cpuinfo_get_l1d_cache(i)->partitions);
547 }
548 }
549
TEST(L1D,line_size)550 TEST(L1D, line_size) {
551 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
552 ASSERT_EQ(64, cpuinfo_get_l1d_cache(i)->line_size);
553 }
554 }
555
TEST(L1D,flags)556 TEST(L1D, flags) {
557 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
558 ASSERT_EQ(0, cpuinfo_get_l1d_cache(i)->flags);
559 }
560 }
561
TEST(L1D,processors)562 TEST(L1D, processors) {
563 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
564 ASSERT_EQ(i, cpuinfo_get_l1d_cache(i)->processor_start);
565 ASSERT_EQ(1, cpuinfo_get_l1d_cache(i)->processor_count);
566 }
567 }
568
TEST(L2,count)569 TEST(L2, count) {
570 ASSERT_EQ(2, cpuinfo_get_l2_caches_count());
571 }
572
TEST(L2,non_null)573 TEST(L2, non_null) {
574 ASSERT_TRUE(cpuinfo_get_l2_caches());
575 }
576
TEST(L2,size)577 TEST(L2, size) {
578 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
579 switch (i) {
580 case 0:
581 ASSERT_EQ(1024 * 1024, cpuinfo_get_l2_cache(i)->size);
582 break;
583 case 1:
584 ASSERT_EQ(512 * 1024, cpuinfo_get_l2_cache(i)->size);
585 break;
586 }
587 }
588 }
589
TEST(L2,associativity)590 TEST(L2, associativity) {
591 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
592 ASSERT_EQ(16, cpuinfo_get_l2_cache(i)->associativity);
593 }
594 }
595
TEST(L2,sets)596 TEST(L2, sets) {
597 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
598 ASSERT_EQ(
599 cpuinfo_get_l2_cache(i)->size,
600 cpuinfo_get_l2_cache(i)->sets * cpuinfo_get_l2_cache(i)->line_size *
601 cpuinfo_get_l2_cache(i)->partitions * cpuinfo_get_l2_cache(i)->associativity);
602 }
603 }
604
TEST(L2,partitions)605 TEST(L2, partitions) {
606 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
607 ASSERT_EQ(1, cpuinfo_get_l2_cache(i)->partitions);
608 }
609 }
610
TEST(L2,line_size)611 TEST(L2, line_size) {
612 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
613 ASSERT_EQ(64, cpuinfo_get_l2_cache(i)->line_size);
614 }
615 }
616
TEST(L2,flags)617 TEST(L2, flags) {
618 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
619 ASSERT_EQ(0, cpuinfo_get_l2_cache(i)->flags);
620 }
621 }
622
TEST(L2,processors)623 TEST(L2, processors) {
624 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
625 switch (i) {
626 case 0:
627 ASSERT_EQ(0, cpuinfo_get_l2_cache(i)->processor_start);
628 ASSERT_EQ(4, cpuinfo_get_l2_cache(i)->processor_count);
629 break;
630 case 1:
631 ASSERT_EQ(4, cpuinfo_get_l2_cache(i)->processor_start);
632 ASSERT_EQ(4, cpuinfo_get_l2_cache(i)->processor_count);
633 break;
634 }
635 }
636 }
637
TEST(L3,none)638 TEST(L3, none) {
639 ASSERT_EQ(0, cpuinfo_get_l3_caches_count());
640 ASSERT_FALSE(cpuinfo_get_l3_caches());
641 }
642
TEST(L4,none)643 TEST(L4, none) {
644 ASSERT_EQ(0, cpuinfo_get_l4_caches_count());
645 ASSERT_FALSE(cpuinfo_get_l4_caches());
646 }
647
648 #include <moto-g-gen5.h>
649
main(int argc,char * argv[])650 int main(int argc, char* argv[]) {
651 #if CPUINFO_ARCH_ARM
652 cpuinfo_set_hwcap(UINT32_C(0x003FB0D6));
653 cpuinfo_set_hwcap2(UINT32_C(0x0000001F));
654 #endif
655 cpuinfo_mock_filesystem(filesystem);
656 #ifdef __ANDROID__
657 cpuinfo_mock_android_properties(properties);
658 #endif
659 cpuinfo_initialize();
660 ::testing::InitGoogleTest(&argc, argv);
661 return RUN_ALL_TESTS();
662 }
663