考虑以下变量声明:
我的想法是通过
union {
struct {
float x, y, z, padding;
} components;
__m128 sse;
} _data;
我的想法是通过
x
、y
、z
字段分配值,执行SSE2计算,并通过x
、y
、z
读取结果。我有些怀疑它是否合法。我的担忧是对齐:MSDN表示__m128
变量会自动对齐到16字节边界,我想知道我的联合是否会破坏这种行为。还有其他需要考虑的问题吗?
sse.m128_f32 [0]
、sse.m128_f32 [1]
、sse.m128_f32 [2]
、sse.m128_f32 [3]
获取__m128 sse;
的组件,因此不需要使用这个技巧。 - R. Martinho Fernandes