diff options
79 files changed, 652 insertions, 1 deletions
diff --git a/include/cpuinfo.h b/include/cpuinfo.h index 84320dd..de75a06 100644 --- a/include/cpuinfo.h +++ b/include/cpuinfo.h @@ -1356,6 +1356,7 @@ static inline bool cpuinfo_has_x86_sha(void) { #endif bool rdm; bool fp16arith; + bool dot; bool jscvt; bool fcma; @@ -1583,6 +1584,14 @@ static inline bool cpuinfo_has_arm_fp16_arith(void) { #endif } +static inline bool cpuinfo_has_arm_neon_dot(void) { + #if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64 + return cpuinfo_isa.dot; + #else + return false; + #endif +} + static inline bool cpuinfo_has_arm_jscvt(void) { #if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64 return cpuinfo_isa.jscvt; diff --git a/src/arm/linux/aarch32-isa.c b/src/arm/linux/aarch32-isa.c index d552ca2..92095e1 100644 --- a/src/arm/linux/aarch32-isa.c +++ b/src/arm/linux/aarch32-isa.c @@ -74,6 +74,23 @@ void cpuinfo_arm_linux_decode_isa_from_proc_cpuinfo( } break; } + + /* + * NEON VDOT instructions are not indicated in /proc/cpuinfo. + * Use a MIDR-based heuristic to whitelist processors known to support it: + * - Processors with Qualcomm-modified Cortex-A76 cores + * - Kirin 980 processor + */ + switch (midr & (CPUINFO_ARM_MIDR_IMPLEMENTER_MASK | CPUINFO_ARM_MIDR_PART_MASK)) { + case UINT32_C(0x51008040): /* Kryo 485 Gold (Cortex-A76) */ + isa->dot = true; + break; + default: + if (chipset->series == cpuinfo_arm_chipset_series_hisilicon_kirin && chipset->model == 980) { + isa->dot = true; + } + break; + } } else { /* ARMv7 or lower: use feature flags to detect optional features */ diff --git a/src/arm/linux/aarch64-isa.c b/src/arm/linux/aarch64-isa.c index 462aee5..f193e81 100644 --- a/src/arm/linux/aarch64-isa.c +++ b/src/arm/linux/aarch64-isa.c @@ -65,6 +65,25 @@ void cpuinfo_arm64_linux_decode_isa_from_proc_cpuinfo( } break; } + /* + * Many phones ship with an old kernel configuration that doesn't report UDOT/SDOT instructions. + * Use a MIDR-based heuristic to whitelist processors known to support it: + * - Processors with Qualcomm-modified Cortex-A76 cores + * - Kirin 980 processor + */ + switch (midr & (CPUINFO_ARM_MIDR_IMPLEMENTER_MASK | CPUINFO_ARM_MIDR_PART_MASK)) { + case UINT32_C(0x51008040): /* Kryo 485 Gold (Cortex-A76) */ + isa->dot = true; + break; + default: + if (features & CPUINFO_ARM_LINUX_FEATURE_ASIMDDP) { + isa->dot = true; + } + if (chipset->series == cpuinfo_arm_chipset_series_hisilicon_kirin && chipset->model == 980) { + isa->dot = true; + } + break; + } if (features & CPUINFO_ARM_LINUX_FEATURE_JSCVT) { isa->jscvt = true; } diff --git a/src/arm/linux/api.h b/src/arm/linux/api.h index 73d56df..ab3741d 100644 --- a/src/arm/linux/api.h +++ b/src/arm/linux/api.h @@ -95,6 +95,19 @@ struct cpuinfo_arm_linux_proc_cpuinfo_cache { #define CPUINFO_ARM_LINUX_FEATURE_JSCVT UINT32_C(0x00002000) #define CPUINFO_ARM_LINUX_FEATURE_FCMA UINT32_C(0x00004000) #define CPUINFO_ARM_LINUX_FEATURE_LRCPC UINT32_C(0x00008000) + #define CPUINFO_ARM_LINUX_FEATURE_DCPOP UINT32_C(0x00010000) + #define CPUINFO_ARM_LINUX_FEATURE_SHA3 UINT32_C(0x00020000) + #define CPUINFO_ARM_LINUX_FEATURE_SM3 UINT32_C(0x00040000) + #define CPUINFO_ARM_LINUX_FEATURE_SM4 UINT32_C(0x00080000) + #define CPUINFO_ARM_LINUX_FEATURE_ASIMDDP UINT32_C(0x00100000) + #define CPUINFO_ARM_LINUX_FEATURE_SHA512 UINT32_C(0x00200000) + #define CPUINFO_ARM_LINUX_FEATURE_SVE UINT32_C(0x00400000) + #define CPUINFO_ARM_LINUX_FEATURE_ASIMDFHM UINT32_C(0x00800000) + #define CPUINFO_ARM_LINUX_FEATURE_DIT UINT32_C(0x01000000) + #define CPUINFO_ARM_LINUX_FEATURE_USCAT UINT32_C(0x02000000) + #define CPUINFO_ARM_LINUX_FEATURE_ILRCPC UINT32_C(0x04000000) + #define CPUINFO_ARM_LINUX_FEATURE_FLAGM UINT32_C(0x08000000) + #define CPUINFO_ARM_LINUX_FEATURE_SSBS UINT32_C(0x10000000) #endif #define CPUINFO_ARM_LINUX_VALID_ARCHITECTURE UINT32_C(0x00010000) diff --git a/test/mock/alcatel-revvl.cc b/test/mock/alcatel-revvl.cc index e76db85..d3ed981 100644 --- a/test/mock/alcatel-revvl.cc +++ b/test/mock/alcatel-revvl.cc @@ -435,6 +435,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/atm7029b-tablet.cc b/test/mock/atm7029b-tablet.cc index d8d20a9..3ae59ce 100644 --- a/test/mock/atm7029b-tablet.cc +++ b/test/mock/atm7029b-tablet.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/blu-r1-hd.cc b/test/mock/blu-r1-hd.cc index d60de65..4d6037d 100644 --- a/test/mock/blu-r1-hd.cc +++ b/test/mock/blu-r1-hd.cc @@ -346,6 +346,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-a3-2016-eu.cc b/test/mock/galaxy-a3-2016-eu.cc index 2cfd1a4..b30f005 100644 --- a/test/mock/galaxy-a3-2016-eu.cc +++ b/test/mock/galaxy-a3-2016-eu.cc @@ -370,6 +370,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-a8-2016-duos.cc b/test/mock/galaxy-a8-2016-duos.cc index 6f046b9..1e546e9 100644 --- a/test/mock/galaxy-a8-2016-duos.cc +++ b/test/mock/galaxy-a8-2016-duos.cc @@ -428,6 +428,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-a8-2018.cc b/test/mock/galaxy-a8-2018.cc index fc27e65..560055a 100644 --- a/test/mock/galaxy-a8-2018.cc +++ b/test/mock/galaxy-a8-2018.cc @@ -510,6 +510,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-c9-pro.cc b/test/mock/galaxy-c9-pro.cc index 00fc5dd..f270284 100644 --- a/test/mock/galaxy-c9-pro.cc +++ b/test/mock/galaxy-c9-pro.cc @@ -496,6 +496,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-grand-prime-value-edition.cc b/test/mock/galaxy-grand-prime-value-edition.cc index e709e75..f7b8793 100644 --- a/test/mock/galaxy-grand-prime-value-edition.cc +++ b/test/mock/galaxy-grand-prime-value-edition.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-j1-2016.cc b/test/mock/galaxy-j1-2016.cc index e3b8420..e1f2f03 100644 --- a/test/mock/galaxy-j1-2016.cc +++ b/test/mock/galaxy-j1-2016.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-j5.cc b/test/mock/galaxy-j5.cc index 6df2b0a..b2a9c6b 100644 --- a/test/mock/galaxy-j5.cc +++ b/test/mock/galaxy-j5.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-j7-prime.cc b/test/mock/galaxy-j7-prime.cc index 543e53f..597de8b 100644 --- a/test/mock/galaxy-j7-prime.cc +++ b/test/mock/galaxy-j7-prime.cc @@ -436,6 +436,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-j7-tmobile.cc b/test/mock/galaxy-j7-tmobile.cc index 40f883d..63b05ba 100644 --- a/test/mock/galaxy-j7-tmobile.cc +++ b/test/mock/galaxy-j7-tmobile.cc @@ -436,6 +436,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-j7-uae.cc b/test/mock/galaxy-j7-uae.cc index 07f6473..a15ab66 100644 --- a/test/mock/galaxy-j7-uae.cc +++ b/test/mock/galaxy-j7-uae.cc @@ -436,6 +436,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-s3-us.cc b/test/mock/galaxy-s3-us.cc index 3077911..db85918 100644 --- a/test/mock/galaxy-s3-us.cc +++ b/test/mock/galaxy-s3-us.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-s4-us.cc b/test/mock/galaxy-s4-us.cc index 36cc657..8da4841 100644 --- a/test/mock/galaxy-s4-us.cc +++ b/test/mock/galaxy-s4-us.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-s5-global.cc b/test/mock/galaxy-s5-global.cc index f40390d..147ae2c 100644 --- a/test/mock/galaxy-s5-global.cc +++ b/test/mock/galaxy-s5-global.cc @@ -468,6 +468,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-s5-us.cc b/test/mock/galaxy-s5-us.cc index 650ea9e..8b00abf 100644 --- a/test/mock/galaxy-s5-us.cc +++ b/test/mock/galaxy-s5-us.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-s6.cc b/test/mock/galaxy-s6.cc index fbd5723..0085cfd 100644 --- a/test/mock/galaxy-s6.cc +++ b/test/mock/galaxy-s6.cc @@ -496,6 +496,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-s7-global.cc b/test/mock/galaxy-s7-global.cc index 5cdd522..7a2ddab 100644 --- a/test/mock/galaxy-s7-global.cc +++ b/test/mock/galaxy-s7-global.cc @@ -516,6 +516,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-s7-us.cc b/test/mock/galaxy-s7-us.cc index 71f423c..b05c25c 100644 --- a/test/mock/galaxy-s7-us.cc +++ b/test/mock/galaxy-s7-us.cc @@ -452,6 +452,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-s8-global.cc b/test/mock/galaxy-s8-global.cc index b0f8576..ae946ba 100644 --- a/test/mock/galaxy-s8-global.cc +++ b/test/mock/galaxy-s8-global.cc @@ -516,6 +516,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-s8-us.cc b/test/mock/galaxy-s8-us.cc index 39145d3..6c9282b 100644 --- a/test/mock/galaxy-s8-us.cc +++ b/test/mock/galaxy-s8-us.cc @@ -496,6 +496,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-s9-global.cc b/test/mock/galaxy-s9-global.cc index fd52254..412476e 100644 --- a/test/mock/galaxy-s9-global.cc +++ b/test/mock/galaxy-s9-global.cc @@ -533,6 +533,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-s9-us.cc b/test/mock/galaxy-s9-us.cc index baa2ced..6df7f3c 100644 --- a/test/mock/galaxy-s9-us.cc +++ b/test/mock/galaxy-s9-us.cc @@ -487,6 +487,14 @@ TEST(ISA, fp16_arith) { ASSERT_TRUE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_TRUE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-tab-3-7.0.cc b/test/mock/galaxy-tab-3-7.0.cc index 1f28140..1b20a44 100644 --- a/test/mock/galaxy-tab-3-7.0.cc +++ b/test/mock/galaxy-tab-3-7.0.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-tab-3-lite.cc b/test/mock/galaxy-tab-3-lite.cc index 018e17f..9d1efcd 100644 --- a/test/mock/galaxy-tab-3-lite.cc +++ b/test/mock/galaxy-tab-3-lite.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/galaxy-win-duos.cc b/test/mock/galaxy-win-duos.cc index ae671ee..33c1733 100644 --- a/test/mock/galaxy-win-duos.cc +++ b/test/mock/galaxy-win-duos.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/huawei-ascend-p7.cc b/test/mock/huawei-ascend-p7.cc index fc1c951..69349c1 100644 --- a/test/mock/huawei-ascend-p7.cc +++ b/test/mock/huawei-ascend-p7.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/huawei-honor-6.cc b/test/mock/huawei-honor-6.cc index 41b429e..59ad755 100644 --- a/test/mock/huawei-honor-6.cc +++ b/test/mock/huawei-honor-6.cc @@ -468,6 +468,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/huawei-mate-10.cc b/test/mock/huawei-mate-10.cc index 477103f..92be5aa 100644 --- a/test/mock/huawei-mate-10.cc +++ b/test/mock/huawei-mate-10.cc @@ -496,6 +496,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/huawei-mate-20.cc b/test/mock/huawei-mate-20.cc index e3d4d36..0ba4c59 100644 --- a/test/mock/huawei-mate-20.cc +++ b/test/mock/huawei-mate-20.cc @@ -526,6 +526,14 @@ TEST(ISA, fp16_arith) { ASSERT_TRUE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_TRUE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_TRUE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/huawei-mate-8.cc b/test/mock/huawei-mate-8.cc index 7651ba7..0922c7f 100644 --- a/test/mock/huawei-mate-8.cc +++ b/test/mock/huawei-mate-8.cc @@ -496,6 +496,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/huawei-mate-9.cc b/test/mock/huawei-mate-9.cc index c3b4562..703b7e0 100644 --- a/test/mock/huawei-mate-9.cc +++ b/test/mock/huawei-mate-9.cc @@ -496,6 +496,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/huawei-p20-pro.cc b/test/mock/huawei-p20-pro.cc index 382bd1d..93568b5 100644 --- a/test/mock/huawei-p20-pro.cc +++ b/test/mock/huawei-p20-pro.cc @@ -496,6 +496,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/huawei-p8-lite.cc b/test/mock/huawei-p8-lite.cc index 776084f..9b8548e 100644 --- a/test/mock/huawei-p8-lite.cc +++ b/test/mock/huawei-p8-lite.cc @@ -423,6 +423,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/huawei-p9-lite.cc b/test/mock/huawei-p9-lite.cc index 068ae73..29db0d3 100644 --- a/test/mock/huawei-p9-lite.cc +++ b/test/mock/huawei-p9-lite.cc @@ -456,6 +456,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/iconia-one-10.cc b/test/mock/iconia-one-10.cc index 29e5abb..03e26f2 100644 --- a/test/mock/iconia-one-10.cc +++ b/test/mock/iconia-one-10.cc @@ -370,6 +370,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/lenovo-a6600-plus.cc b/test/mock/lenovo-a6600-plus.cc index 976604b..0af9e97 100644 --- a/test/mock/lenovo-a6600-plus.cc +++ b/test/mock/lenovo-a6600-plus.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/lenovo-vibe-x2.cc b/test/mock/lenovo-vibe-x2.cc index b22f4e6..cc931d7 100644 --- a/test/mock/lenovo-vibe-x2.cc +++ b/test/mock/lenovo-vibe-x2.cc @@ -449,6 +449,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/lg-k10-eu.cc b/test/mock/lg-k10-eu.cc index 258a6a1..6b8c8bc 100644 --- a/test/mock/lg-k10-eu.cc +++ b/test/mock/lg-k10-eu.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/lg-optimus-g-pro.cc b/test/mock/lg-optimus-g-pro.cc index f7a4bb8..a663020 100644 --- a/test/mock/lg-optimus-g-pro.cc +++ b/test/mock/lg-optimus-g-pro.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/meizu-pro-6.cc b/test/mock/meizu-pro-6.cc index 022ae29..36cdd2a 100644 --- a/test/mock/meizu-pro-6.cc +++ b/test/mock/meizu-pro-6.cc @@ -551,6 +551,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/meizu-pro-6s.cc b/test/mock/meizu-pro-6s.cc index 8a3855e..7593caa 100644 --- a/test/mock/meizu-pro-6s.cc +++ b/test/mock/meizu-pro-6s.cc @@ -551,6 +551,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/meizu-pro-7-plus.cc b/test/mock/meizu-pro-7-plus.cc index 8e59f36..f64b186 100644 --- a/test/mock/meizu-pro-7-plus.cc +++ b/test/mock/meizu-pro-7-plus.cc @@ -559,6 +559,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/moto-e-gen1.cc b/test/mock/moto-e-gen1.cc index 740d48b..190e96f 100644 --- a/test/mock/moto-e-gen1.cc +++ b/test/mock/moto-e-gen1.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/moto-g-gen1.cc b/test/mock/moto-g-gen1.cc index c37a6ba..b90216b 100644 --- a/test/mock/moto-g-gen1.cc +++ b/test/mock/moto-g-gen1.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/moto-g-gen2.cc b/test/mock/moto-g-gen2.cc index be61a4c..b6a1586 100644 --- a/test/mock/moto-g-gen2.cc +++ b/test/mock/moto-g-gen2.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/moto-g-gen3.cc b/test/mock/moto-g-gen3.cc index c8741db..624aca2 100644 --- a/test/mock/moto-g-gen3.cc +++ b/test/mock/moto-g-gen3.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/moto-g-gen4.cc b/test/mock/moto-g-gen4.cc index c60b8ad..1da127c 100644 --- a/test/mock/moto-g-gen4.cc +++ b/test/mock/moto-g-gen4.cc @@ -436,6 +436,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/moto-g-gen5.cc b/test/mock/moto-g-gen5.cc index 168a6a9..f29c7da 100644 --- a/test/mock/moto-g-gen5.cc +++ b/test/mock/moto-g-gen5.cc @@ -421,6 +421,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/nexus-s.cc b/test/mock/nexus-s.cc index 2a162fb..42199b9 100644 --- a/test/mock/nexus-s.cc +++ b/test/mock/nexus-s.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/nexus10.cc b/test/mock/nexus10.cc index 31d4d6b..b3bcaab 100644 --- a/test/mock/nexus10.cc +++ b/test/mock/nexus10.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/nexus4.cc b/test/mock/nexus4.cc index 2baf5c2..241a517 100644 --- a/test/mock/nexus4.cc +++ b/test/mock/nexus4.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/nexus5x.cc b/test/mock/nexus5x.cc index 70ee102..228bae0 100644 --- a/test/mock/nexus5x.cc +++ b/test/mock/nexus5x.cc @@ -496,6 +496,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/nexus6.cc b/test/mock/nexus6.cc index c2e82c6..0784607 100644 --- a/test/mock/nexus6.cc +++ b/test/mock/nexus6.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/nexus6p.cc b/test/mock/nexus6p.cc index e73269a..70e9f35 100644 --- a/test/mock/nexus6p.cc +++ b/test/mock/nexus6p.cc @@ -496,6 +496,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/nexus9.cc b/test/mock/nexus9.cc index b40aaf9..5d4fd8b 100644 --- a/test/mock/nexus9.cc +++ b/test/mock/nexus9.cc @@ -370,6 +370,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/oneplus-3t.cc b/test/mock/oneplus-3t.cc index a80d767..16728d1 100644 --- a/test/mock/oneplus-3t.cc +++ b/test/mock/oneplus-3t.cc @@ -452,6 +452,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/oneplus-5.cc b/test/mock/oneplus-5.cc index b540fc9..849e244 100644 --- a/test/mock/oneplus-5.cc +++ b/test/mock/oneplus-5.cc @@ -496,6 +496,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/oneplus-5t.cc b/test/mock/oneplus-5t.cc index 70ebfea..e58ebfe 100644 --- a/test/mock/oneplus-5t.cc +++ b/test/mock/oneplus-5t.cc @@ -496,6 +496,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/oppo-a37.cc b/test/mock/oppo-a37.cc index 283d09a..5065ab6 100644 --- a/test/mock/oppo-a37.cc +++ b/test/mock/oppo-a37.cc @@ -370,6 +370,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/oppo-r15.cc b/test/mock/oppo-r15.cc index 383241f..16db06f 100644 --- a/test/mock/oppo-r15.cc +++ b/test/mock/oppo-r15.cc @@ -476,6 +476,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/oppo-r9.cc b/test/mock/oppo-r9.cc index 8736385..e45e2e3 100644 --- a/test/mock/oppo-r9.cc +++ b/test/mock/oppo-r9.cc @@ -456,6 +456,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/padcod-10.1.cc b/test/mock/padcod-10.1.cc index 3fe01cb..a9a2ee2 100644 --- a/test/mock/padcod-10.1.cc +++ b/test/mock/padcod-10.1.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/pixel-2-xl.cc b/test/mock/pixel-2-xl.cc index 04cacac..612acb1 100644 --- a/test/mock/pixel-2-xl.cc +++ b/test/mock/pixel-2-xl.cc @@ -496,6 +496,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/pixel-c.cc b/test/mock/pixel-c.cc index fa816c1..93fce0d 100644 --- a/test/mock/pixel-c.cc +++ b/test/mock/pixel-c.cc @@ -370,6 +370,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/pixel-xl.cc b/test/mock/pixel-xl.cc index 189ef44..2c8e75d 100644 --- a/test/mock/pixel-xl.cc +++ b/test/mock/pixel-xl.cc @@ -452,6 +452,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/pixel.cc b/test/mock/pixel.cc index 66c2e05..969e978 100644 --- a/test/mock/pixel.cc +++ b/test/mock/pixel.cc @@ -452,6 +452,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/xiaomi-mi-5c.cc b/test/mock/xiaomi-mi-5c.cc index 29dbf27..886508a 100644 --- a/test/mock/xiaomi-mi-5c.cc +++ b/test/mock/xiaomi-mi-5c.cc @@ -456,6 +456,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/xiaomi-redmi-2a.cc b/test/mock/xiaomi-redmi-2a.cc index 40eef34..3e0d7a8 100644 --- a/test/mock/xiaomi-redmi-2a.cc +++ b/test/mock/xiaomi-redmi-2a.cc @@ -400,6 +400,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/xiaomi-redmi-note-3.cc b/test/mock/xiaomi-redmi-note-3.cc index 00937bc..a9847b5 100644 --- a/test/mock/xiaomi-redmi-note-3.cc +++ b/test/mock/xiaomi-redmi-note-3.cc @@ -496,6 +496,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/xiaomi-redmi-note-4.cc b/test/mock/xiaomi-redmi-note-4.cc index faee5c5..7044735 100644 --- a/test/mock/xiaomi-redmi-note-4.cc +++ b/test/mock/xiaomi-redmi-note-4.cc @@ -436,6 +436,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/xperia-c4-dual.cc b/test/mock/xperia-c4-dual.cc index 9203fb1..2024876 100644 --- a/test/mock/xperia-c4-dual.cc +++ b/test/mock/xperia-c4-dual.cc @@ -436,6 +436,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/test/mock/xperia-sl.cc b/test/mock/xperia-sl.cc index 28ec108..21b0618 100644 --- a/test/mock/xperia-sl.cc +++ b/test/mock/xperia-sl.cc @@ -342,6 +342,14 @@ TEST(ISA, fp16_arith) { ASSERT_FALSE(cpuinfo_has_arm_fp16_arith()); } +TEST(ISA, neon_fp16_arith) { + ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith()); +} + +TEST(ISA, neon_dot) { + ASSERT_FALSE(cpuinfo_has_arm_neon_dot()); +} + TEST(ISA, jscvt) { ASSERT_FALSE(cpuinfo_has_arm_jscvt()); } diff --git a/tools/isa-info.c b/tools/isa-info.c index ea98648..0548ab9 100644 --- a/tools/isa-info.c +++ b/tools/isa-info.c @@ -138,8 +138,9 @@ int main(int argc, char** argv) { printf("\tNEON-FP16: %s\n", cpuinfo_has_arm_neon_fp16() ? "yes" : "no"); printf("\tNEON-FMA: %s\n", cpuinfo_has_arm_neon_fma() ? "yes" : "no"); printf("\tNEON VQRDMLAH/VQRDMLSH: %s\n", cpuinfo_has_arm_neon_rdm() ? "yes" : "no"); - printf("\tNEON FP16 arithmetics: %s\n", cpuinfo_has_arm_fp16_arith() ? "yes" : "no"); + printf("\tNEON FP16 arithmetics: %s\n", cpuinfo_has_arm_neon_fp16_arith() ? "yes" : "no"); printf("\tNEON complex: %s\n", cpuinfo_has_arm_fcma() ? "yes" : "no"); + printf("\tNEON dot product: %s\n", cpuinfo_has_arm_neon_dot() ? "yes" : "no"); printf("Cryptography extensions:\n"); printf("\tAES: %s\n", cpuinfo_has_arm_aes() ? "yes" : "no"); |