К сожалению, только 2 исходных шаффла: movss
, movsd
, shufps
, unpckl/hps/d
, movhlps
и аналогичные негибкие инструкции.
palignr
может быть полезно , даже с задержкой обхода для использования int shuffle между инструкциями FP, если ваше перемещение данных должно соответствовать его шаблону.
AVX512добавляет полные перемешивания с 2 исходниками (пересечение полос, с векторным селектором) для элементов различных размеров.Такие вещи, как vpermi2w
и vpermt2b
Как отмечает Пол, бленды - это гибкий способ объединения данных из двух регистров без перемешивания.
См. Руководство по сборке Agner Fog по оптимизации для таблицы инструкций, организованной по типу перемещения данных.Смотрите также sse tag wiki.