title: Is accessing bytes of a __m128 variable via union legal?
body: <p>Consider this variable declaration:</p>
  
  <pre><code>union {
          struct {
              float x, y, z, padding;
          } components;
          __m128 sse;
      } _data;
  </code></pre>
  
  <p>My idea is to assign the value through <code>x</code>, <code>y</code>, <code>z</code> fields, perform SSE2 computations and read the result through <code>x</code>, <code>y</code>, <code>z</code>. I have slight doubts as to whether it is legal, though. My concern is alignment: MSDN says that <code>__m128</code> variables are automatically aligned to 16 byte boundary, and I wonder if my union can break this behavior.
  Are there any other pitfalls to consider here?</p>