簡體   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