存储操作 (SSE2 整数内部)
[本文档仅供预览,并可能在以后的版本中更改。 Blank topics are included as placeholders.]
Microsoft 专用
以下存储操作内部及其各自的命令是工作在支持 Intel 处理器的流 SIMD 扩展 2 (SSE2) 命令。
有关使用本主题中的代码示例的语法的说明,请参见 使用流 SIMD 扩展的浮点内部。
将内部使用 __m128、 __m128i和 __m128d 数据类型,在 Itanium 处理器家族 (IPF) (ipf) 处理器不支持。 使用 __m64 数据类型的任何 SSE2 内部在 x64 处理器不支持。
emmintrin.h 头文件包含 SSE2 指令内部函数说明。
void _mm_store_si128 (__m128i *p, __m128i a);
MOVDQA
存储 128 位值。 地址 p 必须是对齐的 16 字节。
*p := a
有关更多信息,请参见 _mm_store_si128。
void _mm_storeu_si128 (__m128i *p, __m128i a);
MOVDQU
存储 128 位值。 地址 p 不需要是对齐的 16 字节。
*p := a
有关更多信息,请参见 _mm_storeu_si128。
void _mm_maskmoveu_si128(__m128i d, __m128i n, char *p);
MASKMOVDQU
请有条件地存储 d 的字节数组元素解决 p。 高位在该 n 的每个字节确定是否将存储在 d 的相应字节。 地址 p 不需要是对齐的 16 字节。
if (n0[7]) p[0] := d0
if (n1[7]) p[1] := d1
...
if (n15[7]) p[15] := d15
有关更多信息,请参见 _mm_maskmoveu_si128。
void _mm_storel_epi64(__m128i *p, __m128i a);
MOVQ
存储值的下半部分 64 位指向由 p。
*p[63:0]:=a0