0

我是sse的新手,我很难找到它,请告诉我将xmm3寄存器中的四个打包浮点数转换(截断为“(int)float_”)的好方法是什么,并将其存储到内存(有些像“movaps oword [edx+32], xmm3”存储很清楚,但我不知道如何转换)

4

1 回答 1

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_epi32cvttps2dq.

于 2013-04-17T08:08:36.423 回答