10

在 Linux 和 Mac 上,可以做到

__m128 x;
__m128i n = (__m128i)x;

此操作将 x 的位表示复制到 n,并且对于实现在 SSE 浮点寄存器上操作的各种无分支条件操作很有用。在 MSVC 11 上,它给出了

eikonal-generated.h(1228) : error C2440: 'type cast' : cannot convert from '__m128' to '__m128i'; No constructor could take the source type, or constructor overload resolution was ambiguous

Microsoft Visual Studio 中的等价物是什么?

请注意,我不是要求标准的浮点到整数转换函数 _mm_cvtepi32_ps,它进行数值上有意义的转换。

4

1 回答 1

18

使用 MSVC,您需要使用:

_mm_castsi128_ps用于按位转换从__m128i__m128

_mm_castps_si128用于按位转换从__m128__m128i

对于其他编译器(gcc、ICC),您可以只使用普通类型转换。

于 2012-11-29T19:01:12.253 回答