2013-08-31 47 views
2

我的機器是Core2微體系結構,我試圖編譯一些針對SSE指令集的算術代碼。我在網絡和官方手冊上搜索過,我相信我所要做的就是添加國旗-march=native,因爲我的芯片支持SSE。無法通過gcc中的「-march = native」或者Core2芯片中的任何其他標誌激活SSE指令集

但是,當我使用gcc -march=native -Q --help=target -v來檢查標誌是否真正起作用時,屏幕上顯示的結果不是我所期望的。例如:

-msse        [disabled] 
-msse2        [disabled] 
-msse2avx       [disabled] 
-msse3        [disabled] 
-msse4        [disabled] 
-msse4.1       [disabled] 
-msse4.2       [disabled] 
-msse4a        [disabled] 
-msse5        
-msseregparm      [disabled] 
-mssse3        [disabled] 

我發現所有的SSE(甚至MMX)指令都被禁用。 任何人都可以告訴我爲什麼以及如何解決它? 非常感謝!

+0

而且我知道另一種激活該選項的方法是手動添加-mmsse等標誌。但是,我很好奇,爲什麼march = native在我的系統中不起作用:core2,Ubuntu 12.04(64位系統),gcc 4.6.3 – user2719257

+0

我不會依賴:'native' - try:'-march = core2 '。 –

+0

當我嘗試-march = core2時,會得到相同的結果 – user2719257

回答

4

gcc -march=native -Q --help=target -v輸出不包括-march定義的覆蓋,表現爲GCC之前運行的處理架構特定的覆蓋代碼返回的輸出。

有關此問題,請參閱bug report,特別是它會讓用戶困惑,比如我自己。