繁体   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