title: Storing individual doubles from a packed double vector using Intel AVX
body: <p>I'm writing code using the C intrinsics for Intel's AVX instructions. If I have a packed double vector (a <code>__m256d</code>), what would be the most efficient way (i.e. the least number of operations) to store each of them to a different place in memory (i.e. I need to fan them out to different locations such that they are no longer packed)? Pseudocode:</p>
  
  <pre><code>__m256d *src;
  double *dst;
  int dst_dist;
  dst[0] = src[0];
  dst[dst_dist] = src[1];
  dst[2 * dst_dist] = src[2];
  dst[3 * dst_dist] = src[3];
  </code></pre>
  
  <p>Using SSE, I could do this with <code>__m128</code> types using the <code>_mm_storel_pi</code> and <code>_mm_storeh_pi</code> intrinsics. I've not been able to find anything similar for AVX that allows me to store the individual 64-bit pieces to memory. Does one exist?</p>