我会举一个例子来问我的问题。现在我有一个名为do_something()
.
它具有三个版本:do_something()
、do_something_sse3()
和do_something_sse4()
。当我的程序运行时,它会检测 CPU 功能(查看它是否支持 SSE3 或 SSE4)并相应地调用三个版本之一。
问题是:当我用 GCC 构建我的程序时,我必须设置-msse4
为do_something_sse4()
编译(例如,<smmintrin.h>
要包含头文件)。
但是,如果我设置-msse4
了 ,则允许 gcc 使用 SSE4 指令,并且其中的一些内在函数do_something_sse3()
也被翻译为一些 SSE4 指令。因此,如果我的程序在仅支持 SSE3(但不支持 SSE4)的 CPU 上运行,则会在调用do_something_sse3()
.
也许我有一些不好的做法。你能给一些建议吗?谢谢。