Mar*_*k S 5 c++ optimization gcc sse sse3
我有一个使用SSSE3内部命令的代码(注意三S)和运行时检查是否使用它,因此我假设应用程序应该在没有SSSE3支持的CPU上执行.但是,当使用-mssse3和-O1优化时,编译器还会插入我没有明确调用的SSSE3指令,因此程序崩溃.
有什么方法可以在我明确调用相关的内部函数时启用SSSE3代码,但是阻止编译器添加自己的SSSE3代码?
请注意,我无法禁用-O1优化.
Mat*_*son 10
此问题的解决方案是不使用-mssse3选项编译所有程序代码,并且仅使用该选项编译实际使用这些功能的部分.换一种说法:
// main.cpp
...
if (use_ssse3())
do_something_ssse3();
else
do_something_traditional();
Run Code Online (Sandbox Code Playgroud)
// traditional.cpp:
void do_something_traditional()
{
...
code goes here ...
}
Run Code Online (Sandbox Code Playgroud)
// ssse3.cpp:
void do_something_ssse3()
{
...
code goes here ...
}
Run Code Online (Sandbox Code Playgroud)
只应使用-mssse3标志编译"ssse3.cpp" .
| 归档时间: |
|
| 查看次数: |
2862 次 |
| 最近记录: |