[英]What does brace "{" mean in AT&T assembly
我正在使用英特爾至強融核。 我編譯程序
icpc -mmic -S xxxx.cpp
匯編代碼中有一些我不明白的語法。
vgetmantpd $0, %zmm2, %zmm9{%k3} #85.59 c79
vsubpd %zmm11, %zmm10, %zmm12{%k3} #85.59 c83
vpminsd %zmm14{aaaa}, %zmm12, %zmm13 #85.59 c87
vcvtpd2ps {rz-sae}, %zmm9, %zmm6{%k3} #85.59 c91
vpminud %zmm14{bbbb}, %zmm13, %zmm15 #85.59 c95
%zmm12{%k3} 中的 "{"/"}" 是什么意思。 什么是 %k3? 什么是 %zmm14{bbbb} ?
邁克爾在所有三點上都是正確的:
1) {aaaa} 和 {bbbb} 是操作數限定符,它們指示輸入寄存器的每個“通道”(zmm14,在這兩種情況下)以特定方式“混合”(“{aaaa}”表示低階元素每個車道的所有四個“元素”都要復制到車道的所有四個“元素”中,所以如果包含zmm14,從高階到低階,160, 150, 140, 130, 120, 110, 100, 90, 80, 70 , 60, 50, 40, 30, 20, 10; 那么 zmm14{aaaa} 將是 130, 130, 130, 130, 90, 90, 90, 90, 50, 50, 50, 50, 10, 10, 1 10; 和 zmm14{bbbb} 將是 140, 140, 140, 140, 100, 100, 100, 100, 60, 60, 60, 60, 20, 20, 20, 20. zmm14{dcizzle, 是默認值即與僅說 zmm14 相同,並且根本沒有混淆。)
2) {k3} 操作數限定符意味着只更改輸出寄存器(zmm9,在最頂層指令中)的那些元素,這些元素為其設置了 k3 掩碼寄存器中的相應位; 保持 zmm9 中的所有其他元素不變。
3)而且邁克爾也完全有目標,你真的無法預測所有這些東西。 您將需要研究架構文檔,因為至強融核 VPU 架構與 MMX 和 SSE 有很大不同。 引入掩碼寄存器(用作謂詞來控制修改哪些元素)、swizzles、廣播以及上下轉換。 在 Michael 鏈接的文檔中,介紹此級別至強融核架構的相關章節是第 7 章。您可能會仔細閱讀的另一個文檔是: http : //software.intel.com/en-us/articles/intel-至強融核協處理器向量微架構
在您的確切查詢或邁克爾的回復中沒有提到 {rz-sae} 指令限定符意味着該指令應該執行向零舍入,並且應該靜默處理算術異常。
問候,布賴恩·R·尼克森
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.