【问题标题】:C/C++ intrinsic for assembly VMOVD汇编 VMOVD 的 C/C++ 内在函数
【发布时间】:2017-09-10 12:48:16
【问题描述】:

如何(在 C/C++ 中)将 32 位整数加载到 SSE 寄存器的低 32 位,而其余部分未定义?我的意思是像vmovd xmm0, eax 一样的效率。

【问题讨论】:

  • vmovd = _mm_cvtsi32_si128 但我想你知道,那为什么不合适呢?
  • @harold,我不知道,谢谢!
  • 在 Intel 的内在函数指南中,您可以搜索 (int 以查找第一个参数是 intint * 的内在函数。 (有关链接,请参阅sse tag wiki)。或者您可以搜索 movd 以查找 movd 的内在函数,在内部函数指南或英特尔的 insn 参考手册中:felixcloutier.com/x86/MOVD:MOVQ.html
  • @PeterCordes here,顺便说一句,你知道那个地方吗?可能有用
  • @harold:哦,酷,谢谢你的链接。添加到 x86 和 SSE 标签 wiki。

标签: c++ assembly x86 vectorization sse


【解决方案1】:

您可能正在寻找内在的_mm_cvtsi32_si128 (int a)。这将复制低 32 位。高位设置为零。

【讨论】:

    猜你喜欢
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多