Intel вики
Advertisement

Новые инструкции 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-х битных масок.

Advertisement