繁体   English   中英

如何使用SSE指令?

[英]How can I use SSE instruction?

我在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

如何使用此示例代码? 还是可以使用任何示例代码?

该代码示例的标题是“ Microsoft Specific”。 这意味着这些功能特定于C ++的Microsoft实现,并且不是跨平台的。 这是一些针对SSE指令的特定于Intel的指南。 这是gcc文档,涉及用于特定程序集优化(包括SSE)的命令行标志。 祝您好运,上证所可能会变得毛茸茸。

这与Microsoft特定的内在函数无关,而与数据类型有关。 两种编译器中的实际内在函数都是100%相同的,并且是事实上的标准(源自Intel)。

您面临的问题是__m128i类型是(为了方便起见)MSVC下的union ,其中包括诸如m128i_u16字段。 您链接到的代码示例假定了这一点。

在gcc下, __m128i 不是联合,因此毫不奇怪,它没有这些字段。 这并不是真正的弊端,因为这样访问联合体中的字段会首先抵消您使用SSE可能获得的任何收益,因此除了上面的演示片段外,您(几乎)永远不会想要使用事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM