(1)
Enable Apple's {SSE, NEON} optimization and test suit on Linux + {ARMv7, x86} +
GCC
- Add Test/CMakeLists.txt for their test suit
- Implement the required ReadTicks(), TicksTo*() for Linux platform
- (For ARM) Run the test suit (Test/AppUnitTest) on scratchbox and pass all test
- Test_quat_aos_neon.cpp
. Temporary disable compile the "class Quat_ref" code due to it cause
compile error
(2)
Add CrossBuild-ARMv7.cmake file for cross build, usage :
export TOOLCHAIN_PREFIX=/opt/codesourcery/2010q3/bin/arm-none-eabi-
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../CrossBuild-ARMv7.cmake -DHAS_NEON=1 -DBUILD_SIMD_TESTS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo ../
HAS_NEON : if target device support neon
(3)
vld1q_f32_aligned_postincrement()
use "vld1 + 128-bit + post pointer update" instruction
=> "vld1.f32 {%q0}, [%1, :128]!"
use "q" in inline assembly, but due to this depends on gcc internal
implementation, I only test GCC4.6.4 and it is work
Once some GCC version can not support it, we can use backup solution
(i.e. neon-intrinsic, the ELSE path) if there are any
Original issue reported on code.google.com by cycheng....@gmail.com on 5 Jan 2014 at 4:11
Original issue reported on code.google.com by
cycheng....@gmail.com
on 5 Jan 2014 at 4:11Attachments: