• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 }