Рассмотрим это объявление переменной:
union {
struct {
float x, y, z, padding;
} components;
__m128 sse;
} _data;
Моя идея - назначить значение через поля x
, y
, z
, выполнить вычисления SSE2 и прочитать результат через x
, y
, z
. Однако у меня есть небольшие сомнения относительно того, является ли это законным. Моя проблема заключается в выравнивании: MSDN говорит, что переменные __m128
автоматически выравниваются до 16-байтовой границы, и мне интересно, может ли мой союз нарушить это поведение.
Есть ли еще какие-нибудь подводные камни, чтобы рассмотреть здесь?