SIMD 256i 仅处理 4 个元素

问题描述

我的理解是 m256i 操作可以同时操作 8 个 32 位整数。我在visual studio中做了一个简单的程序,如下所示:

#include <cstdint>
#include <immintrin.h>

int main()
{

    alignas(sizeof(int)) int32_t test0[8] = { 1,3,5,7,9,11,13,15 };
    alignas(sizeof(int)) int32_t test1[8] = { 15,1 };
    alignas(sizeof(int)) int32_t delta[8] = { 0 };
    __m256i* src0 = (__m256i*)(&test0[0]);
    __m256i* ref0 = (__m256i*)(&test1[0]);
    __m256i* delta0 = (__m256i*)(&delta[0]);

    *delta0 = _mm256_sub_epi32(*src0,*ref0);

    return 0;
}

当我运行它时,只有 delta 的前 4 个元素被更新 - 其他 4 个元素保持为 0。我在 x86 和 x64 构建中得到相同的行为。这里有什么问题我不知道让 AVM 工作吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...