какая польза от операции МОВМСКБ? - PullRequest
0 голосов
/ 16 мая 2019

Я хочу спросить, какая польза от операции MOVMSKB?

Я пытаюсь найти документацию, но не могу найти соответствующую информацию.

1 Ответ

1 голос
/ 17 мая 2019

Бумага , которую вы читаете , описывает в следующем предложении, что именно она делает:

Эта инструкция создает 16-битный маска из старших значащих битов из 16 знаков 8-битные целые числа в регистре и обнуляют старшие биты [места назначения]

Это точно , что pmovmskb делает с регистром XMM, так что, очевидно, это инструкция, о которой они говорят. Они намеренно или случайно исключили p (для упакованного целого числа) из мнемоники.

Их схема того, как это работает (неверно), помечена vpmovmskb reg, ymm1. Для источника YMM vpmovmskb создает 32-битную маску.

(Хотя, если входной регистр YMM был записан через младшую половину XMM с помощью VEX-кодированной инструкции, такой как vpxor xmm1, xmm2, xmm3, тогда верхние 16 байтов будут равны нулю, поэтому они получат результат, который они описали для другая причина.)


Его варианты использования включают в себя поисковые циклы, такие как strlen или memchr (где lzcnt / tzcnt полезны, чтобы найти какой элемент, когда вы найдете элемент совпадения или несоответствия).

Или создание индекса для справочной таблицы с pshufb масками, например. для левой упаковки или даже как часть синтаксического анализа строк четырехточечных IPv4 в целые числа. Самый быстрый способ получить IPv4-адрес из строки

...