我尝试使用以下命令:
__m128i b = _mm_set_epi32 (y, y, x, x);
y和x是整数。
在我运行调试器的地方,我看到b的类型为: unsigned __int64 [2]
我打算将b设为4个整数,每个32位(我想这就是他们在这里所说的: http://msdn.microsoft.com/en-us/library/019beekt.aspx)
你知道我的代码是什么吗?
由于
答案 0 :(得分:3)
我没有看到问题 - 128位整数由两个64位整数表示,这是64位Intel CPU可以处理的SSE寄存器之外的最大本机类型。
您的调试器可能显示“真实”类型,而不是typedefed或macro'd类型。
答案 1 :(得分:0)
Typedef是别名,你的调试器会向你显示__m128i别名的值。在C中,定义新类型的唯一真正方法是通过struct关键字;所有其他技术(typedef等)导致类型别名,可以用它们的等价物替换。
假设这是真的,除了显示的方式与您预期的不同之外,还有其他问题吗?