Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 86

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 80 81 82 83 84 85 < 86 > 87 88 89 90 91 92 .. 528 >> Следующая

выполнение ММХ-команд (см. табл. 2.39). Для команд, которые имеют две
формы (пакетную и скалярную), присутствие префикса REP указывает на
скалярную форму команды. Если префикс REP отсутствует, то команда
выполняет пакетную обработку данных.
15 14 13 12 11 10 9 87 6 543210
FZ | RC | РМ | UM | ОМ | ZM | DM | IM | Резер. | РЕ | UE | ОЕ | ZE | DE |
IE - ¦ .¦ Резервировано ¦ ¦¦¦ _______
31
Рис. 2.34. Формат содержимого регистра управления-состояния MXCSR
СИСТЕМА КОМАНД: ОПЕРАЦИИ SSE
2.6.2. КОМАНДЫ ПЕРЕСЫЛКИ И ПРЕОБРАЗОВАНИЯ ДАННЫХ Команды этой группы
приведены в табл. 2.46.
Команды MOVAPS и MOVUPS производят пересылку 128-разрядных данных между
SSE-регистрами xmm или SSE-регистром и ячейкой памяти с адресом т128. Эти
команды не могут переносить данные из памяти в память. Команда MOVAPS
осуществляет пересылку выравненных данных: если один из операндов
находится в памяти, то его адрес должен быть выравнен по 16-байтной
границе, иначе реализуется исключение типа #GP ("нарушение защиты"). Для
пересылки невыравненных данных следует использовать команду MOVUPS,
которая не вызывает исключения в этом случае.
Таблица 2.46
Команды пересылки и преобразования данных
Синтаксис команды Операция
MOVAPS xmm,xmm/m128 MOVAPS xmm/m128,xmm xmm/m128 -* xmm xmm ->xmm/m128
(выравненные данные)
MOVUPS xmm,xmm/m128 MOVUPS xmm/m128,xmm xmm/m128 -> xmm xmm ->xmm/ml28
(невыравненные данные)
MOVHLPS xmm1,xmm2 xmm2(F2,F3) xmm1(F0,F1)
MOVHPS xmm,m64 MOVHPS m64,xmm m64 -> xmm(F2,F3) xmm(F2,F3) -> m64
MOVLHPS xmm1,xmm2 xmm2(F0,F1) -> xmm1(F2,F3)
MOVLPS xmm,m64 MOVLPS m64,xmm m64 ->xmm(F0,F1) xmm(F0,F1) -> m64
MOVMSKPS r32,xmm xmm[b7(F0)] -> r32(b0) xmm[b7(F1)] -> г32(Ы) xmm[b7(F2)]
-"r32(b2) xmm[b7(F3)] -> r32(b3) 0 ^ г32(Ь31..Ь4)
MOVSS хтт.тЗг MOVSS xmm1,xmm2 MOVSS m32,xmm m32 -> xmm(FO) 0 -> xmm(F1-
F3) xmm2(F0) ->xmm1(F0) xmm(FO) -> m32
UNPCKHPS xmm,xmm/m128 xmm(F2) -к xmm(FO) xmm/m128(F2) -> xmm(F1) xmm(F3)
-> xmm(F2) xmm/m128(F3) -> xmm(F3)
UNPCKLPS xmm,xmm/m128 xmm(FO) -> xmm(FO) xmm/m128(F0) -> xmm(F1) xmm(F1)
-> xmm(F2) xmm/m128(F1) -> xmm(F3)
процессоры общего назначения и системы на их основе
Продолжение табл. 2.46
Синтаксис команды Операция
SHUFPS xmm,xmm/m128,imm8 xmm/m128[F(im8[1..0])] -^xmm(FO)
xmm/m128[F(im8[3..2])] ->xmm(F1) xmm/m128[F(im8[5..4])j xmm(F2)
xmm/m128[F(im8[7..6])] xmm(F3)
Команды MOVHLPS и MOVLHPS пересылают 64-разрядные данные из старшей
половины (элементы F3-F2) SSE-регистра xmm2 в младшую половину (элементы
F1-F0) SSE-регистра xmm1 или из младшей половины в старшую половину. При
пересылке содержимое остальных половин в регистре приемнике не
изменяется. Операнды могут храниться только в SSE-регистрах.
Команды MOVHPS и MOVLPS выполняют пересылку 64-разрядных данных между
SSE-регистром xmm и ячейкой памяти с адресом т64. Эти команды не могут
использоваться для переноса данных из памяти в память или из SSE-регистра
в SSE-регистр. Когда приемником операнда является SSE-регистр, то данные
из памяти загружаются в старшую (команда MOVHPS) или младшую (команда
MOVLPS) его половину, а содержимое другой половины не изменяется. Если
приемником операнда является ячейка памяти, то в нее записываются данные
из старшей/младшей (команды MOVHPS/MOVLPS) половины SSE-регистра.
Команда MOVMSKPS формирует 4-битовую маску из старших (знаковых) битов S
каждого элемента F3-F0, хранящегося в SSE-регистре xmm. Затем эта маска
расширяется нулем до 32 бит и записывается в регистр общего назначения
г32 (рис. 2.35).
Команда MOVSS производит пересылку 32-разрядных данных между SSE-
регистрами xmm или SSE-регистром и ячейкой памяти с адресом т32. В
случае, когда источником и приемником операндов являются SSE-регистры,
младшее двойное слово (элементы F1-F0) из регистра-источника копируется в
младшее двойное слово регистра-приемника, а его старшие разряды (элементы
F3-F2) не изменяются. Если приемником является ячейка памяти, то в нее
записывается младшее двойное слово из SSE-регистра. Если же операнд из
ячейки памяти т32 пересылается в SSE-регистр, то двойное слово из памяти
расширяется нулем до 128 разрядов и загружается в регистр xmm.
Команда SHUFPS изменяет порядок размещения (производит перестановку)
элементов F3-F0 в SSE-регистрах аналогично тому, как это реализует MMX-
команда PSHUFW. При этом элементы операнда из SSE-регистра или ячейки
памяти xmm/m128 перемещаются в определенные позиции элементов результата,
которые записываются в регистр-приемник xmm. Непосредственный операнд im8
определяет расположение элементов результата: биты Ы-0 этого операнда
задают номер i элемента Fi исходного операнда, который размещается в
качестве элемента F0 результата, биты ЬЗ-2 - номер элемента, размещаемого
на месте элемента F1, биты Ь5-4 - номер элемента, размещаемого на месте
F2, биты Ь7-6 - номер элемента, размещаемого на месте F3. Выполнение
данной операции иллюстрируется на рис. 2.36.
Команды UNPCKHPS и UNPCKLPS производят распаковку данных аналогично тому,
Предыдущая << 1 .. 80 81 82 83 84 85 < 86 > 87 88 89 90 91 92 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed