簡體   English   中英

GCC內聯SSE代碼

[英]GCC inline SSE code

關於向量擴展,有些問題困擾着我。

該文檔: Intel® Advanced Vector Extensions Programming Reference

狀態:

VPSRLD ymm1, ymm2, imm8

所以我繼續:

__asm__ (
    "vpsrld %ymm0, %ymm0, $0x4"
);

GCC 4.8.2-19ubuntu1吐出:

Error: operand type mismatch for `vpsrld'

然后在沒有任何發現的情況下進行谷歌搜索之后,我開始更改內容,並進行編譯:

__asm__ (
    "vpsrld  $0x4, %ymm0, %ymm0"
);

有人知道為什么與參考指南相比有人會更改訂單嗎?

感謝您的任何幫助。

我認為這是因為在GCC工具鏈中最常使用的GNU匯編器使用AT&T匯編器語法,該語法與Intel的語法不同。

例如, mov eax, 5 Intel格式的mov eax, 5變為AT&T中的mov $5, %eax

您可以在Wikipedia上找到有關這兩個版本的一些信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM