Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Команды Enhanced 3DNow! ( начиная с Athlon )

Инструкции технологии Enhanced 3DNow! предназначены для ускорения обработки 3D в приложениях и являются расширенным набором инструкций технологии 3DNow! . Каждая инструкция технологии Enhanced 3DNow! работает с упакованными данными (два 32-битных элемента 64-битных данных). Все инструкции технологии Enhanced 3DNow! работают с теми же регистрами, что и инструкции технологии MMX и 3DNow! . Команды Enhanced 3DNow! имеют следующий синтаксис:

	instruction [dest, src] 

Здесь instruction - имя команды, dest обозначает выходной операнд, src - входной операнд. Система команд технологии Enhanced 3DNow! содержит 24 дополнительные инструкции (обозначения: mm - MMX-регистр; m8, m64 - память объема 8 и 64 бит соответственно; ir32 - целочисленный регистр ; imm - непосредственный операнд):

PF2IW mm, mm/m64команда преобразования с насыщением входного упакованного операнда с плавающей запятой в выходной упакованный операнд с 16-разрядными знаковыми целыми числами. При этом запись осуществляется в младшие 16 бит 32-разрядных элементов выходного операнда.
PFNACC mm, mm/m64команда денакопления данных с плавающей запятой. Данное денакопление выражается следующими формулами:
mm(dest)[31:0] = mm(dest)[31:0] - mm(dest)[63:32]
mm(dest)[63:32] = mm/m64(src)[31:0] - mm/m64(src)[63:32]
PFPNACC mmreg1, mmreg2команда накопления/денакопления данных с плавающей запятой. Данное накопление/денакопление выражается следующими формулами:
mm(dest)[31:0] = mm(dest)[31:0] - mm(dest)[63:32]
mm(dest)[63:32] = mm/m64(src)[31:0] + mm/m64(src)[63:32]
PI2FW mm, mm/m64команда преобразования входного упакованного операнда с 16-разрядными знаковыми целыми числами в выходной упакованный операнд с плавающей запятой. При этом считывание осуществляется из младших 16 бит 32-разрядных элементов входного операнда.
PSWAPD mm, mm/m64команда перестановки младшего и старшего элементов входного операнда местами и записи результата в выходной операнд.
MASKMOVQ mm, mmкоманда сохранения выбранных с помощью маски, заданной в старших битах слов второго MMX-регистра, байтов из первого MMX-регистра в памяти по адресу [EDI].
MOVNTQ m64, mmкоманда прямой записи в память содержимого MMX-регистра без кэширования.
PAVGB mm, mm/m64команда усреднения упакованных беззнаковых 8-битных данных. Сначала вычисляется побайтовая сумма входящего и выходящего операндов (результат 9-битный, поэтому переполнения не происходит), а потом результат увеличивается на единицу и делится пополам. Полученные значения заносятся в выходной операнд. Команда идентична команде PAVGUSB mm, mm/m64 .
PAVGW mm, mm/m64команда усреднения упакованных беззнаковых 16-битных данных. Сначала вычисляется побайтовая сумма входящего и выходящего операндов (результат 17-битный, поэтому переполнения не происходит), а потом результат увеличивается на единицу и делится пополам. Полученные значения заносятся в выходной операнд.
PEXTRW ir32, mm, immкоманда извлечения слова из MMX-регистра, определенного непосредственным операндом, в целочисленный регистр.
PINSRW mm, ir32, immкоманда вставки слова из целочисленного регистра в одно из четырех слов MMX-регистра, определенного непосредственным операндом.
PMAXSW mm, mm/m64команда нахождения максимумов из пар соответствующих знаковых слов входного и выходного операндов с упакованными данными.
PMAXUB mm, mm/m64команда нахождения максимумов из пар соответствующих беззнаковых байт входного и выходного операндов с упакованными данными.
PMINSW mm, mm/m64команда нахождения минимумов из пар соответствующих знаковых слов входного и выходного операндов с упакованными данными.
PMINUB mm, mm/m64команда нахождения минимумов из пар соответствующих беззнаковых байт входного и выходного операндов с упакованными данными.
PMOVMSKB ir32, mmкоманда копирования маски, составленной из знаков упакованных байтовых чисел MMX-регистра, в целочисленный регистр с заполнением старших 24 бит нулями.
PMULHUW mm, mm/m64команда попарно перемножает 16-разрядные слова без знака входного и выходного операндов, что дает четыре 32-разрядных произведения. Старшие разряды произведений записываются в 16-разрядные слова выходного операнда. Младшие разряды произведений теряются.
hrefETCHNTA m8команда копирования данных в процессор с минимальным заполнением уровней L1 и L2 кэша (NTA). m8 задает адрес данных в памяти.
hrefETCHT0 m8команда копирования данных в процессор с заполнением всех уровней кэша (T0). m8 задает адрес данных в памяти.
hrefETCHT1 m8команда копирования данных в процессор с заполнением всех уровней кэша за исключением 0-го уровня (T1). m8 задает адрес данных в памяти.
hrefETCHT2 m8команда копирования данных в процессор с заполнением всех уровней кэша за исключением 0-го и 1-го уровней (T2). m8 задает адрес данных в памяти.
PSADBW mm, mm/m64команда вычисления абсолютной суммы отклонения между упакованными словами входного и выходного операндов. Старшие 3 слова выходного операнда заполняются нулями, а младшее слово вычисляется по следующей формуле:
mm(dest)[15:0] = abs(mm(dest)[7:0] - mm/m64(src)[7:0]) + abs(mm(dest)[15:8] - mm/m64(src)[15:8]) + abs(mm(dest)[23:16] - mm/m64(src)[23:16]) + abs(mm(dest)[31:24] - mm/m64(src)[31:24]) + abs(mm(dest)[39:32] - mm/m64(src)[39:32]) + abs(mm(dest)[47:40] - mm/m64(src)[47:40]) + abs(mm(dest)[55:48] - mm/m64(src)[55:48]) + abs(mm(dest)[63:56] - mm/m64(src)[63:56])
PSHUFW mm, mm/m64, imm8команда перестановки слов, заданных во входном операнде. Перестановка осуществляется с помощью задаваемой маски (непосредственный операнд). Всего возможны 24 перестановки. Результат записывается в выходной операнд.
SFENCEкоманда принудительного сохранения данных.

Назад

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог