小编use*_*769的帖子

_mm_store_si128抛出异常

所以我一直在尝试自己学习SEE优化,我不太了解它,我认为一个简单的函数只是将内存归零很容易实现,所以我继续尝试自己实现它.

这是零内存函数,它从缓冲区开始循环到缓冲区结束,并使用_mm_store_si128将其清零.

bool zeromem( byte * _dest, uint _sz )
{
    if ( _dest == nullptr )
        return false;
    __m128i zero = _mm_setzero_si128( );

    for ( auto i = rcast<__m128i*>( _dest ),
          end = rcast<__m128i*>( _dest + _sz );
          i < end; ++i )
    {
        _mm_store_si128( i, zero );
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

抛出异常: 即使指针不是0x00000,也会发生访问冲突(0x00000).

我做的测试只是分配1024字节的内存,然后调用zeromem.

在第一次迭代时抛出异常.

c++ sse simd

2
推荐指数
1
解决办法
633
查看次数

标签 统计

c++ ×1

simd ×1

sse ×1