VRCP28SD
Aproximación a la Reciprocal de valores en coma flotante de precisión doble escalares
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
EVEX.LLIG.66.0F38.W1 CB /r | VRCP28SD xmm1 {k1}{z}, xmm2, xmm3/m64 {sae} | A | Valido | Valido | Computa el recíproco aproximado (<2^-28 error relativo) delos valores en coma flotante de precisión doble escalaresdentroxmm3/m64y almacena los resultados enxmm1Bajomáscara de escritura. Además, superiorvalor en coma flotante de precisión doble(bits[127:64]) dexmm2es copiadoxmm1[127:64]. |
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.regescriturabyte ModRM, campo reg (bits 5-3)evex.vvvvlecturaprefijo EVEX, campo vvvv (invertido)modrm.rmlecturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide
Tupla: Tuple1 Scalar
Coste medido
Cargando las mediciones de arch-data...
Descripción
Calcula la aproximación recíproca del valor bajo flotador64 en el segundo operando de origen (el tercer operando) y almacenar el resultado al operando de destino (el primer operando). El recíproco aproximado se evalúa con menos de 2^-28 de error relativo máximo. El resultado está escrito en el elemento bajo flotador64 del operando de destino según la máscara de escritura k1. Los bits 127:64 del destino se copian de los bits correspondientes del primer operando de origen (el segundo operando).
Un valor de entrada denormal se trata como cero y no indica #DE, independientemente de MXCSR.DAZ. Un resultado denormal se desborda a cero y no indica #UE, independientemente de MXCSR.FTZ.
Si algún elemento fuente es NaN, el valor fuente NaN silencioso es devuelto para ese elemento. Si algún elemento fuente es +/-, +/-0.0 se devuelve para ese elemento. Además, si algún elemento fuente es +/-0.0, +/- se devuelve para ese elemento.
El primer operando de origen es un registro XMM. El segundo operando de origen es un registro XMM o una ubicación de memoria de 64 bits. El operando de destino es un registro XMM, actualizado condicionalmente utilizando máscara de escritura k1.
En https://software.intel.com/en-us/articles/reference-implementations-for-IA-approximation-instructions-vrcp14-vrcp28-vrsqrt28-vrsqrt28-vexp2.
Operación
VRCP28SD ((EVEX Encoded Versions)
IF k1[0] OR *no writemask* THEN
DEST[63: 0] := RCP_28_DP(1.0/SRC2[63: 0]);
ELSE
IF *merging-masking* ; merging-masking
THEN *DEST[63: 0] remains unchanged*
ELSE ; zeroing-masking
DEST[63: 0] := 0
FI;
FI;
ENDFOR;
DEST[127:64] := SRC1[127: 64]
DEST[MAXVL-1:128] := 0
Table 8-4. VRCP28SD Special Cases
Input Value Result Value Comments
NAN QNAN(input) If (SRC = SNaN) then #I
0 X < 2-1022
-2-1022 < X -0 INF Positive input denormal or zero; #Z
X > 21022
X < -21022 -INF Negative input denormal or zero; #Z
X = + +0.0f
X = - -0.0f
X = 2-n
X = -2-n +0.0f
-0.0f
2n Exact result (unless input/output is a denormal)
-2n Exact result (unless input/output is a denormal)Intel C/C++ compilador intrínseco
VRCP28SD __m128d _mm_rcp28_round_sd ( __m128d a, __m128d b, int sae);
VRCP28SD __m128d _mm_mask_rcp28_round_sd(__m128d s, __mmask8 m, __m128d a, __m128d b, int sae);
VRCP28SD __m128d _mm_maskz_rcp28_round_sd(__mmask8 m, __m128d a, __m128d b, int sae);SIMD coma flotante Excepciones
Inválido (si la entrada SNaN), Divide-by-zero.
Otras excepciones
Ver Tabla 2-49, "Tipo E3 Clase Condiciones de Excepción".