use*_*420 5 c++ x86 sse sse2 visual-studio
如何在代码中签入 Visual Studio 编译器是否启用了 SSE/SSE2?
我试过了,#ifdef __SSE__但没有用。
关于 的一些附加信息_M_IX86_FP。
_M_IX86_FP 仅针对 32 位代码定义。64 位 x86 代码至少具有 SSE2。您可以使用 _M_AMD64 或 _M_X64 来确定代码是否为 64 位。
#ifdef __AVX2__
//AVX2
#elif defined ( __AVX__ )
//AVX
#elif (defined(_M_AMD64) || defined(_M_X64))
//SSE2 x64
#elif _M_IX86_FP == 2
//SSE2 x32
#elif _M_IX86_FP == 1
//SSE x32
#else
//nothing
#endif
Run Code Online (Sandbox Code Playgroud)
相关的预处理器宏两端各有两个下划线:
#ifdef __SSE__
#ifdef __SSE2__
#ifdef __SSE3__
#ifdef __SSE4_1__
#ifdef __AVX__
...etc...
Run Code Online (Sandbox Code Playgroud)
更新:显然,使用 Visual Studio 时,上面的宏不会自动为您预定义(即使它们存在于我曾经使用过的所有其他 x86 编译器中),因此如果您希望使用 gcc 实现可移植性,您可能需要自己定义它们, clang、ICC等...
| 归档时间: |
|
| 查看次数: |
9560 次 |
| 最近记录: |