Как получить char с двумя строками, сравнивая таблицу с SSE 4.2?
Как получить char с двумя строками, сравнивая таблицу со встроенными SSE 4.2 в C?
_mm_cmpistrm возвращает маску важных битов, то есть агрегирует функцию на символе по сравнению с результатом обработки таблицы.
__m128i _mm_cmpistrm (
__m128i a,
__m128i b,
const int mode
);
Как извлечь char с помощью таблицы сравнения символов без вызова функции агрегирования? (Может быть, _SIDD_UNIT_MASK...)
пример:
A T G A
A 1 0 0 1
G 0 0 1 0
T 0 1 0 0
C 0 0 0 0
Эта таблица мне действительно нужна.
Результатом _mm_cmpistrm (в определенном режиме Equal_each) является маска:
(0 1 1 1)
1 ответ
Инструкции SSE4.2 не возвращают промежуточную таблицу, потому что в регистре SSE недостаточно битов для хранения всех результатов. (Они могут, если вы ищете только несколько элементов, но это не совсем так.) Если вы хотите таблицу, вам нужно будет искать каждую букву в вертикальном столбце по одному и создавать таблицу самостоятельно. (извиняюсь.)