2017-01-21 49 views
1

我試圖用gcc中的變量來表示ymm0寄存器中的值。代表gcc中的變量寄存器YMM0

我曾嘗試這樣的代碼:

register __m256 _YMM0_r asm ("ymm0") = _YMM0; 

但我收到此錯誤信息:

encryptor.c:72:17: error: data type of ‘_YMM0_r’ isn’t suitable for a register 
    register __m256 _YMM0_r asm ("ymm0") = _YMM0; 

有一些其他類型的比__m256,我應該爲256個寄存器使用?我使用

gcc版本是:GCC-6.real(Ubuntu的6.2.0-5ubuntu12)6.2.0 20161005

+0

您是否閱讀過https://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html。如果這不起作用,讓編譯器進行寄存器分配。 – user877329

+0

我現在有,這很有趣,但就我所見,它並沒有真正幫助我解決問題。 –

+2

根據[docs](https://gcc.gnu.org/onlinedocs/gcc/Local-Register-Variables.html):*此功能唯一支持的用途是在調用時爲輸入和輸出操作數指定寄存器擴展asm。*可能通過發佈asm(和約束),有人可以找到你的問題的解決方案。 –

回答

-1

這不是使用正確的標誌來編譯器的一個簡單的例子。

如果使用-mavx2標誌對其進行編譯,代碼就可以正常工作。