何时的准则使用 EMMS

[本文档仅供预览,并可能在以后的版本中更改。 Blank topics are included as placeholders.]

Microsoft 专用

这些准则时帮助您确定使用 EMMS 命令:

  • 如果下命令是浮点命令,请使用 _mm_empty ,在 MMX 指令后 (例如,在对浮动、二进制值或长的二进制文件的计算之前)。

  • 不要为空,在已 null。 如果下命令使用一个 MMX 注册, _mm_empty 导致操作没有好处 (no-op)。

  • 使用浮点命令使用 MMX 指令的区域以及使用不同的功能。 这样就无需在一个重要循环体中 EMMS 指令。

  • __m64FP 数据类型的运行时初始化时使用 _mm_empty 。 这样可确保重置寄存器在数据类型之间转换。 请参见使用代码在下面的示例所示。

在初始化代码的正确用法 EMMS

用法不正确

正确用法

__m64 x = _m_paddd(y, z);
float f = init();
__m64 x = _m_paddd(y, z);
float f = (_mm_empty(), init());

此外,代码时,生成 MMX 指令时,必须注意任何情况:

  • 在使用将内部时。

  • 在使用流式 SIMD 扩展时 (对于使用 MMX 数据) 的这些内部。

  • 在使用 MMX 指令通过内联程序集时。

  • 当引用 __m64 数据类型变量。

有关 EMMS 的更多文档,请参见 Intel 文档。

MMX 内部使用 __m64 数据类型,如 x64 处理器不支持。

请参见

参考

MMX 技术

泛型 MMX 的技术支持内部