VRSQRT28SD

Aproximación a la Cuadrícula Recíproca de escalar Doble Precisión

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
EVEX.LLIG.66.0F38.W1 CD /rVRSQRT28SD xmm1 {k1}{z}, xmm2, xmm3/m64 {sae}AValidoValidoComputes approximate reciprocal square root (<2^-28 relative error) of los valores en coma flotante de precisión doble escalares de xmm3/m64 y las tiendas resultan en xmm1with máscara de escritura k1. Además, el valor en coma flotante de precisión doble superior (bits[127:64]) de xmm2 es copiado a xmm1[164.

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 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

Coste medido

Cargando las mediciones de arch-data...

Descripción

Computa la raíz cuadrada 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). La raíz cuadrada recíproca aproximada se evalúa con menos de 2^-28 de error relativo máximo. El resultado está escrito en el elemento bajo flotador64 de xmm1 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).

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 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.

En https://software.intel.com/en-us/articles/reference-implementations-for-IA-approximation-instructions-vrcp14-vrsqrt14-vrcp28-vrsqrt28-vrsqrt28-vexp2.

Operación

VRSQRT28SD (EVEX Encoded Versions)

IF k1[0] OR *no writemask* THEN

             DEST[63: 0] := (1.0/ SQRT(SRC[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-8. VRSQRT28SD 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

                             +0

Intel C/C++ compilador intrínseco

VRSQRT28SD __m128d _mm_rsqrt28_round_sd(__m128d a, __m128d b, int rounding);
VRSQRT28SD __m128d _mm_mask_rsqrt28_round_sd(__m128d s, __mmask8 m,__m128d a, __m128d b, int rounding);
VRSQRT28SD __m128d _mm_maskz_rsqrt28_round_sd( __mmask8 m,__m128d a, __m128d b, int rounding);

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".

Fuentes