Задача
Существуют ли вычислительно осуществимые подходы к внутрирегистративной дедупликации набора целых чисел с использованием инструкций simD x86?
Пример
У нас есть 4-кортежный регистр R1 = {3, 9, 2, 9}, и мы хотим получить регистр R2 = {3, 9, 2, NULL}.
Ограничения
Стабильность. Сохранение порядка ввода не имеет никакого значения.
Выход. Тем не менее, все удаленные значения/NULL должны быть в начале и/или конце регистра:
Очевидно, что это бонус, если известно, что он производит один конкретный выходной формат. Пожалуйста, предположите, что NULL фактически означает 0 (ноль).
Всеобщность. Должен уметь терпеть отсутствие дубликатов, и в этом случае производить выход, эквивалентный входному регистру.
Наборы инструкций.Я ищу решения для любого или всех: SSE2-SSSE3; SSE4.x; AVX-AVX2