我有以下用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*

10-08 07:36