title: Choice between aligned vs. unaligned x86 SIMD instructions
body: <p>There are generally two types of SIMD instructions: </p>
  
  <p>A. Ones that work with aligned memory addresses, that will raise general-protection (#GP) exception if the address is not aligned on the operand size boundary:</p>
  
  <pre><code>movaps  xmm0, xmmword ptr [rax]
  vmovaps ymm0, ymmword ptr [rax]
  vmovaps zmm0, zmmword ptr [rax]
  </code></pre>
  
  <p>B. And the ones that work with unaligned memory addresses, that will not raise such exception:</p>
  
  <pre><code>movups  xmm0, xmmword ptr [rax]
  vmovups ymm0, ymmword ptr [rax]
  vmovups zmm0, zmmword ptr [rax]
  </code></pre>
  
  <p>But I'm just curious, why would I want to shoot myself in the foot and use aligned memory instructions from the first group at all?</p>