October 19 2017 19:08:34
Навигация
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
Команды операций сравнения и нахождения максимума
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ

Таблица 2.44 Команды операций сравнения и нахождения максимума/минимума

Синтаксис команды Операция
PCMPEQB mm,mm/m64
PCMPEQW mm,mm/m64
PCMPEQD mm,mm/m64
FFh       ® mm(Bi), если mm(Bi) = mm/nr»64(Bi)0
0h       ® mm(Bi), если mm(Bi) * mm/m64(Bi)
FFFFh     ® mm(Wi), если mm(Wi) = mm/m64(Wi)0
000h     ® mm(Wi), если mm(Wi) ¹ mm/m64(Wi)
FFFFFFFFh ® mm(Di), если mm(Di) = mm/m64(Di)
00000000h ® mm(Di), если mm(Di) * mm/m64(Di)
PCMPGTB mm,mm/m64
PCMPGTW mm,rnm/m64
FFh       ® mm(Bi), если mm(Bi) > mm/m64(Bi)
00h       ® mm(Bi), если mm(Bi) < m/m64(Bi)
FFFFh     ® mm(Wi), если mm(Wi) > mm/m64(Wi)
0000h     ® mm(Wi), если mm(Wi) < mm/m64(Wi)
PCMPGTD mm,mm/m64 FFFFFFFFh ® mm(Di), если mm(Di) > mm/m64(Di)
00000000h ® mm(Di), если mm(Di) < mm/m64(Di)
PMAXSW mm,mm/m64
PMAXUB mm,mm/m64
Max[mm(W), mm/m64(W)] ® mm(W)   со знаком
Max[mm(B), mm/m64(B)] ® mm(B)   без знака
PMINSW mm,mm/m64
PMINUB mm,mm/m64
Min[mm(W), mm/m64(W)] ® mm(W)   со знаком
Min[mm(B), mm/m64(B)] ® mm(B)   без знака

Команды PCMPEQ[B, W, D] и PCMPGT[B, W, D] производят сравнение элементов (байтов, слов или двойных слов), которые представляются как числа со знаком. Если значения элемента в исходных операндах, которые располагаются в регистре mm и регистре или ячейке памяти mm/m64, равны, то при выполнении команды PCMPEQ (сравнение элементов на равенство), все биты в соответствующем элементе результата, размещаемого в регистре mm, принимают значение «1». В противном случае (неравенство элементов) все биты в элементе результата принимают значение «0». Команда PCMPGT (сравнение на большее значение) проверяет, имеет ли элемент операнда в регистре mm большее значение, чем аналогичный элемент в регистре или ячейке памяти mm/m64. Если это условие выполняется, то все биты соответствующего элемента результата в регистре mm принимают значение «1», в противном случае - значение «0».

Команды PMAXSW и PMAXUB реализуют выделение в исходных операндах элементов с большим значением, из которых формируется результат операции. Эти команды выполняют сравнение элементов исходных операндов, размещенных в регистре mm и регистре или ячейке памяти mm/m64, выделяют элементы с большим значением и размещают их в качестве соответствующих элементов результата в регистр mm. Команды PMINSW и PMINUB также производят сравнение элементов в исходных операндах, но выделяют элементы с меньшим значением, которые размещаются в регистре mm в качестве результата операции. Команды PMAXSW, PMINSW обрабатывают слова со знаком, команды PMAXUB, PMINUB - байты без знака.

2.6. СИСТЕМА КОМАНД: ОПЕРАЦИИ SSE

В процессорах Pentium III технология ММХ получила дальнейшее развитие. В структуру этих процессоров введен исполнительный блок SSE (см. рис. 2.1), который обрабатывает по принципу SIMD (Single Instruction - Multiple Data: Одна Команда - Много Данных) данные, представленные в формате с плавающей точкой. Блок SSE содержит набор специализированных регистров и обеспечивает выполнение набора дополнительных команд. Это расширение архитектуры процессоров семейства Р6 получило название Streaming SIMD Extension -SSE (потоковое SIMD-расширение). Блок SSE входит в структуру ряда типов процессоров семейства Р6. Чтобы определить, поддерживает ли данный процессор SSE-расширение, следует воспользоваться командой CPUID.

Ниже дается перечень SSE-команд, разбитых по функциональным группам.

Команды пересылки данных

MOVAPS - Пересылка выровненных 128-разрядных данных

MOVHLPS - Пересылка 64-разрядных данных из старшей половины одного SSE-регистра в младшую половину другого SSE-регистра

MOVHPS - Пересылка в память 64-разрядных данных из старшей половины SSE-регистра

MOVLHPS - Пересылка 64-разрядных данных из младшей половины одного SSE-регистра в старшую половину другого SSE-регистра

MOVLPS - Пересылка в память 64-разрядных данных из младшей половины SSE-регистра

MOVMSKPS - Пересылка знаковых битов пакета с одинарной точностью в регистр общего назначения

MOVSS - Пересылка 32-разрядных данных

MOVUPS - Пересылка 128-разрядных данных

Команды преобразования данных

SHUFPS - Изменение порядка размещения элементов в пакете одинарной точности

UNPCKHPS - Распаковка из старших половин пакетов UNPCKLPS - Распаковка из младших половин пакетов

Арифметические команды

ADDPS - Сложение пакетов одинарной точности

ADDSS - Сложение двух чисел одинарной точности

DIVPS -Деление пакетов одинарной точности

DIVSS -Деление двух чисел одинарной точности

MULPS -Умножение пакетов одинарной точности

MULSS - Умножение двух чисел одинарной точности

RCPPS - Вычисление обратной величины элементов в пакете одинарной точности

RCPSS - Вычисление обратной величины числа одинарной точности

RSQRTPS - Вычисление обратной величины квадратного корня из элементов пакета одинарной точности

RSQRTSS - Вычисление обратной величины квадратного корня из числа одинарной точности

SQRTPS - Вычисление квадратного корня из элементов пакета одинарной точности

SQRTSS - Вычисление квадратного корня из числа одинарной точности

SUBPS -Вычитание пакетов одинарной точности

SUBSS - Вычитание двух чисел одинарной точности

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.04 секунд 2,256,240 уникальных посетителей