VRSQRT28PD
Aproximación a la Cuadrícula Recíproca Root de Doble Precisión Empaquetada
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
EVEX.512.66.0F38.W1 CC /r | VRSQRT28PD zmm1 {k1}{z}, zmm2/m512/m64bcst {sae} | A | Valido | Valido | Computes aproximaciones a la raíz cuadrada Reciprocal (<2^- 28 error relativo) de los valores de doble precisión flotante-punto de zmm2/m512/m64bcst y las tiendas resultan en zmm1con escrituramask k1. |
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)modrm.rmlecturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide
Tupla: Full
Coste medido
Cargando las mediciones de arch-data...
Descripción
Computa la raíz cuadrada recíproca de los valores flotantes64 en el operando de origen (el segundo operando) y almacenar los resultados al operando de destino (el primer operando). El recíproco aproximado se evalúa con menos de 2^-28 de error relativo máximo.
Si algún elemento fuente es NaN, el valor fuente NaN silencioso es devuelto para ese elemento. Números de origen negativo (no cero), así como -, devolver la NaN canónica y establecer la Bandera Inválida (#I). Un valor de -0 debe regresar - y establecer las banderas DivByZero (#Z). Los números negativos deben devolver NaN y establecer la bandera Inválida (#I). Note sin embargo que la instrucción desactiva la entrada a cero del mismo signo, por lo que los denormales negativos regresan - y establecer la bandera DivByZero.
El operando de origen es un registro ZMM, una ubicación de memoria de 512 bits o un vector de 512 bits emitido desde una ubicación de memoria de 64 bits. El operando de destino es un registro ZMM, actualizado condicionalmente utilizando máscara de escritura k1.
EVEX.vvvv está reservado y debe ser 1111b instrucciones de lo contrario #UD.
En https://software.intel.com/en-us/articles/reference-implementations-for-IA-approximation-instructions-vrcp14-vrsqrt14-vrcp28-vrsqrt28-vrsqrt28-vexp2.
Operación
VRSQRT28PD (EVEX Encoded Versions)
(KL, VL) = (8, 512)
FOR j := 0 TO KL-1
i := j * 64
IF k1[j] OR *no writemask* THEN
IF (EVEX.b = 1) AND (SRC *is memory*)
THEN DEST[i+63:i] := (1.0/ SQRT(SRC[63:0]));
ELSE DEST[i+63:i] := (1.0/ SQRT(SRC[i+63:i]));
FI;
ELSE
IF *merging-masking* ; merging-masking
THEN *DEST[i+63:i] remains unchanged*
ELSE ; zeroing-masking
DEST[i+63:i] := 0
FI;
FI;
ENDFOR;
Table 8-7. VRSQRT28PD Special Cases
Input Value Result Value Comments
NAN
X = 2-2n QNAN(input) If (SRC = SNaN) then #I
X<0
X = -0 or negative denormal 2n
X = +0 or positive denormal
X = +INF QNaN_Indefinite Including -INF
-INF #Z
+INF #Z
+0Intel C/C++ compilador intrínseco
VRSQRT28PD __m512d _mm512_rsqrt28_round_pd(__m512d a, int sae);
VRSQRT28PD __m512d _mm512_mask_rsqrt28_round_pd(__m512d s, __mmask8 m,__m512d a, int sae);
VRSQRT28PD __m512d _mm512_maskz_rsqrt28_round_pd(__mmask8 m,__m512d a, int sae);SIMD coma flotante Excepciones
Inválido (si la entrada SNaN), Divide-by-zero.
Otras excepciones
Ver Tabla 2-48, "Tipo E2 Clase Condiciones de Excepción".