在AT& T组装中,“{”的含义是什么

时间:2013-06-26 09:24:48

标签: assembly intel cpu-registers

我正在使用Intel Xeon Phi。 我像

那样编译程序
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 个答案:

答案 0 :(得分:3)

Michael在所有三点都是正确的:

1){aaaa}和{bbbb}是操作数限定符,指示输入寄存器的每个“通道”(在两种情况下为zmm14)以特定方式“调配”(“{aaaa}”表示每个通道的低阶元素将被复制到通道的所有四个“元素”,因此如果zmm14包含,从高阶到低阶,160,150,140,​​130,120,110,100,90, 80,70,60,50,40,30,30,10;然后zmm14 {aaaa}将是130,130,130,130,90,90,90,90,50,50,50,50,10,10 ,10,10;和zmm14 {bbbb}将是140,140,​​140,​​140,​​100,100,100,100,60,60,60,60,20,20,20,20。zmm14 {dcba}是默认的混合,就像说zmm14一样,它根本就没有混合。)

2){k3}操作数限定符表示仅更改输出寄存器中的那些元素(zmm9,在最上面的指令中),其中k3掩码寄存器中的相应位被置位;保留zmm9中的所有其他元素不变。

3)迈克尔也完全在目标上,你真的无法将所有这些东西都用掉。您将需要研究架构文档,因为Xeon Phi VPU架构与MMX和SSE有很大不同。掩码寄存器(用作控制哪些元素被修改的谓词),调配,广播以及上下转换的引入。在Michael链接的文档中,介绍这个级别的Xeon Phi架构的相关章节是第7章。您可能会仔细阅读的另一个文档是:http://software.intel.com/en-us/articles/intel-xeon-phi-coprocessor-vector-microarchitecture

在您的确切查询或Michael的响应中未提及的是{rz-sae}指令限定符意味着该指令应执行Rounding to Zero,并且应该静默处理算术异常。

此致 Brian R. Nickerson