小编Sma*_*lti的帖子

为什么ARM NEON不比普通的C++快?

这是一个C++代码:

#define ARR_SIZE_TEST ( 8 * 1024 * 1024 )

void cpp_tst_add( unsigned* x, unsigned* y )
{
    for ( register int i = 0; i < ARR_SIZE_TEST; ++i )
    {
        x[ i ] = x[ i ] + y[ i ];
    }
}
Run Code Online (Sandbox Code Playgroud)

这是一个霓虹灯版本:

void neon_assm_tst_add( unsigned* x, unsigned* y )
{
    register unsigned i = ARR_SIZE_TEST >> 2;

    __asm__ __volatile__
    (
        ".loop1:                            \n\t"

        "vld1.32   {q0}, [%[x]]             \n\t"
        "vld1.32   {q1}, [%[y]]!            \n\t"

        "vadd.i32  q0 ,q0, q1               \n\t"
        "vst1.32   {q0}, …
Run Code Online (Sandbox Code Playgroud)

c++ arm neon cortex-a8

29
推荐指数
4
解决办法
2万
查看次数

标签 统计

arm ×1

c++ ×1

cortex-a8 ×1

neon ×1