google-code-export / bullet

Automatically exported from code.google.com/p/bullet
0 stars 0 forks source link

Enable Apple's {SSE, NEON, Test} on Linux + {x86, arm} #784

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
(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

Attachments:

GoogleCodeExporter commented 9 years ago
moved to https://github.com/bulletphysics/bullet3/issues/66

Original comment by erwin.coumans on 30 Mar 2014 at 5:10