编译器无法识别_mm_cbrt_ps等SIMD intrinsic函数,求配置方案
解决__m128向量立方根等intrinsic函数不被识别的编译问题
你需要调整编译相关配置,具体修改如下:
补充指令集编译标志
_mm_cbrt_ps、_mm_pow_ps这类数学相关的SIMD intrinsic依赖FMA指令集支持,在编译选项中添加-mfma。修改后的target_compile_options配置应为:target_compile_options(untitled9 PRIVATE -march=native -mavx2 -msse2 -mfma)虽然
-march=native会自动检测宿主机CPU指令集,但虚拟机环境可能存在识别偏差,显式添加-mfma能确保兼容性。升级C标准版本
当前配置的C99标准对部分新intrinsic函数支持不足,将C标准升级到C11:set(CMAKE_C_STANDARD 11)代码中包含正确的头文件
必须在你的C源码中引入immintrin.h头文件,它包含了所有AVX、SSE系列intrinsic的定义:#include <immintrin.h>缺少这个头文件,编译器根本无法识别这些intrinsic函数。
验证编译器版本
确保使用的GCC版本≥5.0(Clang≥3.5),老版本编译器对新SIMD intrinsic的支持不完善。可在终端执行gcc --version确认版本,版本过低需升级编译器。
另外,你配置的-no-pie标志可以保留,不会影响intrinsic函数的识别。
内容的提问来源于stack exchange,提问作者someone
相关产品推荐
相关产品推荐

