相关疑难解决方法(0)

在GCC中使用不同版本的SSE内在函数的正确方法是什么?

我举一个例子来问我的问题.现在我有一个叫做的函数do_something().

它有三个版本:do_something(),do_something_sse3(),和do_something_sse4().当我的程序运行时,它将检测CPU功能(看它是否支持SSE3或SSE4)并相应地调用三个版本之一.

问题是:当我建立我的程序与海湾合作委员会,我必须设置-msse4do_something_sse4()编译(如头文件<smmintrin.h>被包括在内).

但是,如果我设置-msse4,则允许gcc使用SSE4指令,并且一些内在函数do_something_sse3()也被转换为某些SSE4指令.因此,如果我的程序在仅支持SSE3(但没有SSE4)的CPU上运行,则在调用时会导致"非法指令" do_something_sse3().

也许我有一些不好的做法.你能提一些建议吗?谢谢.

c gcc sse intrinsics

14
推荐指数
1
解决办法
2312
查看次数

标签 统计

c ×1

gcc ×1

intrinsics ×1

sse ×1