AVX - 将 __256 向量存储回 C 中的内存 (void**),
AVX - storing __256 vector back to the memory (void**) in C,
我有以下用 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 没有 return 任何东西。删除对 ymm3 的分配:
_mm256_store_pd((double*)res, ymm3);
你也不需要投 res
因为它已经是 double*
我有以下用 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 没有 return 任何东西。删除对 ymm3 的分配:
_mm256_store_pd((double*)res, ymm3);
你也不需要投 res
因为它已经是 double*