如何解决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 举报,一经查实,本站将立刻删除。