October 19 2017 17:24:41
Навигация
Авторизация
Логин

Пароль



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

Забыли пароль?
Запросите новый здесь.
КОМАНДЫ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ
ФОРМАТЫ ПРЕДСТАВЛЕНИЯ ДАННЫХ И ВЫПОЛНЕНИЕ ОПЕРАЦИЙ

Команды этой группы (табл. 2.47) имеют две формы: пакетную (суффикс PS) и скалярную (суффикс SS). Пакетная форма команды обрабатывает пакеты одинарной точности: четыре элемента F3-F0 одинарной точности, упакованные в 128 разрядов. Скалярная форма команды работает только с одним элементом одинарной точности F0 (младшие 32 разряда SSE-регистра), остальные 96 разрядов (старшие элементы F3F1) содержимого этого регистра не изменяются. Для всех команд данной группы результат операции размещается в SSE-регистре xmm, а исходные операнды - в SSE-регистре xmm или ячейке памяти с адресом ml 28 (пакетная форма), либо гп32 (скалярная форма).

Команды ADD[PS,SS], SUB[PS,SS], DIV[PS,SS], MUL[PS,SS] производят соответственно операции сложения, вычитания, деления и умножения. Если при выполнении операций с какими-либо элементами происходит переполнение, то устанавливаются значения признаков ошибки ОЕ = РЕ = 1 и реализуется исключение типа #ХМ (при значении бита маски ОМ=0). Если соответствующее исключение замаскировано (установлено значение ОМ = 1), то результатом операции является число, округленное в соответствии с полем RC в регистре MXCSR (см. табл. 2.1). В случае антипереполнения устанавливаются значения признаков UE = РЕ = 1. При значении бита маски UM=0 реализуется исключение #ХМ, а при значении UM = 1 результатом становится округленное число. Команда DIV[PS,SS] вызывает установку признака ошибки ZE = 1, если операнд-делитель равен нулю. В этом случае реализуется исключение #ХМ, если соответствующий бит маски ZM = 0. Если данная ошибка маскирована (значение бита ZM = 1), то результатом операции будет код бесконечности соответствующего знака (7F800000h или FF800000h, см. табл. 2.16).

Таблица 2.47 Команды арифметических операций

Синтаксис команды Операция
ADDPS xmm.xmm /m128
ADDSS xmm.xmm /m32
xmm + xmm /m128 ® xmm      (пакет)
xmm + xmm /m32   ® xmm      (скаляр)
SUBPS xmm.xmm /m128
SUBSS xmm.xmm /m32
xmm-xmm/m 128 ® xmm      (пакет)
xmm - xmm /m32 ® xmm      (скаляр)
MULPS xmm.xmm /m128
MULSS xmm.xmm /m32
xmm * xmm /ml 28 ® xmm      (пакет)
xmm * xmm /m32 ® xmm      (скаляр)
DIVPS xmm.xmm /m128
DIVSS xmm.xmm /m32
xmm / xmm /ml 28 ® xmm      (пакет)
xmm / xmm /m32 ® xmm      (скаляр)
SQRTPS xmm.xmm /m128
SQRTSS xmm.xmm /m32
sqrt(xmm /m128) ® xmm      (пакет)
sqrt(xmm /m32) ® xmm      (скаляр)
RCPPS xmm.xmm /m128
RCPSS xmm.xmm /m32
1 / xmm /m128 ® xmm        (пакет)
1 / xmm /m32 ® xmm        (скаляр)
RSQRTPS xmm.xmm /m128
RSQRTSS xmm.xmm /m32
1 / sqrt(xmm /m128) ® xmm (пакет)
1 / sqrt(xmm /m32) ® xmm (скаляр)

При выполнении данных команд элементами исходных операндов могут быть не-числа QNaN или SNaN. Результаты операций в этих случаях приведены в табл. 2.48. В случаях, когда установлено значение бита маски IM = 1 (исключение типа #1 маскировано), элементом результата будет не-число QNaN, являющееся элементом одного из операндов, или полученное из не-числа SNaN, являющегося элементом операнда, путем изменения значения бита b22 (первого разряда мантиссы) с «0» на «1»(SNaN -> QNaN)*. В случаях, когда значение бита маски IM = 0 (исключение #1 не маскировано), реализуется переход к подпрограмме обслуживания данного исключения, если элементами операндов являются не-числа SNaN. Если же элементами являются не-числа QNaN, то они представляются в качестве результата операции, а исключение не реализуется.

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

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

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

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