MOVNTDQ
Store Packed Integers Usando No-Temporal Hint
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
66 0F E7 /r | MOVNTDQ m128, xmm1 | A | Valido | Valido | Mover los valores enteros empaquetados en xmm1 a m128 usando la indirecta no temporal. |
VEX.128.66.0F.WIG E7 /r | VMOVNTDQ m128, xmm1 | A | Valido | Valido | Mover los valores enteros empaquetados en xmm1 a m128 usando la indirecta no temporal. |
VEX.256.66.0F.WIG E7 /r | VMOVNTDQ m256, ymm1 | A | Valido | Valido | Mover los valores enteros empaquetados en ymm1 a m256 usando la indirecta no temporal. |
EVEX.128.66.0F.W0 E7 /r | VMOVNTDQ m128, xmm1 | B | Valido | Valido | Mover los valores enteros empaquetados en xmm1 a m128 usando no AVX512F) OR AVX10.1 indirecto temporal. |
EVEX.256.66.0F.W0 E7 /r | VMOVNTDQ m256, ymm1 | B | Valido | Valido | Mover los valores enteros empaquetados en zmm1 a m256 usando no AVX512F) OR AVX10.1 indirecto temporal. |
EVEX.512.66.0F.W0 E7 /r | VMOVNTDQ m512, zmm1 Op/En Tuple Type A N/A B Full Mem | B | Valido | Valido | Mover los valores enteros empaquetados en zmm1 a m512 usando la indirecta temporal no OR AVX10.1. Instrucción operando Encodi ng1 operando 1 Operan d 2 operando 3 operando 4 ModRM:r/m (w) ModRM: (r) regr |
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
modrm.rmescriturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pidemodrm.reglecturabyte ModRM, campo reg (bits 5-3)
B
modrm.rmescriturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pidemodrm.reglecturabyte ModRM, campo reg (bits 5-3)
Tupla: Full Mem
Coste medido
Cargando las mediciones de arch-data...
Descripción
Mueva los enteros empaquetados en el operando de origen (segundo operando) al operando de destino (primer operando) utilizando una insinuación no temporal para evitar el caché de los datos durante la escritura a la memoria. El operando de origen es un registro XMM, registro YMM o registro ZMM, que se supone que contiene datos enteros (teléfonos empaquetados, palabras, palabras dobles o cuádwords). El operando de destino es una ubicación de memoria de 128 bits, 256 bits o 512 bits. El operando de memoria debe estar alineado en una versión de 16 bytes (128-bit), 32-byte (VEX.256 versión codificada) o 64-byte (512-bit versión) límite de lo contrario una excepción de protección general (#GP) se generará.
El indicio no temporal se implementa utilizando un protocolo de tipo de memoria de combinación de escritura (WC) al escribir los datos a la memoria. Utilizando este protocolo, el procesador no escribe los datos en la jerarquía de caché, ni recoge la línea correspondiente de caché de la memoria en la jerarquía de caché. El tipo de memoria de la región que se está escribiendo puede anular la indirecta no temporal, si la dirección de memoria especificada para la tienda no temporal está en una región de memoria inestable (UC) o escrita protegida (WP). Para obtener más información sobre las tiendas no temporales, consulte "Caching of Temporal vs. Datos no temporales" en el capítulo 10 del Manual de Desarrolladores de Software de Arquitectura Intel, Volumen 1.
Debido a que el protocolo WC utiliza un modelo de consistencia de memoria de orden débil, una operación de esgrima implementada con la instrucción SFENCE o MFENCE debe usarse junto con instrucciones VMOVNTDQ si varios procesadores pueden usar diferentes tipos de memoria para leer/escribir los lugares de memoria de destino.
Nota: VEX.vvvv y EVEX.vvvv están reservados y deben ser 1111b, VEX.L debe ser 0; de lo contrario las instrucciones serán
#UD.Operación
VMOVNTDQ(EVEX Encoded Versions)
VL = 128, 256, 512
DEST[VL-1:0] := SRC[VL-1:0]
1. ModRM.MOD != 011B
DEST[MAXVL-1:VL] := 0
MOVNTDQ (Legacy and VEX Versions)
DEST := SRCIntel C/C++ compilador intrínseco
VMOVNTDQ void _mm512_stream_si512(void * p, __m512i a);
VMOVNTDQ void _mm256_stream_si256 (__m256i * p, __m256i a);
MOVNTDQ void _mm_stream_si128 (__m128i * p, __m128i a);SIMD coma flotante Excepciones
None.
Otras excepciones
Instrucciones no-EVEX-encoded, ver Excepciones Tipo1.SSE2 en la tabla 2-18, "Tipo 1 Clase Condiciones de Excepción."
Instrucciones codificadas por EVEX, ver Tabla 2-47, "Tipo E1NF Clase Condiciones de Excepción."
Additionally:
#UD If VEX.vvvv != 1111B or EVEX.vvvv != 1111B.