A v čem je rozdíl?
Shuffle akorát vyzobává hodnoty vertikálně/diagonálně z několika různých registrů místo vyzobávání hodnot z jednoho registru (horizontálně, jako to dělá gather/scatter). Vždyť je to stejný princip.
Všechny akorát dělají vektorový ekvivalent skalární instrukce MOV. Akorát kvůli registrům je to celé zbytečně komplikované. Ve skutečnosti CPU stejně dělá renaming na fyzických registrech a žádné data nepřesouvá. Stejně jako v C/C++ když přesouváš data, tak to děláš přes pole pointerů, ale ve skutečnosti data samotná se nehnou ani o bit.
24. 6. 2023, 14:25 editováno autorem komentáře