Команды packss
Команды packss преобразуют длинные элементы данных
(16- и 32-разрядные слова со знаком) в более короткие
(байты или 16-разрядные слова со знаком).
Если исходное значение было за пределами
допустимого диапазона
для выходного типа данных, то результатом упаковки считается ближайшее
граничное значение диапазона.
Входной операнд может находиться в MMX-регистре или в памяти;
выходной операнд должен находиться в MMX-регистре.
Поддерживаются команды:
packsswb,
packssdw.
Команда packuswb
Команда packuswb преобразует 16-разрядные слова со знаком
из обоих операндов в байты без знака и записывает их в выходной операнд.
Если исходное слово со знаком было больше FFh, результатом преобразования считается FFh. Если исходное слово со знаком отрицательно, результатом преобразования считается 00h.
Входной операнд может находиться в MMX-регистре или в памяти;
выходной операнд должен находиться в MMX-регистре.
Команды punpckh
Команды punpckh
попарно объединяют исходные элементы данных (байты, 16- или 32-разрядные слова),
находившиеся в старших 32 разрядах обоих операндов.
Полученные в результате более длинные элементы данных записываются в выходной
операнд.
Исходные значения младших разрядов операндов на результат не влияют.
Входной операнд может находиться в MMX-регистре или в памяти;
выходной операнд должен находиться в MMX-регистре.
Поддерживаются команды:
punpckhbw,
punpckhwd,
punpckhdq.
Команды punpckl
Команды punpckl
попарно объединяют исходные элементы данных (байты, 16- или 32-разрядные слова),
находившиеся в младших 32 разрядах обоих операндов.
Полученные в результате более длинные элементы данных записываются в выходной
операнд.
Исходные значения старших разрядов операндов на результат не влияют.
Входной операнд может находиться в MMX-регистре или в памяти;
выходной операнд должен находиться в MMX-регистре.
Поддерживаются команды:
punpcklbw,
punpcklwd,
punpckldq.