logo

Главная Система команд x86 Набор команд SIMD SHUFPS

Система команд 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

SHUFPS

Перестановка коротких вещественных значений

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

I

D

Z

O

U

P

 

 

 

 

 

 

 

Код

Команда

Описание

Проц.

Пример

0F C6 /r ib

SHUFPS xmm1, xmm2/m128, imm8

Копировать в xmm1 слова из xmm2/m128 и из xmm1 согласно индексов в imm8

Pentium III

shufps xmm2, xmm4,2Fh

Описание:

Команда SHUFPS осуществляет пересылку любых двух из четырех коротких вещественных значений, упакованных в операнде-источнике команды (SIMD-регистр или операнд в памяти) в младшие позиции в операнде-назначении (SIMD-регистр), а также любых двух из четырех коротких вещественных значений, упакованных в операнде-назначении команды (SIMD-регистр) в старшие позиции этого же операнда. Для каждой позиции в операнде-назначении третий операнд команды (imm8) задает номер копируемого в нее слова из операнда-источника (для двух младших полей) или из операнда-назначения (для двух старших полей).

Биты 0,1 параметра imm8 задают номер копируемого слова для младшего 16-битного поля операнда-назначения, биты 2, 3 — для следующего, 4,5 — для третьего и 6, 7 — для самого старшего. Эти биты кодируются обычными двоичными кодами, например код 11b в битах 2, 3 означает, что в соответствующую позицию будет скопировано самое старшее слово из операнда-источника.

При задании в SHUFPS в качестве операнда-источника и в качестве операнда-назначения одного и того же регистра, эта команда может возвращать  любые последовательности четырех коротких вещественных значений, упакованных во входном операнде.

Использование префикса REP/REPNE ( 0xF3h / 0xF2h ) и префикса размера операнда ( 0x66h ) с командой SHUFPS является зарезервированной недокументированной функцией. Различные модели процессоров по разному реагируют на эту ситуацию. Не рекомендуется применять в программах комбинацию команды SHUFPS и указанных префиксов, т.к. в дальнейших моделях процессоров эта функция может быть изменена или исключена.

Операция:

FP_SELECT = (imm8 >> 0) AND 0X3;

IF (FP_SELECT = 0) THEN

  DEST[31-0] = DEST[31-0];

ELSE

  IF (FP_SELECT = 1) THEN

     DEST[31-0] = DEST[63-32];

  ELSE

     IF (FP_SELECT = 2) THEN

        DEST[31-0] = DEST[95-64];

     ELSE

        DEST[31-0] = DEST[127-96];

     FI;

  FI;

FI;

FP_SELECT = (imm8 >> 2) AND 0X3;

IF (FP_SELECT = 0) THEN

  DEST[63-32] = DEST[31-0];

ELSE

  IF (FP_SELECT = 1) THEN

     DEST[63-32] = DEST[63-32];

  ELSE

     IF (FP_SELECT = 2) THEN

        DEST[63-32] = DEST[95-64];

     ELSE

        DEST[63-32] = DEST[127-96];

     FI;

  FI;

FI;

FP_SELECT = (imm8 >> 4) AND 0X3;

IF (FP_SELECT = 0) THEN

  DEST[95-64] = SRC/m128[31-0];

ELSE

  IF (FP_SELECT = 1) THEN

     DEST[95-64] = SRC/m128 [63-32];

  ELSE

     IF (FP_SELECT = 2) THEN

        DEST[95-64] = SRC/m128 [95-64];

     ELSE

        DEST[95-64] = SRC/m128 [127-96];

     FI;

  FI;

FI;

FP_SELECT = (imm8 >> 6) AND 0X3;

IF (FP_SELECT = 0) THEN

  DEST[127-96] = SRC/m128 [31-0];

ELSE

  IF (FP_SELECT = 1) THEN

     DEST[127-96] = SRC/m128 [63-32];

  ELSE

     IF (FP_SELECT = 2) THEN

        DEST[127-96] = SRC/m128 [95-64];

     ELSE

        DEST[127-96] = SRC/m128 [127-96];

     FI;

  FI;

FI;

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

#GP(0) при некорретном эффективном адресе операнда в памяти в сегментах CS, DS, ES, FS или GS, и для всех сегментов если операнд в памяти не выровнен по 16-байтным границам.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#PF(Код ошибки) при страничной ошибке.
#NM, если CR0.TS = 1.
#UD, если CR0.EM = 1 или CR4.OSFXSR = 0.

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

#GP, если любая часть операнда находится вне пространства эффективных адресов от 0 до 0FFFFh.
#NM, если CR0.TS = 1.
#UD, если CR0.EM = 1 или CR4.OSFXSR = 0.

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

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


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




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

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

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