我在我的C++项目中导入了immintrin.h头文件,并尝试使用_mm256_cos_pd函数,但遇到了错误“Use of undeclared identifier '_mm256_cos_pd'”。
根据英特尔的文档(https://www.intel.com/content/www/us/en/docs/cpp-compiler/developer-guide-reference/2021-8/mm-cos-pd-mm256-cos -pd.html),_mm256_cos_pd函数是计算256位浮点(双精度)向量的余弦的函数。它是 Intel AVX 扩展指令集的一部分。
我可以成功使用其他命令(例如_mm256_add_pd和_mm256_mul_pd),但不能成功使用_mm256_cos_pd。
我做了以下测试:
使用的编译器是gcc(13.1),支持AVX2指令集。
编译器的构建选项启用 AVX2 指令集。我在 CMakeLists.txt 文件中使用 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx2") 来启用 AVX2 指令集。
确保CPU支持AVX2指令集。
这并不映射到真正的指令,因此 AVX 等无关紧要。这是一条 SVML(伪)指令。
参见 C++ 错误:‘_mm_sin_ps’ 未在此范围内声明
MSVC 和 ICC 都支持 SVML,GCC 或 Clang 不支持。