如何使用 SSE 指令?
Posted
技术标签:
【中文标题】如何使用 SSE 指令?【英文标题】:How can I use SSE instruction? 【发布时间】:2012-02-20 04:43:04 【问题描述】:我在 ubuntu linux 系统上遇到了一些 SSE 问题。
msdn(sse4) 上的示例源代码 在linux上使用sse4.1操作
gcc -o test test.c -msse4.1
然后错误信息:
error: request for member 'm128i_u16' in something not a structure or union
如何使用此示例代码? 或者任何示例代码都可以使用?
【问题讨论】:
所以您在 GCC 上使用 Microsoft 编译器 内部函数时遇到了问题。这让你感到惊讶吗? 【参考方案1】:代码示例的标题是“Microsoft 特定”。这意味着这些函数特定于微软的 c++ 实现,而不是跨平台的。 Here are some Intel-specific guides to SSE instructions. Here is gcc documentation concerning command-line flags for specific assembly optimizations, including SSE. 祝你好运,SSE 可能会有点毛骨悚然。
【讨论】:
【参考方案2】:这不是关于 Microsoft 特定的内在函数,而是关于数据类型。两个编译器中的实际内在函数是 100% 相同的,并且是事实上的标准(源自英特尔)。
您面临的问题是__m128i
类型——作为一种便利功能——是MSVC 下的union
,其中包括m128i_u16
等字段。您链接到的代码示例假定了这一点。
在 gcc 下,__m128i
不是联合,因此不出所料,没有这些字段。这并不是一个真正的缺点,因为像这样访问联合中的字段会消除您首先使用 SSE 可能获得的任何收益,所以除了在像上面这样的演示 sn-ps 中,您将(几乎)永远不想使用这样的事。
【讨论】:
以上是关于如何使用 SSE 指令?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SSE 指令集绝对 2 个双精度或 4 个浮点数? (最高 SSE4)
如何使用 SSE4.2 和 AVX 指令编译 Tensorflow?
如何使用 SSE4.2 和 AVX 指令编译 Tensorflow?
如何使用 SSE4.2 和 AVX 指令编译 Tensorflow?