簡體   English   中英

大括號“{”在 AT&T 匯編中是什么意思

[英]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.

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