将xmm3中的四个浮点数转换为内存中的四个整数

时间:2013-04-17 07:18:21

标签: assembly x86 sse sse2

我是sbie的新手,我很难找到它, 请告诉我转换的好方法是什么 (截断为“(int)float_”)四个打包浮点数 我在xmm3注册到四个整数和存储 它进入记忆(有些像“movaps oword [edx + 32],xmm3” 存储很清楚,但我找不到如何转换)

1 个答案:

答案 0 :(得分:3)

如果你重视自己的理智(和空闲时间),请使用内在因素:

int32_t *dest;
__m128 vf = _mm_set_ps(4.0f, 3.0f, 2.0f, 1.0f);
__m128i vi = _mm_cvttps_epi32(vf); // 4 x float -> 4 x int (with truncation)
_mm_store_epi32(dest, vi); // NB: use _mm_storeu_epi32 if `dest` not aligned

如果由于某种原因必须使用asm,则_mm_cvttps_epi32的相应说明为cvttps2dq