gpt4 book ai didi

c++ - 如何启用 SSSE3 内在函数但禁用它们在编译器优化中的使用

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:07:47 25 4
gpt4 key购买 nike

我有一个使用 SSSE3 内部命令(注意三重 S)的代码和运行时检查是否使用它,因此我假设应用程序应该在没有 SSSE3 支持的 CPU 上执行。但是,当使用 -mssse3 和 -O1 优化时,编译器还会插入我没有明确调用的 SSSE3 指令,因此程序崩溃。

有没有办法在我明确调用相关内部函数时启用 SSSE3 代码,但阻止编译器添加自己的 SSSE3 代码?

请注意,我无法禁用 -O1 优化。

最佳答案

此问题的解决方案是不要使用 -mssse3 选项编译所有程序代码,而只使用该选项编译实际使用这些功能的部分。换句话说:

 // main.cpp
...

if (use_ssse3())
do_something_ssse3();
else
do_something_traditional();

 // traditional.cpp:
void do_something_traditional()
{
...
code goes here ...
}

 // ssse3.cpp:
void do_something_ssse3()
{
...
code goes here ...
}

只有“ssse3.cpp”应该使用-mssse3 标志进行编译。

关于c++ - 如何启用 SSSE3 内在函数但禁用它们在编译器优化中的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17670948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com