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(2, cpuinfo_processors_count);
8 }
9
TEST(PROCESSORS,non_null)10 TEST(PROCESSORS, non_null) {
11 ASSERT_TRUE(cpuinfo_get_processors());
12 }
13
TEST(PROCESSORS,vendor)14 TEST(PROCESSORS, vendor) {
15 for (uint32_t i = 0; i < cpuinfo_processors_count; i++) {
16 ASSERT_EQ(cpuinfo_vendor_cavium, cpuinfo_get_processors()[i].vendor);
17 }
18 }
19
TEST(PROCESSORS,uarch)20 TEST(PROCESSORS, uarch) {
21 for (uint32_t i = 0; i < cpuinfo_processors_count; i++) {
22 ASSERT_EQ(cpuinfo_uarch_thunderx, cpuinfo_get_processors()[i].uarch);
23 }
24 }
25
TEST(ISA,thumb)26 TEST(ISA, thumb) {
27 ASSERT_TRUE(cpuinfo_isa.thumb);
28 }
29
TEST(ISA,thumb2)30 TEST(ISA, thumb2) {
31 ASSERT_TRUE(cpuinfo_isa.thumb2);
32 }
33
TEST(ISA,thumbee)34 TEST(ISA, thumbee) {
35 ASSERT_FALSE(cpuinfo_isa.thumbee);
36 }
37
TEST(ISA,jazelle)38 TEST(ISA, jazelle) {
39 ASSERT_FALSE(cpuinfo_isa.jazelle);
40 }
41
TEST(ISA,armv5e)42 TEST(ISA, armv5e) {
43 ASSERT_TRUE(cpuinfo_isa.armv5e);
44 }
45
TEST(ISA,armv6)46 TEST(ISA, armv6) {
47 ASSERT_TRUE(cpuinfo_isa.armv6);
48 }
49
TEST(ISA,armv6k)50 TEST(ISA, armv6k) {
51 ASSERT_TRUE(cpuinfo_isa.armv6k);
52 }
53
TEST(ISA,armv7)54 TEST(ISA, armv7) {
55 ASSERT_TRUE(cpuinfo_isa.armv7);
56 }
57
TEST(ISA,armv7mp)58 TEST(ISA, armv7mp) {
59 ASSERT_TRUE(cpuinfo_isa.armv7mp);
60 }
61
TEST(ISA,idiv)62 TEST(ISA, idiv) {
63 ASSERT_TRUE(cpuinfo_isa.idiv);
64 }
65
TEST(ISA,vfpv2)66 TEST(ISA, vfpv2) {
67 ASSERT_FALSE(cpuinfo_isa.vfpv2);
68 }
69
TEST(ISA,vfpv3)70 TEST(ISA, vfpv3) {
71 ASSERT_TRUE(cpuinfo_isa.vfpv3);
72 }
73
TEST(ISA,d32)74 TEST(ISA, d32) {
75 ASSERT_TRUE(cpuinfo_isa.d32);
76 }
77
TEST(ISA,fp16)78 TEST(ISA, fp16) {
79 ASSERT_TRUE(cpuinfo_isa.fp16);
80 }
81
TEST(ISA,fma)82 TEST(ISA, fma) {
83 ASSERT_TRUE(cpuinfo_isa.fma);
84 }
85
TEST(ISA,wmmx)86 TEST(ISA, wmmx) {
87 ASSERT_FALSE(cpuinfo_isa.wmmx);
88 }
89
TEST(ISA,wmmx2)90 TEST(ISA, wmmx2) {
91 ASSERT_FALSE(cpuinfo_isa.wmmx2);
92 }
93
TEST(ISA,neon)94 TEST(ISA, neon) {
95 ASSERT_TRUE(cpuinfo_isa.neon);
96 }
97
TEST(ISA,aes)98 TEST(ISA, aes) {
99 ASSERT_TRUE(cpuinfo_isa.aes);
100 }
101
TEST(ISA,sha1)102 TEST(ISA, sha1) {
103 ASSERT_TRUE(cpuinfo_isa.sha1);
104 }
105
TEST(ISA,sha2)106 TEST(ISA, sha2) {
107 ASSERT_TRUE(cpuinfo_isa.sha2);
108 }
109
TEST(ISA,pmull)110 TEST(ISA, pmull) {
111 ASSERT_TRUE(cpuinfo_isa.pmull);
112 }
113
TEST(ISA,crc32)114 TEST(ISA, crc32) {
115 ASSERT_TRUE(cpuinfo_isa.crc32);
116 }
117
118 #if CPUINFO_ARCH_ARM64
TEST(ISA,atomics)119 TEST(ISA, atomics) {
120 ASSERT_TRUE(cpuinfo_isa.atomics);
121 }
122
TEST(ISA,rdm)123 TEST(ISA, rdm) {
124 ASSERT_FALSE(cpuinfo_isa.rdm);
125 }
126
TEST(ISA,fp16arith)127 TEST(ISA, fp16arith) {
128 ASSERT_FALSE(cpuinfo_isa.fp16arith);
129 }
130
TEST(ISA,jscvt)131 TEST(ISA, jscvt) {
132 ASSERT_FALSE(cpuinfo_isa.jscvt);
133 }
134
TEST(ISA,fcma)135 TEST(ISA, fcma) {
136 ASSERT_FALSE(cpuinfo_isa.fcma);
137 }
138 #endif /* CPUINFO_ARCH_ARM64 */
139
TEST(L1I,count)140 TEST(L1I, count) {
141 ASSERT_EQ(2, cpuinfo_get_l1i_caches_count());
142 }
143
TEST(L1I,non_null)144 TEST(L1I, non_null) {
145 ASSERT_TRUE(cpuinfo_get_l1i_caches());
146 }
147
TEST(L1I,size)148 TEST(L1I, size) {
149 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
150 ASSERT_EQ(78 * 1024, cpuinfo_get_l1i_cache(i)->size);
151 }
152 }
153
TEST(L1I,associativity)154 TEST(L1I, associativity) {
155 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
156 ASSERT_EQ(4, cpuinfo_get_l1i_cache(i)->associativity);
157 }
158 }
159
TEST(L1I,sets)160 TEST(L1I, sets) {
161 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
162 ASSERT_EQ(312, cpuinfo_get_l1i_cache(i)->sets);
163 }
164 }
165
TEST(L1I,partitions)166 TEST(L1I, partitions) {
167 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
168 ASSERT_EQ(1, cpuinfo_get_l1i_cache(i)->partitions);
169 }
170 }
171
TEST(L1I,line_size)172 TEST(L1I, line_size) {
173 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
174 ASSERT_EQ(64, cpuinfo_get_l1i_cache(i)->line_size);
175 }
176 }
177
TEST(L1I,flags)178 TEST(L1I, flags) {
179 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
180 ASSERT_EQ(0, cpuinfo_get_l1i_cache(i)->flags);
181 }
182 }
183
TEST(L1I,processors)184 TEST(L1I, processors) {
185 for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
186 ASSERT_EQ(i, cpuinfo_get_l1i_cache(i)->processor_start);
187 ASSERT_EQ(1, cpuinfo_get_l1i_cache(i)->processor_count);
188 }
189 }
190
TEST(L1D,count)191 TEST(L1D, count) {
192 ASSERT_EQ(2, cpuinfo_get_l1d_caches_count());
193 }
194
TEST(L1D,non_null)195 TEST(L1D, non_null) {
196 ASSERT_TRUE(cpuinfo_get_l1d_caches());
197 }
198
TEST(L1D,size)199 TEST(L1D, size) {
200 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
201 ASSERT_EQ(32 * 1024, cpuinfo_get_l1d_cache(i)->size);
202 }
203 }
204
TEST(L1D,associativity)205 TEST(L1D, associativity) {
206 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
207 ASSERT_EQ(4, cpuinfo_get_l1d_cache(i)->associativity);
208 }
209 }
210
TEST(L1D,sets)211 TEST(L1D, sets) {
212 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
213 ASSERT_EQ(128, cpuinfo_get_l1d_cache(i)->sets);
214 }
215 }
216
TEST(L1D,partitions)217 TEST(L1D, partitions) {
218 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
219 ASSERT_EQ(1, cpuinfo_get_l1d_cache(i)->partitions);
220 }
221 }
222
TEST(L1D,line_size)223 TEST(L1D, line_size) {
224 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
225 ASSERT_EQ(64, cpuinfo_get_l1d_cache(i)->line_size);
226 }
227 }
228
TEST(L1D,flags)229 TEST(L1D, flags) {
230 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
231 ASSERT_EQ(0, cpuinfo_get_l1d_cache(i)->flags);
232 }
233 }
234
TEST(L1D,processors)235 TEST(L1D, processors) {
236 for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
237 ASSERT_EQ(i, cpuinfo_get_l1d_cache(i)->processor_start);
238 ASSERT_EQ(1, cpuinfo_get_l1d_cache(i)->processor_count);
239 }
240 }
241
TEST(L2,count)242 TEST(L2, count) {
243 ASSERT_EQ(1, cpuinfo_get_l2_caches_count());
244 }
245
TEST(L2,non_null)246 TEST(L2, non_null) {
247 ASSERT_TRUE(cpuinfo_get_l2_caches());
248 }
249
TEST(L2,size)250 TEST(L2, size) {
251 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
252 ASSERT_EQ(16 * 1024 * 1024, cpuinfo_get_l2_cache(i)->size);
253 }
254 }
255
TEST(L2,associativity)256 TEST(L2, associativity) {
257 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
258 ASSERT_EQ(8, cpuinfo_get_l2_cache(i)->associativity);
259 }
260 }
261
TEST(L2,sets)262 TEST(L2, sets) {
263 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
264 ASSERT_EQ(32768, cpuinfo_get_l2_cache(i)->sets);
265 }
266 }
267
TEST(L2,partitions)268 TEST(L2, partitions) {
269 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
270 ASSERT_EQ(1, cpuinfo_get_l2_cache(i)->partitions);
271 }
272 }
273
TEST(L2,line_size)274 TEST(L2, line_size) {
275 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
276 ASSERT_EQ(64, cpuinfo_get_l2_cache(i)->line_size);
277 }
278 }
279
TEST(L2,flags)280 TEST(L2, flags) {
281 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
282 ASSERT_EQ(0, cpuinfo_get_l2_cache(i)->flags);
283 }
284 }
285
TEST(L2,processors)286 TEST(L2, processors) {
287 for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
288 ASSERT_EQ(0, cpuinfo_get_l2_cache(i)->processor_start);
289 ASSERT_EQ(2, cpuinfo_get_l2_cache(i)->processor_count);
290 }
291 }
292
TEST(L3,none)293 TEST(L3, none) {
294 ASSERT_EQ(0, cpuinfo_get_l3_caches_count());
295 ASSERT_FALSE(cpuinfo_get_l3_caches());
296 }
297
TEST(L4,none)298 TEST(L4, none) {
299 ASSERT_EQ(0, cpuinfo_get_l4_caches_count());
300 ASSERT_FALSE(cpuinfo_get_l4_caches());
301 }
302
303 #include <scaleway.h>
304
main(int argc,char * argv[])305 int main(int argc, char* argv[]) {
306 cpuinfo_mock_filesystem(filesystem);
307 cpuinfo_initialize();
308 ::testing::InitGoogleTest(&argc, argv);
309 return RUN_ALL_TESTS();
310 }