提问者:小点点

未声明_MM256_STORE_EPI32[重复]


基本上,我的程序就像:

#include <immintrin.h>
...
int* buf = (int*)_mm_malloc(sizeof(int) * 8, 32);
__m256i vi;
//some operations on vi
...
_mm256_store_epi32(buf, vi);
_mm_free(buf)

编译器抱怨“错误:未在此作用域中声明”_mm256_store_epi32“。。。注意:生成程序时(使用标志-mavx-mavx2),建议的替代方案:”_mm256_store_epi64“。 让我感到困惑的是,当它被_mm256_store_epi64替换时,它就编译成功了。 我的gcc版本是7.5.0.
在这里发布了一个类似的问题,但没有帮助。 有谁能给我提供一些解决办法吗?


共1个答案

匿名用户

根据intrinsics指南(https://software.intel.com/sites/landingpage/intrinsicsguide/#text=_mm256_store_epi32&expand=5573,5567,5567,5567),_mm256_store_epi32intrinsic需要这些CPUID标志:AVX512VL+AVX512F。

如果您使用-mavx512vl-mavx512f使其内在可用(前提是您的硬件目标支持它),则可能是这样。