title: What is the difference between shuffle and permute
body: <p>In x86-64 SIMD instruction names, as well as the <a href="https://software.intel.com/sites/landingpage/IntrinsicsGuide/#expand=94,5196,3343,3339,3330,3295,2428,2426,4172,525,618,4167,4173,4172,4174,4201,433,4201,4906,4962,5497,4179,4202,5276,5306,433,4174,5199,533,4174,4174,3170,4179,4155,5143&amp;text=shuffle&amp;techs=SSE,SSE2,SSE3,SSSE3,SSE4_1,SSE4_2,AVX,AVX2" rel="noreferrer">intrinsic</a> functions you can use to access them from C/C++, you find both the terms <em>shuffle</em> (e.g., <code>_mm_shuffle_epi32</code>) and <em>permute</em> (e.g., <code>_mm_permute_pd</code>).</p>
  
  <p>Superficially, they seem to both be used for data movement stuff. What's the difference?</p>