我有以下用C编写的代码摘录,
double* res;
posix_memalign((void **)&res, 32, sizeof(double)*4);
__m256 ymm0, ymm1, ymm2, ymm3;
ymm0 = _mm256_load_pd(vector_a);
ymm1 = _mm256_load_pd(vector_b);
ymm2 = _mm256_mul_pd(ymm1, ymm2);
ymm3 = _mm256_store_pd((double*)res, ymm3); <--- problem line,
当我编译时,我得到以下错误消息,
error: assigning to '__m256' from incompatible type 'void'
ymm3 = _mm256_store_pd((double*)res, ymm3);
我认为将它转换为“
res
”的双指针可以解决问题,但没有运气。。有人能帮忙吗?
编译器-clang 3.4-x86 ubuntu
最佳答案
_mm256_store_pd不返回任何内容。删除对ymm3的分配:_mm256_store_pd((double*)res, ymm3);
另外,您不需要强制转换res
,因为它已经double*