Я описал ответ на подобный вопрос здесь .
Это работает удивительно хорошо, когда Вы вынуждены продолжить продвигать изменения в центральный репозиторий CVS.
Найдите эффективную сеть сортировки , где N = количество байтов, которые вам нужны (4 или 16). Преобразуйте это в последовательность инструкций сравнения и обмена. (Однако для N = 16 это будет больше, чем «несколько».)
Нашел! Это в статье Фуртака, Амарала и Невядомского «Использование регистров SIMD и инструкций для включения параллелизма на уровне инструкций в алгоритмах сортировки». Раздел 4.
Он использует 4 регистра SSE, имеет 12 шагов и выполняет 19 инструкций, включая загрузку и сохранение.
В той же статье есть отличная работа по динамическому созданию сетей сортировки с помощью SIMD.
Все алгоритмы сортировки требуют «перестановки» значений из одного места в другое. Поскольку вы говорите о буквальном регистре ЦП, это означает, что для любой сортировки потребуется другой регистр для использования в качестве временного места для хранения заменяемых байтов.
Я никогда не видел чипа со встроенным методом сортировки. байты в регистре. Не говорю, что этого не было сделано, но я не могу придумать много вариантов использования такой инструкции.