Новые инструкции SSE4.2[]
Обработка строк[]
Эти инструкции выполняют арифметические сравнения между всеми возможными парами полей (64 или 256 сравнений!) из обеих строк, заданных содержимым xmm1 и xmm2/m128. Затем булевые результаты сравнений обрабатываются для получения нужных результатов. Непосредственный аргумент imm8 управляет размером (байтовые или unicode строки, до 16/8 элементов каждая), знаковостью полей (элементов строк), типом сравнения и интерпретацией результатов.
Ими можно производить в строке (области памяти) поиск символов из заданного набора или в заданных диапазонах. Можно сравнивать строки (области памяти) или производить поиск подстрок.
Все они оказывают влияние на флаги процессора: SF устанавливается если в xmm1 не полная строка, ZF — если в xmm2/m128 не полная строка, CF — если результат не нулевой, OF — если младший бит результата не нулевой. Флаги AF и PF сбрасываются.
- PCMPESTRI <ecx>, xmm1, xmm2/m128, <eax>, <edx>, imm8 — ()
Явное задание размера строк в <eax>, <edx> (берётся абсолютная величина регистров с насыщение до 8/16, в зависимости от размера элементов строк. Результат в регистре ecx.
- PCMPESTRM <xmm0>, xmm1, xmm2/m128, <eax>, <edx>, imm8 — ()
Явное задание размера строк в <eax>, <edx> (берётся абсолютная величина регистров с насыщение до 8/16, в зависимости от размера элементов строк. Результат в регистре xmm0.
- PCMPISTRI <ecx>, xmm1, xmm2/m128, imm8 — ()
Неявное задание размера строк (производится поиск нулевых элементов к каждой из строк). Результат в регистре ecx.
- PCMPISTRM <xmm0>, xmm1, xmm2/m128, imm8 — ()
Неявное задание размера строк (производится поиск нулевых элементов к каждой из строк). Результат в регистре xmm0.
Подсчет CRC32[]
- CRC32 r32, r/m* — (Подсчет CRC32)
Накопление значения CRC-32C (другие обозначения CRC-32/ISCSI CRC-32/CASTAGNOLI) для 8, 16, 32 или 64 битного аргумента (используется полином 0x1EDC6F41).
Подсчет популяции единичных битов[]
- POPCNT r, r/m* — (Return the Count of Number of Bits Set to 1)
Подсчет числа единичных битов. Три варианта инструкции: для 16, 32 и 64-х битных регистров. Также присутствует в SSE4A от AMD.
Векторные примитивы[]
- PCMPGTQ xmm1, xmm2/m128 — (Compare Packed Qword Data for Greater Than)
Проверка 64-х битных полей на «больше чем» и выдача 64-х битных масок.