|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- #include "src/common/utils.h"
- #if defined(MGB_ENABLE_CPUINFO_CHECK) && MGB_ENABLE_CPUINFO
- #include <cpuinfo.h>
- #include <inttypes.h>
- #include "gtest/gtest.h"
-
- namespace megdnn {
- namespace test {
-
- TEST(ARM_RUNTIME, CPUINFO_KIRIN980) {
- ASSERT_TRUE(cpuinfo_initialize());
-
- int right_soc = strcmp(cpuinfo_get_package(0)->name, "HiSilicon Kirin 980");
-
- if (!right_soc) {
- ASSERT_EQ(8, cpuinfo_get_processors_count());
-
- ASSERT_TRUE(cpuinfo_get_processors());
-
- ASSERT_TRUE(cpuinfo_has_arm_neon());
-
- ASSERT_TRUE(cpuinfo_has_arm_neon_fp16());
-
- ASSERT_TRUE(cpuinfo_has_arm_neon_fma());
-
- ASSERT_TRUE(cpuinfo_has_arm_neon_dot());
-
- for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
- ASSERT_EQ(cpuinfo_get_core(i), cpuinfo_get_processor(i)->core);
- }
-
- for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
- ASSERT_EQ(cpuinfo_vendor_arm, cpuinfo_get_core(i)->vendor);
- }
-
- for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
- switch (i) {
- case 0:
- case 1:
- case 2:
- case 3:
- ASSERT_EQ(cpuinfo_uarch_cortex_a76, cpuinfo_get_core(i)->uarch);
- break;
- case 4:
- case 5:
- case 6:
- case 7:
- ASSERT_EQ(cpuinfo_uarch_cortex_a55, cpuinfo_get_core(i)->uarch);
- break;
- }
- }
- } else {
- printf("detect soc: %s ,skip test.\n", cpuinfo_get_package(0)->name);
- }
- }
-
- TEST(ARM_RUNTIME, CPUINFO_SDM8150) {
- ASSERT_TRUE(cpuinfo_initialize());
-
- int right_soc = strcmp(cpuinfo_get_package(0)->name, "Qualcomm Snapdragon 8150");
-
- if (!right_soc) {
- ASSERT_EQ(8, cpuinfo_get_processors_count());
-
- ASSERT_TRUE(cpuinfo_get_processors());
-
- ASSERT_TRUE(cpuinfo_has_arm_neon());
-
- ASSERT_TRUE(cpuinfo_has_arm_neon_fp16());
-
- ASSERT_TRUE(cpuinfo_has_arm_neon_fma());
-
- ASSERT_TRUE(cpuinfo_has_arm_neon_dot());
-
- for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
- ASSERT_EQ(cpuinfo_get_core(i), cpuinfo_get_processor(i)->core);
- }
-
- for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
- ASSERT_EQ(cpuinfo_vendor_arm, cpuinfo_get_core(i)->vendor);
- }
-
- for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
- switch (i) {
- case 0:
- case 1:
- case 2:
- case 3:
- ASSERT_EQ(cpuinfo_uarch_cortex_a76, cpuinfo_get_core(i)->uarch);
- break;
- case 4:
- case 5:
- case 6:
- case 7:
- ASSERT_EQ(cpuinfo_uarch_cortex_a55, cpuinfo_get_core(i)->uarch);
- break;
- }
- }
- } else {
- printf("detect soc: %s ,skip test.\n", cpuinfo_get_package(0)->name);
- }
- }
-
- TEST(ARM_RUNTIME, CPUINFO_SDM660) {
- ASSERT_TRUE(cpuinfo_initialize());
-
- int right_soc = strcmp(cpuinfo_get_package(0)->name, "Qualcomm Snapdragon 660");
-
- if (!right_soc) {
- ASSERT_EQ(8, cpuinfo_get_processors_count());
-
- ASSERT_TRUE(cpuinfo_get_processors());
-
- ASSERT_TRUE(cpuinfo_has_arm_neon());
-
- ASSERT_TRUE(cpuinfo_has_arm_neon_fp16());
-
- ASSERT_TRUE(cpuinfo_has_arm_neon_fma());
-
- ASSERT_FALSE(cpuinfo_has_arm_neon_dot());
-
- for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
- ASSERT_EQ(cpuinfo_get_core(i), cpuinfo_get_processor(i)->core);
- }
-
- for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
- ASSERT_EQ(cpuinfo_vendor_arm, cpuinfo_get_core(i)->vendor);
- }
-
- for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
- switch (i) {
- case 0:
- case 1:
- case 2:
- case 3:
- ASSERT_EQ(cpuinfo_uarch_cortex_a73, cpuinfo_get_core(i)->uarch);
- break;
- case 4:
- case 5:
- case 6:
- case 7:
- ASSERT_EQ(cpuinfo_uarch_cortex_a53, cpuinfo_get_core(i)->uarch);
- break;
- }
- }
- } else {
- printf("detect soc: %s ,skip test.\n", cpuinfo_get_package(0)->name);
- }
- }
-
- } // namespace test
- } // namespace megdnn
- #endif
- // vim: syntax=cpp.doxygen
|