logo

Главная Система команд x86 Набор команд 3DNow! PFRSQIT1

Система команд x86

Программирование - Архитектура и система команд микропроцессоров x86
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

PFRSQIT1

Произвести первый шаг итерации по вычислению точного значения обратной величины квадратного корня для короткого вещественного значения

Влияние команды на флаги и форматы команды:

OF

DF

IF

TF

SF

ZF

AF

PF

CF

 

 

 

 

 

 

 

 

 

 

Код/Суфф.

Команда

Описание

Пример

0F 0F / A7

PFRSQIT1 mm,mm/m64

Произвести первичное уточнение результата команды PFRSQRT (вычисление обратной величины квадратного корня), с исходным операндом в mm и результатом в mm/m64, уточненное значение поместить в mm

pfrsqrt mm6,mm5 movq mm4,mm6 pfmul mm6,mm6 pfrsqit1 mm5,mm6 pfrsqit2 mm5,mm4

Описание:

Команда PFRSQIT1 выполняет первый шаг по итерации Ньютона-Рафсона для уточнения значения обратного квадратного корня, полученного после выполнения команды PFRSQRT. Второй и заключительный этап вычисления точного значения обратной величины выполняется по команде PFRCPIT2, результат которой точен во всех 24 битах мантиссы.

В качестве операндов команды PFRSQIT1 выступают: операнд-источник — оценочное значение обратной величины, которое полученно возведеннием в квадрат командой PFMUL результата выполнения команды PFRSQRT; операнд-назначение — исходное короткое вещественное значение, для которого производится вычисление обратной величины квадратного корня. Результат помещается в операнд-назначение.

Операндом-назначением является MMX-регистр. Операндом-источником может быть как MMX-регистр, так и операнд в памяти.

Поведение команды PFRSQIT1 определено только для правильных комбинаций операндов, такой, что один операнд был исходным для команды PFRSQRT, а другой получен возведением в квадрат результата этой же команды. Во всех других случаях результат неопределен.

Следующий пример иллюстрирует использование команды PFRSQIT1 при вычислении точного (все 24 бита мантиссы) значения a = sqrt(b).

X0 = PFRSQRT(b)

X1 = PFMUL(X0,X0)

X2 = PFRSQIT1(b,X1)

X3 = PFRCPIT2(X2,X0)

a = PFMUL(b,X3)

Операция:

dest[31..0] <- First_Step_Reciprocal_Square_Root(src[31..0]);
dest[63..32] <- First_Step_Reciprocal_Square_Root(src[63..32]);

Особые ситуации защищенного режима:

#GP(0), если используется некорректный эффективный адрес операнда в памяти в сегментах CS, DS, ES, FS, GS или нулевой селектор.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#UD, если CRO.EM=1.
#NM, если CRO.TS=1.
#MF, если есть отложенные необработанные незамаскированные исключения FPU.
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память при текущем уровне привилегий равном 3.

Особые ситуации режима реальной адресации:

#GP, если любая часть операнда находится вне пространства эффективных адресов в сегментах CS, DS, ES, FS или GS.
#UD, если CRO.EM=1.
#NM, если CRO.TS=1.
#MF, если есть отложенные необработанные незамаскированные исключения FPU.

Особые ситуации режима V86:

Такие же, как и в режиме реальной адресации.
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память.


Входит в группу команд: Набор команд 3DNow!




Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Top.Mail.Ru       Сервер радиолюбителей России - схемы, документация,

 соревнования, дипломы, программы, форумы и многое другое!   схемы новости электроники