【发布时间】:2018-01-22 08:24:56
【问题描述】:
我希望使用 SIMD 指令一次将寄存器中的所有 32 位整数相乘,这是我迄今为止尝试过的:
int32_t a [8] = {1, 2, 3, 4, 5, 6, 7, 8};
int32_t b [8] = {1, 2, 3, 4, 5, 6, 7, 8};
__m256i tmp1 = _mm256_loadu_si256((__m256i*) a);
__m256i tmp2 = _mm256_loadu_si256((__m256i*) b);
__m256 tmp3 = _mm256_mul_epi32(tmp1,tmp2);
遗憾的是它没有产生正确的结果,这基本上是我得到的: 1、0、9、0、25、0、49、0
我还没有找到替代说明,我们将不胜感激。
【问题讨论】:
标签: c++ x86 simd intrinsics avx2