【发布时间】:2014-05-17 03:54:54
【问题描述】:
我正在阅读this on MSDN,它说
您不应直接访问 __m128i 字段。但是,您可以在调试器中查看这些类型。 __m128i 类型的变量映射到 XMM[0-7] 寄存器。
但是,它没有解释原因。为什么?例如,以下是“坏”:
void func(unsigned short x, unsigned short y)
{
__m128i a;
a.m128i_i64[0] = x;
__m128i b;
b.m128i_i64[0] = y;
// Now do something with a and b ...
}
应该使用某种load 函数,而不是像上面示例中那样进行分配吗?
【问题讨论】:
-
这些字段是 Microsoft 特定的。当然,他们并不关心这一点,因为他们会喜欢将您锁定在他们的编译器中。真正的原因是性能。没有有效的方法来访问 SSE 寄存器的各个元素。 SSE4.1 有说明,但索引必须是编译时常量。
标签: c++ sse intrinsics