blob: 96bf06423d691cbaffed4519c68de9ca9f8f45ab [file] [log] [blame]
Marat Dukhan419a8192017-05-08 12:25:17 +00001#include <gtest/gtest.h>
2
3#include <cpuinfo.h>
4#include <cpuinfo-mock.h>
5
6
7TEST(PROCESSORS, count) {
8 ASSERT_EQ(1, cpuinfo_processors_count);
9}
10
11TEST(PROCESSORS, non_null) {
12 ASSERT_TRUE(cpuinfo_processors);
13}
14
Marat Dukhan67d4b012017-08-28 11:06:35 -070015TEST(PROCESSORS, vendor) {
Marat Dukhan419a8192017-05-08 12:25:17 +000016 for (uint32_t i = 0; i < cpuinfo_processors_count; i++) {
17 ASSERT_EQ(cpuinfo_vendor_arm, cpuinfo_processors[i].vendor);
18 }
19}
20
Marat Dukhan67d4b012017-08-28 11:06:35 -070021TEST(PROCESSORS, uarch) {
Marat Dukhan419a8192017-05-08 12:25:17 +000022 for (uint32_t i = 0; i < cpuinfo_processors_count; i++) {
23 ASSERT_EQ(cpuinfo_uarch_cortex_a8, cpuinfo_processors[i].uarch);
24 }
25}
26
Marat Dukhan846c1782017-09-13 09:47:26 -070027TEST(PROCESSORS, linux_id) {
28 for (uint32_t i = 0; i < cpuinfo_processors_count; i++) {
Marat Dukhan15e1df92017-09-13 11:10:10 -070029 ASSERT_EQ(i, cpuinfo_processors[i].linux_id);
Marat Dukhan846c1782017-09-13 09:47:26 -070030 }
31}
32
Marat Dukhan7073e832017-09-24 22:23:55 -070033TEST(CORES, count) {
34 ASSERT_EQ(1, cpuinfo_cores_count);
35}
36
37TEST(CORES, processor_start) {
38 for (uint32_t i = 0; i < cpuinfo_cores_count; i++) {
39 ASSERT_EQ(i, cpuinfo_cores[i].processor_start);
40 }
41}
42
43TEST(CORES, processor_count) {
44 for (uint32_t i = 0; i < cpuinfo_cores_count; i++) {
45 ASSERT_EQ(1, cpuinfo_cores[i].processor_count);
46 }
47}
48
Marat Dukhanfb4fbe02017-09-13 00:51:05 -070049TEST(PACKAGES, count) {
50 ASSERT_EQ(1, cpuinfo_packages_count);
51}
52
53TEST(PACKAGES, name) {
54 for (uint32_t i = 0; i < cpuinfo_packages_count; i++) {
55 ASSERT_EQ("Samsung Exynos 3110",
56 std::string(cpuinfo_packages[i].name,
57 strnlen(cpuinfo_packages[i].name, CPUINFO_PACKAGE_NAME_MAX)));
58 }
59}
60
61TEST(PACKAGES, processor_start) {
62 for (uint32_t i = 0; i < cpuinfo_packages_count; i++) {
63 ASSERT_EQ(0, cpuinfo_packages[i].processor_start);
64 }
65}
66
67TEST(PACKAGES, processor_count) {
68 for (uint32_t i = 0; i < cpuinfo_packages_count; i++) {
69 ASSERT_EQ(1, cpuinfo_packages[i].processor_count);
70 }
71}
72
73TEST(PACKAGES, core_start) {
74 for (uint32_t i = 0; i < cpuinfo_packages_count; i++) {
75 ASSERT_EQ(0, cpuinfo_packages[i].core_start);
76 }
77}
78
79TEST(PACKAGES, core_count) {
80 for (uint32_t i = 0; i < cpuinfo_packages_count; i++) {
81 ASSERT_EQ(1, cpuinfo_packages[i].core_count);
82 }
83}
84
Marat Dukhan419a8192017-05-08 12:25:17 +000085TEST(ISA, thumb) {
86 ASSERT_TRUE(cpuinfo_isa.thumb);
87}
88
89TEST(ISA, thumb2) {
90 ASSERT_TRUE(cpuinfo_isa.thumb2);
91}
92
93TEST(ISA, thumbee) {
94 ASSERT_TRUE(cpuinfo_isa.thumbee);
95}
96
97TEST(ISA, jazelle) {
98 ASSERT_FALSE(cpuinfo_isa.jazelle);
99}
100
101TEST(ISA, armv5e) {
102 ASSERT_TRUE(cpuinfo_isa.armv5e);
103}
104
105TEST(ISA, armv6) {
106 ASSERT_TRUE(cpuinfo_isa.armv6);
107}
108
109TEST(ISA, armv6k) {
110 ASSERT_TRUE(cpuinfo_isa.armv6k);
111}
112
113TEST(ISA, armv7) {
114 ASSERT_TRUE(cpuinfo_isa.armv7);
115}
116
117TEST(ISA, armv7mp) {
118 ASSERT_FALSE(cpuinfo_isa.armv7mp);
119}
120
121TEST(ISA, idiv) {
122 ASSERT_FALSE(cpuinfo_isa.idiv);
123}
124
125TEST(ISA, vfpv2) {
126 ASSERT_FALSE(cpuinfo_isa.vfpv2);
127}
128
129TEST(ISA, vfpv3) {
130 ASSERT_TRUE(cpuinfo_isa.vfpv3);
131}
132
133TEST(ISA, d32) {
134 ASSERT_TRUE(cpuinfo_isa.d32);
135}
136
137TEST(ISA, fp16) {
138 ASSERT_FALSE(cpuinfo_isa.fp16);
139}
140
141TEST(ISA, fma) {
142 ASSERT_FALSE(cpuinfo_isa.fma);
143}
144
145TEST(ISA, wmmx) {
146 ASSERT_FALSE(cpuinfo_isa.wmmx);
147}
148
149TEST(ISA, wmmx2) {
150 ASSERT_FALSE(cpuinfo_isa.wmmx2);
151}
152
153TEST(ISA, neon) {
154 ASSERT_TRUE(cpuinfo_isa.neon);
155}
156
157TEST(ISA, aes) {
158 ASSERT_FALSE(cpuinfo_isa.aes);
159}
160
161TEST(ISA, sha1) {
162 ASSERT_FALSE(cpuinfo_isa.sha1);
163}
164
165TEST(ISA, sha2) {
166 ASSERT_FALSE(cpuinfo_isa.sha2);
167}
168
169TEST(ISA, pmull) {
170 ASSERT_FALSE(cpuinfo_isa.pmull);
171}
172
173TEST(ISA, crc32) {
174 ASSERT_FALSE(cpuinfo_isa.crc32);
175}
176
177TEST(L1I, count) {
178 cpuinfo_caches l1i = cpuinfo_get_l1i_cache();
179 ASSERT_EQ(1, l1i.count);
180}
181
182TEST(L1I, non_null) {
183 cpuinfo_caches l1i = cpuinfo_get_l1i_cache();
184 ASSERT_TRUE(l1i.instances);
185}
186
187TEST(L1I, size) {
188 cpuinfo_caches l1i = cpuinfo_get_l1i_cache();
189 for (uint32_t k = 0; k < l1i.count; k++) {
190 ASSERT_EQ(32 * 1024, l1i.instances[k].size);
191 }
192}
193
194TEST(L1I, associativity) {
195 cpuinfo_caches l1i = cpuinfo_get_l1i_cache();
196 for (uint32_t k = 0; k < l1i.count; k++) {
197 ASSERT_EQ(4, l1i.instances[k].associativity);
198 }
199}
200
201TEST(L1I, sets) {
202 cpuinfo_caches l1i = cpuinfo_get_l1i_cache();
203 for (uint32_t k = 0; k < l1i.count; k++) {
204 ASSERT_EQ(128, l1i.instances[k].sets);
205 }
206}
207
208TEST(L1I, partitions) {
209 cpuinfo_caches l1i = cpuinfo_get_l1i_cache();
210 for (uint32_t k = 0; k < l1i.count; k++) {
211 ASSERT_EQ(1, l1i.instances[k].partitions);
212 }
213}
214
215TEST(L1I, line_size) {
216 cpuinfo_caches l1i = cpuinfo_get_l1i_cache();
217 for (uint32_t k = 0; k < l1i.count; k++) {
218 ASSERT_EQ(64, l1i.instances[k].line_size);
219 }
220}
221
222TEST(L1I, flags) {
223 cpuinfo_caches l1i = cpuinfo_get_l1i_cache();
224 for (uint32_t k = 0; k < l1i.count; k++) {
225 ASSERT_EQ(0, l1i.instances[k].flags);
226 }
227}
228
229TEST(L1I, processors) {
230 cpuinfo_caches l1i = cpuinfo_get_l1i_cache();
231 for (uint32_t k = 0; k < l1i.count; k++) {
Marat Dukhanab3a1272017-08-25 23:20:07 -0700232 ASSERT_EQ(k, l1i.instances[k].processor_start);
233 ASSERT_EQ(1, l1i.instances[k].processor_count);
Marat Dukhan419a8192017-05-08 12:25:17 +0000234 }
235}
236
237TEST(L1D, count) {
238 cpuinfo_caches l1d = cpuinfo_get_l1d_cache();
239 ASSERT_EQ(1, l1d.count);
240}
241
242TEST(L1D, non_null) {
243 cpuinfo_caches l1d = cpuinfo_get_l1d_cache();
244 ASSERT_TRUE(l1d.instances);
245}
246
247TEST(L1D, size) {
248 cpuinfo_caches l1d = cpuinfo_get_l1d_cache();
249 for (uint32_t k = 0; k < l1d.count; k++) {
250 ASSERT_EQ(32 * 1024, l1d.instances[k].size);
251 }
252}
253
254TEST(L1D, associativity) {
255 cpuinfo_caches l1d = cpuinfo_get_l1d_cache();
256 for (uint32_t k = 0; k < l1d.count; k++) {
257 ASSERT_EQ(4, l1d.instances[k].associativity);
258 }
259}
260
261TEST(L1D, sets) {
262 cpuinfo_caches l1d = cpuinfo_get_l1d_cache();
263 for (uint32_t k = 0; k < l1d.count; k++) {
264 ASSERT_EQ(128, l1d.instances[k].sets);
265 }
266}
267
268TEST(L1D, partitions) {
269 cpuinfo_caches l1d = cpuinfo_get_l1d_cache();
270 for (uint32_t k = 0; k < l1d.count; k++) {
271 ASSERT_EQ(1, l1d.instances[k].partitions);
272 }
273}
274
275TEST(L1D, line_size) {
276 cpuinfo_caches l1d = cpuinfo_get_l1d_cache();
277 for (uint32_t k = 0; k < l1d.count; k++) {
278 ASSERT_EQ(64, l1d.instances[k].line_size);
279 }
280}
281
282TEST(L1D, flags) {
283 cpuinfo_caches l1d = cpuinfo_get_l1d_cache();
284 for (uint32_t k = 0; k < l1d.count; k++) {
285 ASSERT_EQ(0, l1d.instances[k].flags);
286 }
287}
288
289TEST(L1D, processors) {
290 cpuinfo_caches l1d = cpuinfo_get_l1d_cache();
291 for (uint32_t k = 0; k < l1d.count; k++) {
Marat Dukhanab3a1272017-08-25 23:20:07 -0700292 ASSERT_EQ(k, l1d.instances[k].processor_start);
293 ASSERT_EQ(1, l1d.instances[k].processor_count);
Marat Dukhan419a8192017-05-08 12:25:17 +0000294 }
295}
296
297TEST(L2, count) {
298 cpuinfo_caches l2 = cpuinfo_get_l2_cache();
299 ASSERT_EQ(1, l2.count);
300}
301
302TEST(L2, non_null) {
303 cpuinfo_caches l2 = cpuinfo_get_l2_cache();
304 ASSERT_TRUE(l2.instances);
305}
306
Marat Dukhan5659d292017-09-12 23:21:03 -0700307TEST(L2, size) {
Marat Dukhan419a8192017-05-08 12:25:17 +0000308 cpuinfo_caches l2 = cpuinfo_get_l2_cache();
309 for (uint32_t k = 0; k < l2.count; k++) {
310 ASSERT_EQ(512 * 1024, l2.instances[k].size);
311 }
312}
313
314TEST(L2, associativity) {
315 cpuinfo_caches l2 = cpuinfo_get_l2_cache();
316 for (uint32_t k = 0; k < l2.count; k++) {
317 ASSERT_EQ(8, l2.instances[k].associativity);
318 }
319}
320
Marat Dukhan5659d292017-09-12 23:21:03 -0700321TEST(L2, sets) {
Marat Dukhan419a8192017-05-08 12:25:17 +0000322 cpuinfo_caches l2 = cpuinfo_get_l2_cache();
323 for (uint32_t k = 0; k < l2.count; k++) {
Marat Dukhan5659d292017-09-12 23:21:03 -0700324 ASSERT_EQ(l2.instances[k].size,
325 l2.instances[k].sets * l2.instances[k].line_size * l2.instances[k].partitions * l2.instances[k].associativity);
Marat Dukhan419a8192017-05-08 12:25:17 +0000326 }
327}
328
329TEST(L2, partitions) {
330 cpuinfo_caches l2 = cpuinfo_get_l2_cache();
331 for (uint32_t k = 0; k < l2.count; k++) {
332 ASSERT_EQ(1, l2.instances[k].partitions);
333 }
334}
335
336TEST(L2, line_size) {
337 cpuinfo_caches l2 = cpuinfo_get_l2_cache();
338 for (uint32_t k = 0; k < l2.count; k++) {
339 ASSERT_EQ(64, l2.instances[k].line_size);
340 }
341}
342
343TEST(L2, flags) {
344 cpuinfo_caches l2 = cpuinfo_get_l2_cache();
345 for (uint32_t k = 0; k < l2.count; k++) {
346 ASSERT_EQ(0, l2.instances[k].flags);
347 }
348}
349
350TEST(L2, processors) {
351 cpuinfo_caches l2 = cpuinfo_get_l2_cache();
352 for (uint32_t k = 0; k < l2.count; k++) {
Marat Dukhanab3a1272017-08-25 23:20:07 -0700353 ASSERT_EQ(0, l2.instances[k].processor_start);
354 ASSERT_EQ(1, l2.instances[k].processor_count);
Marat Dukhan419a8192017-05-08 12:25:17 +0000355 }
356}
357
358TEST(L3, none) {
359 cpuinfo_caches l3 = cpuinfo_get_l3_cache();
360 ASSERT_EQ(0, l3.count);
361 ASSERT_FALSE(l3.instances);
362}
363
364TEST(L4, none) {
365 cpuinfo_caches l4 = cpuinfo_get_l4_cache();
366 ASSERT_EQ(0, l4.count);
367 ASSERT_FALSE(l4.instances);
368}
369
Marat Dukhana00f92a2017-09-08 17:45:34 -0700370#include <nexus-s.h>
371
Marat Dukhan419a8192017-05-08 12:25:17 +0000372int main(int argc, char* argv[]) {
Marat Dukhana00f92a2017-09-08 17:45:34 -0700373 cpuinfo_mock_filesystem(filesystem);
Marat Dukhand1565252017-09-12 00:29:01 -0700374#ifdef __ANDROID__
375 cpuinfo_mock_android_properties(properties);
376#endif
Marat Dukhan419a8192017-05-08 12:25:17 +0000377 cpuinfo_initialize();
378 ::testing::InitGoogleTest(&argc, argv);
379 return RUN_ALL_TESTS();
380}