首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >掩码矢量Intel AVX-512指令的装配语法

掩码矢量Intel AVX-512指令的装配语法
EN

Stack Overflow用户
提问于 2014-01-09 22:16:42
回答 2查看 1.2K关注 0票数 7

为了测试目的,我正在为Intel的Xeon和Icc内联汇编程序编写简短的程序集片段。现在我想要使用蒙面向量指令,但是我无法将它们提供给内联汇编程序。

对于这样的代码:

代码语言:javascript
复制
vmovapd  -64(%%r14, %%r10), %%zmm0{%%k1} 

我得到了错误信息

代码语言:javascript
复制
/tmp/icpc5115IWas_.s: Assembler messages:
/tmp/icpc5115IWas_.s:563: Error: junk `%k1' after register

我尝试了很多不同的组合,但都没有效果。编译器版本在Linux下是智能化64/13.1up03,使用GAS语法。

编辑:上面的代码实际上适用于非扩展汇编程序。所以这个:

代码语言:javascript
复制
__asm__("vmovapd  -64(%r14, %r10), %zmm0{%k1} ")

工作,而以下内容不起作用:

代码语言:javascript
复制
__asm__("vmovapd  -64(%[src], %%r10), %%zmm0{%%k1} "
    :
    : [src]"r"(src)
    :)

我想这与在扩展模式注册名称之前使用双%的必要性有关。但是不,k的单一%也不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-13 11:32:13

我在inline http://software.intel.com/en-us/forums/topic/499145#comment-1776563中问了同样的问题,答案是,为了在扩展内联汇编程序中使用Xeon上的掩码寄存器,您必须在掩码寄存器修饰符周围使用双大括号。

代码语言:javascript
复制
vmovapd     %%zmm30,         (%%r15,    %%r10){{%%k1}}
票数 6
EN

Stack Overflow用户

发布于 2014-01-10 14:28:33

我认为您需要使用指令的蒙面变体: VMASKMOVPD

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21032395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档