PHMINPOSUW

Palabra horizontal empacada Mínimo

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
66 0F 38 41 /rPHMINPOSUW xmm1, xmm2/m128RMValidoValidoEncuentre la palabra mínima no firmada en xmm2/m128 y coloque su valor en la palabra baja de xmm1 y su índice en la segunda palabra más baja de xmm1.
VEX.128.66.0F38.WIG 41 /rVPHMINPOSUW xmm1, xmm2/m128RMValidoValidoEncuentre la palabra mínima no firmada en xmm2/m128 y coloque su valor en la palabra baja de xmm1 y su índice en la segunda palabra más baja de xmm1.

Codificacion de operandos

Cada modo es un valor de la columna Op/En de arriba. Dice en que campo de la instruccion codificada va cada operando, en el orden en que se escriben, y si la instruccion lo lee, lo escribe o ambas cosas.

RM

  1. modrm.reg escriturabyte ModRM, campo reg (bits 5-3)
  2. modrm.rm lecturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide

Coste medido

Cargando las mediciones de arch-data...

Descripción

Determinar el valor mínimo de palabra no firmado en el operando de origen (segundo operando) y colocar la palabra no firmada en la palabra baja (bits 0-15) del operando de destino (primer operando). El índice de palabras del valor mínimo se almacena en bits 16-18 del operando de destino. Las partes superiores restantes del destino se fijan en cero.

128-bit Legacy SSE versión: Bits (MAXVL-1:128) del correspondiente registro de destino XMM no se modifican.

VEX.128 versión codificada: Bits (MAXVL-1:128) del destino XMM registro se ponen a cero. VEX.vvvv está reservado y debe ser 1111b, VEX.L debe ser 0, de lo contrario la instrucción será #UD.

Operación

PHMINPOSUW (128-bit Legacy SSE Version)
INDEX := 0;
MIN := SRC[15:0]
IF (SRC[31:16] < MIN)

    THEN INDEX := 1; MIN := SRC[31:16]; FI;
IF (SRC[47:32] < MIN)

    THEN INDEX := 2; MIN := SRC[47:32]; FI;
* Repeat operation for words 3 through 6
IF (SRC[127:112] < MIN)

    THEN INDEX := 7; MIN := SRC[127:112]; FI;
DEST[15:0] := MIN;
DEST[18:16] := INDEX;
DEST[127:19] := 0000000000000000000000000000H;

VPHMINPOSUW (VEX.128 Encoded Version)
INDEX := 0
MIN := SRC[15:0]
IF (SRC[31:16] < MIN) THEN INDEX := 1; MIN := SRC[31:16]
IF (SRC[47:32] < MIN) THEN INDEX := 2; MIN := SRC[47:32]
* Repeat operation for words 3 through 6
IF (SRC[127:112] < MIN) THEN INDEX := 7; MIN := SRC[127:112]
DEST[15:0] := MIN
DEST[18:16] := INDEX
DEST[127:19] := 0000000000000000000000000000H
DEST[MAXVL-1:128] := 0

Intel C/C++ compilador intrínseco

PHMINPOSUW __m128i _mm_minpos_epu16( __m128i packed_words);

Banderas afectadas

None.

SIMD coma flotante Excepciones

None.

Otras excepciones

Ver Tabla 2-21, "Tipo 4 Condiciones de Excepción", además:

#UD               If VEX.L = 1.
                  If VEX.vvvv  1111B.

Fuentes