[英]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.