she*_*eng 14 c gcc sse intrinsics
我举一个例子来问我的问题.现在我有一个叫做的函数do_something().
它有三个版本:do_something(),do_something_sse3(),和do_something_sse4().当我的程序运行时,它将检测CPU功能(看它是否支持SSE3或SSE4)并相应地调用三个版本之一.
问题是:当我建立我的程序与海湾合作委员会,我必须设置-msse4为do_something_sse4()编译(如头文件<smmintrin.h>被包括在内).
但是,如果我设置-msse4,则允许gcc使用SSE4指令,并且一些内在函数do_something_sse3()也被转换为某些SSE4指令.因此,如果我的程序在仅支持SSE3(但没有SSE4)的CPU上运行,则在调用时会导致"非法指令" do_something_sse3().
也许我有一些不好的做法.你能提一些建议吗?谢谢.
我认为Mystical的提示很好,但是如果你真的想在一个文件中执行它,你可以使用适当的编译指示,例如:
#pragma GCC target("sse4.1")
Run Code Online (Sandbox Code Playgroud)
需要GCC 4.4,AFAIR.
| 归档时间: |
|
| 查看次数: |
2312 次 |
| 最近记录: |