MOVHPD

Move High Packed valor en coma flotante de precisión doble

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
66 0F 16 /rMOVHPD xmm1, m64AValidoValidoMover valor en coma flotante de precisión doble de m64 a cuadword alto de xmm1.
VEX.128.66.0F.WIG 16 /rVMOVHPD xmm2, xmm1, m64BValidoValidoMerge valor en coma flotante de precisión doble de m64 y el bajo quadword de xmm1.
EVEX.128.66.0F.W1 16 /rVMOVHPD xmm2, xmm1, m64DValidoValidoMerge valor en coma flotante de precisión doble de m64 OR AVX10.1 y el bajo cuádpo de xmm1.
66 0F 17 /rMOVHPD m64, xmm1CValidoValidoMover valor en coma flotante de precisión doble de cuádpago alto de xmm1 a m64.
VEX.128.66.0F.WIG 17 /rVMOVHPD m64, xmm1CValidoValidoMover valor en coma flotante de precisión doble de cuádpago alto de xmm1 a m64.
EVEX.128.66.0F.W1 17 /rVMOVHPD m64, xmm1EValidoValidoMover valor en coma flotante de precisión doble de alta OR AVX10.1 quadword de xmm1 a m64.

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.

A

  1. modrm.reg lectura y 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

B

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

C

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

D

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

Tupla: Tuple1 Scalar

E

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

Tupla: Tuple1 Scalar

Coste medido

Cargando las mediciones de arch-data...

Descripción

Esta instrucción no se puede utilizar para registrarse o memoria a movimientos de memoria.

Carga Legacy SSE de 128 bits:

Se mueve un valor en coma flotante de precisión doble de la fuente de 64 bits operando de memoria y lo almacena en los 64 bits altos del registro de destino XMM. Se conservan los 64 bits inferiores del registro XMM. Se conservan bits (MAXVL-1:128) del registro de destino correspondiente.

Carga codificada VEX.128 & EVEX:

Carga un valor en coma flotante de precisión doble de la fuente 64-bit operando de memoria (el tercer operando) y lo almacena en los 64-bits superiores del registro de destino XMM (primer operando). Los bajos 64 bits del primer operando de origen (segundo operando) se copian a los bajos 64 bits del destino. Bits (MAXVL-1:128) del registro de destino correspondiente se ponen a cero.

128-bit store:

Almacena un valor en coma flotante de precisión doble desde los 64 bits altos de la fuente de registro XMM (segundo operando) hasta la ubicación de memoria de 64 bits (primer operando).

Nota: VMOVHPD (store) (VEX.128.66.0F 17 /r) es legal y tiene el mismo comportamiento que la tienda existente 66 0F 17. Para VMOVHPD (store) VEX.vvvv y EVEX.vvvv están reservados y deben ser 1111b instrucción de otra manera #UD.

Si VMOVHPD está codificado con VEX.L o EVEX.L'L= 1, un intento de ejecutar la instrucción codificada con VEX.L o EVEX.L'L= 1 causará una excepción #UD.

Operación

MOVHPD (128-bit Legacy SSE Load)
DEST[63:0] (Unmodified)
DEST[127:64] := SRC[63:0]
DEST[MAXVL-1:128] (Unmodified)

VMOVHPD (VEX.128 & EVEX Encoded Load)
DEST[63:0] := SRC1[63:0]
DEST[127:64] := SRC2[63:0]
DEST[MAXVL-1:128] := 0

VMOVHPD (Store)
DEST[63:0] := SRC[127:64]

Intel C/C++ compilador intrínseco

MOVHPD __m128d _mm_loadh_pd ( __m128d a, double *p) MOVHPD void _mm_storeh_pd (double *p, __m128d a);

SIMD coma flotante Excepciones

None.

Otras excepciones

Instrucciones no codificadas en EVEX, ver Tabla 2-22, "Tipo 5 Condiciones de Excepción," adicionalmente:

#UD               If VEX.L = 1.

Instrucciones codificadas por EVEX, ver Tabla 2-59, "Tipo E9NF Clase Condiciones de Excepción."

Fuentes