C++ image processing and machine learning library with using of SIMD: SSE, AVX, AVX-512, AMX for x86/x64, VMX(Altivec) and VSX(Power7) for PowerPC, NEON for ARM.
I was wondering how to enable neon instructions since there is no SIMD_NEON option for cmake compilation. I cloned the current repo (date 2024-04-02) and compiled on my Raspberry Pi with cmake and make:
cmake ../prj/cmake -DSIMD_TOOLCHAIN="" -DSIMD_TARGET="" && make
The Output was:
Simd Library:
Build type: 'Release'
Target: aarch64
Library type: STATIC
Toolchain: /usr/bin/c++
Compiler ID: GNU
Compiler Version: 12.2.0
Test framework: ON
Performance statistic: OFF
Synet: ON
Debug INT8: OFF
Hide internal: OFF
AMX emulation: OFF
Runtime algorithm choise: ON
OpenCV tests: OFF
Install target: ON
Uninstall target: ON
Python wrapper: ON
Binutils Version: 2.40
Extract project version:
Last project version '6.1.136.master-70225b50' is equal to current version '6.1.136.master-70225b50'.
I checked whether any neon instructions were used with
It did use the SIMD instruction uabd, but no neon instruction was used. Did I make any mistakes during compilation, or are there actually no NEON instructions used in the current build?
It seems that I had an outdated list of neon instructions (only armv7). When searching with
awk '/[ \t](addv|fsqrt|fmulx|fdiv|saddlv|uaddlv)[ \t]/' simd.asm
I found the neon instructions
I was wondering how to enable neon instructions since there is no SIMD_NEON option for cmake compilation. I cloned the current repo (date 2024-04-02) and compiled on my Raspberry Pi with cmake and make:
cmake ../prj/cmake -DSIMD_TOOLCHAIN="" -DSIMD_TARGET="" && make
The Output was:Simd Library: Build type: 'Release' Target: aarch64 Library type: STATIC Toolchain: /usr/bin/c++ Compiler ID: GNU Compiler Version: 12.2.0 Test framework: ON Performance statistic: OFF Synet: ON Debug INT8: OFF Hide internal: OFF AMX emulation: OFF Runtime algorithm choise: ON OpenCV tests: OFF Install target: ON Uninstall target: ON Python wrapper: ON Binutils Version: 2.40 Extract project version: Last project version '6.1.136.master-70225b50' is equal to current version '6.1.136.master-70225b50'.
I checked whether any neon instructions were used with
but none where found! When I just searched for "Neon" there were lots of matches, but when I looked at one Neon Function it was the following:
It did use the SIMD instruction uabd, but no neon instruction was used. Did I make any mistakes during compilation, or are there actually no NEON instructions used in the current build?