title: Why both? vperm2f128 (avx) vs vperm2i128 (avx2)
body: <p>avx introduced the instruction <code>vperm2f128</code> (exposed via <code>_mm256_permute2f128_si256</code>), while avx2 introduced <code>vperm2i128</code> (exposed via <code>_mm256_permute2x128_si256</code>).</p>
  
  <p>They both seem to be doing exactly the same, and their respective latencies and throughputs also seem to be identical.</p>
  
  <p>So why do both instructions exist? There has to be some reasoning behind that? Is there maybe something I have overlooked? Given that avx2 operates on data structures introduced with avx, I cannot imagine that a processor will ever exist that supports avx2 but not avx.</p>