title: Visual Studio parameter alignment restrictions and Windows x64 ABI
body: <p>With Visual C++ on WIN32 there's a long-standing problem with functions with 4 or more SSE parameters, e.g.</p>
  
  <pre><code>__m128i foo4(__m128i m0, __m128i m1, __m128i m2, __m128i m3) {}
  </code></pre>
  
  <p>generates an error:</p>
  
  <pre><code>align.c(8) : error C2719: 'm3': formal parameter with __declspec(align('16')) won't be aligned
  </code></pre>
  
  <p>To compound the problem, Visual C++ still needlessly imposes the ABI restriction even if the function is <code>__inline</code>.</p>
  
  <p>I'm wondering if this is still a problem on 64 bit Windows ? Does the ABI restriction still apply on x64 ?</p>
  
  <p>(I don't have access to a 64 bit Windows system otherwise I'd try it myself, and an extensive Google search hasn't turned up anything definitive.)</p>