Смекни!
smekni.com

Форматы данных и команды их обработки процессоров Pentium III, Pentium IV (стр. 16 из 18)

Машинный код: 66 0F D7 /r

Действие: команда извлекает и копирует значения старшего бита каждого из упакованных байт ХММ-регистра в младшие 16 бит 32-битного целочисленного регистра общего назначения. Остальные разряды целочисленного регистра обнуляются.

Флаги: не изменяются.

Исключения: РМ: #UD: 10, 12,15; #NM: 3; RM: исключения защищенного режима; VM: исключения защищенного режима.

PMULHUW приемник, источник

PMULHUW (MULtiply Packed Unsigned integers and store High result) — умножение упакованных беззнаковых слов с возвратом старших слов результата.

Синтаксис: PMULHUW rxmm1, rxmm2/m128

Машинный код: 66 0F E4 /r

Действие: команда производит умножение упакованных слов источника и приемника без учета знака и формирует элементы результата в соответствии с приведенной ниже схемой. Как видно из нее, в результате умножения слов операндов источник и приемник получаются промежуточные результаты размером 32 бита.

Далее старшее слово (16 бит) из каждого промежуточного результата умножения исходных элементов помещается в 16-битный элемент окончательного результата. Результат помещается в операнд приемник.

Флаги: не изменяются.

Исключения: РМ: #GP(0): 2, 42; #SS(0): 1; #UD: 10, 12, 15; #NM: 3; #PF(fault-code); RM: #GP: 13,16; #UD: 17,19,22; #NM: 3; VM: исключения реального режима; #PF(fault-code).

PMULHW приемник, источник

PMULHW (MULtiply Packed signed integers and store High result) — упакованное знаковое умножение слов с возвратом старшего слова результата.

Синтаксис: PMULHW rxmm1, rxmm2/m128

Машинный код: 66 0F E5 /r

Действие: команда производит умножение упакованных слов источника и приемника с учетом знака и формирует элементы результата в соответствии со схемой, приведенной при описании команды PMULHUW.

Флаги: не изменяются.

Исключения: РМ: #GP(0): 2, 42; #SS(0): 1; #UD: 10, 12, 15; #NM: 3; #PF(fault-code); RM: #GP: 13,16; #UD: 17,19,22; #NM: 3; VM: исключения реального режима; #PF(fault-code).

PMULLW приемник, источник

PMULLW (MULtiply Packed signed integers and store Low result) — упакованное знаковое умножение слов с возвратом младшего слова результата.

Синтаксис: PMULLW xmm 1, xmm2/m 128

Машинный код: 66 0F D5 /r

Действие: команда производит умножение с учетом знака упакованных слов источника и приемника и формирует элементы результата в соответствии с приведенной ниже схемой.

Как видно из этой схемы, в результате умножения слов источника и приемника получаются промежуточные результаты размером 32 бита. Далее младшее слово (16 бит) из каждого 32-битного элемента промежуточного результата умножения исходных элементов помещается в 16-битный элемент результата (операнд приемник). Флаги: не изменяются.

Исключения: РМ: #GP(0): 2, 42; #SS(0): 1; #UD: 10, 12, 15; #NM: 3; #PF(fault-code); RM: #GP: 13, 16; #UD: 17,19,22; #NM: 3; VM: исключения реального режима; #PF(fault-code).

PMULUDQ приемник, источник

PMULUDQ, (MULtiply Packed Unsigned Doubleword integers description) — умножение 32-битных целых значений без учета знака и сохранение результата в ХММ-регистре.

Синтаксис и машинный код:

0F F4 /r PMULUDQ rmmx1, rmmx2/m64

66 0F F4 /r PMULUDQ rxmm1, rxmm2/m128

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

• источник — ММХ-регистр или ячейка памяти m64: приемник[63-0] -приемник[?А-0]

источник[31-0];

• источник — ХММ-регистр или ячейка памяти: приемник[63-0}-приемник[31-0]

источник[31-0]; приемник[127-64]-приемник[95-64]
источник[95-64].

Когда результат умножения слишком большой, чтобы быть представленным в приемник, то он "заворачивается" (перенос игнорируется).

Флаги: не изменяются.

Исключения: РМ: #GP(0): 2,42; #SS(0): 1; #UD: 10,12,15; #NM: 3; #PF(fault-code); RM: #GP: 13, 16; #UD: 17, 19, 22; #NM: 3; VM: исключения реального режима; #PF(fault-code).

POR приемник, источник

POR (bitwise logical OR) — упакованное логическое ИЛИ.

Синтаксис: POR rxmm1, rxmm2/m128

Машинный код: 66 0F ЕВ /r

Действие: команда производит побитовую операцию логическое ИЛИ над всеми битами операндов источника и приемника. Результат помешается в операнд приемник.

Флаги: не изменяются.

Исключения: РМ: #GP(0): 2, 42; #SS(0): 1; #UD: 10, 12, 15; #NM: 3; #PF(fault-code); RM: #GP: 13,16; #UD: 17,19, 22; #NM: 3; VM: исключения реального режима; #PF(fault-code).

PSADBW приемник, источник

PSADBW (Compute Sum 0F Absolute Differences) — суммарная разница значений нар беззнаковых упакованных байт.

Синтаксис: PSADBW rxmm1, rxmm2/m128

Машинный код: 66 0F F6 /r

Действие: для каждой пары байт двух упакованных учетверенных слов операндов источник и приемник вычислить модуль разности, после чего сложить полученные модули. Результат записать в младшее слово каждого из двух упакованных учетверенных слов приемника, старшие три слова в упакованных учетверенных словах приемника обнулить. Принцип работы программы поясняет схема ниже.

Флаги: не изменяются.

Исключения: РМ: #GP(0): 2, 42; #SS(0): 1; #UD: 10, 12, 15; #NM: 3; #PF(fault-code); RM: #GP: 13,16; #UD: 17,19,22; #NM: 3; VM: исключения реального режима; #PF(fault-code).

PSHUFD приемник, источник, маска

PSHUFD (SHUFfle Packed Doublewords) — копирование двойных слов из ХММ-операнда источник в ХММ-операнд приемник.

Синтаксис: PSHUFD xmm1, xmm2/m128, imm8

Машинный код: 66 0F 70 /r i8

Действие: на основе значения пар бит маски копировать двойные слова из источника в приемник. Каждая пара бит маски определяет номер слова источника для перемещения.в приемник следующим образом:

• маска[1:0]:

• 00 приемник[0...31] - источник[0...31],

• 01 приемник[0...31] - источник[32...63],

• 10 npueMHUK[0...31] - источник[64...95];

• 11 приемник[0...31] - источник[96..127];

• маска[3:2]:

• 00 приемник[32...63] - источник[0...31];

• 01 приемник[32...63] - источник[32...63];

• 10 приемник[32...63] - источник[64...95];

• 11 приемник[32...63] - источник[96..127];

• маска[5:4]:

• 00 приемник[64...95] - источник[0...31];

• 01 приемник[64...95] - источник[32...63],

• 10 приемиик[64...95] - источник[64...95];

• 11 приемник[64...95] - источник[96..127];

• маска[7:6]:

• 00 приемник[96..127] - источник[0...31];

• 01 приемник[96..127] - источник[32...63];

• 10 приемник[96..127] - источник[64...95];

• 11 приемник[96..127] - источник[96...127].

Если использовать один и тот же ХММ-регистр в качестве источника и приемника, то можно выполнять любые перестановки двойных слов в пределах одного ХММ-регистра, в том числе и инициализацию значением одного двойного слова других двойных слов. Работу команды PSHUFD поясняет следующая схема:

Флаги: не изменяются.

Исключения: РМ: #GP(0): 2, 42; #SS(0): 1; #UD: 10, 12, 15; #NM: 3; #PF(fault-code); RM: #GP: 13,16; #NM: 3; #UD: 17,19, 22; VM: исключения реального режима; #PF(fault-code).

PSHUFHW приемник, источник, маска

PSHUFHW (SHUFfle Packed High Words) — копирование слов из старшего учетверенного упакованного слова ХММ-операнда источник в старшее учетверенное упакованное слово ХММ-операнда приемник.

Синтаксис: PSHUFHW xmm1, xmm2/m128, imm8

Машинный код: F3 0F 70 /r i8

Действие: на основе значения пар бит маски копировать слова из старшего упакованного учетверенного слова источника в старшее учетверенное упакованное слово приемника. Каждая пара бит маски определяет номер слова источника для перемещения в приемник следующим образом:

• маска[1:0]:

• 00 приемник[64...79] - источник[64...79];

• 01 приемник[64...79] - источник[80...95];

• 10 приемник[64...79] - источник[96..111];

• 11 приемник[64...79] - источник[112...127];

• маска[3:2]:

• 00 приемник[80...95] - источник[64...79];

• 01 приемник[80...95] - источник[80...95];

• 10 приемник[80...95] - источник[96..111];

• 11 приемник[80...95] - источник[112..127];

• маска[5:4]:

• 00 приемник [96...111] - источгшк[64...79];

• 01 приемник [96...111] - источник[80...95];

• 10 приемник [96...111] - источпик[96...111];

• 11 приемник [96...111] - источник[112..127];

• маска[7:6]:

• 00 приемник[112...127] - источник[64...79];

• 01 приемник[112...127] - источник[80...95];

• 10 приемник[112...127] - источник[96..111];

• 11 приемник[112...127} - источник[112..127].

Если использовать один и тот же ХММ-регистр в качестве источника и приемника, то можно выполнять любые перестановки слов в пределах старшего учетверенного слова одного ХММ-регистра, в том числе и инициализацию значением одного слова других слов. Работу команды PSHUFHW поясняет следующая схема.

Флаги: не изменяются.

Исключения: РМ: #GP(0): 2, 42; #SS(0): 1; #UD: 10, 12, 15; #NM: 3; #PF(fault-codc); RM: #GP: 13,16; #UD: 17,19,22; #NM: 3; VM: исключения реального режима; #PF(fanlt-code).

PSHUFLW приемник, источник, маска

PSHUFLW (SHUFfle Packed Low Words) — копирование слов из младшего учетверенного упакованного слова ХММ-онераида источник в младшее учетверенное упакованное слово ХММ-онеранда приемник.

Синтаксис: PSHUFLW rxmm1, rxmm2/m128, imm8

Машинный код: F2 0F 70 /r i8

Действие: на основе значения пар бит маски копировать слова из младшего учетверенного слова источника в младшее учетверенное слово приемника. Каждая пара бит маски определяет номер слова источника для перемещения в приемник следующим образом:

• маска[1:0]:

• 00 приемник[00..15] - источник[00..15];

• 01 приемник[00..15] - источник[16..31];

• 10 приемник[00..15] - источник[32..47];

• 11 приемник[00..15] - источник[48..63];

• маска[3:2]:

• 00 приемник[16...31] - источник[00..15];

• 01 приемник[16...31] - источник[16...31];

• 10 приемник[16...31] - источгшк[32..47];

• 11 приемник[16...31] - источник[48...63];

• маска[5:4]:

• 00 приемник[32..47] - источник[00..15];

• 01 приемник[32..47] - источник[16..31];

• 10 приемник[32..47] - источник[32..47];

• 11 приемник[32..47] - источник[48..63];

• маска[7:6]:

• 00 приемник[47...63] - источник[00..15];

• 01 приемник[47...63] - источник[16..31];

• 10 приемник[47...63] - истспник[32..47];

• 11 приемник[47...63] - источник[48..63].

Если использовать один и тот же ХММ-регистр в качестве источника и приемника, то можно выполнять любые перестановки слов в пределах младшего учетверенного слова одного ХММ-регистра, в том числе и инициализацию значением одного слова других слов. Работу команды PSHUFLW поясняет схема, показанная далее.