V4FMADDSS, V4FNMADDSS
Escalar coma flotante de precisión simple Fused Multiply-Add
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
EVEX.LLIG.F2.0F38.W0 9B /r | V4FMADDSS xmm1{k1}{z}, xmm2+3, m128 | A | Valido | Valido | Multiply valores en coma flotante de precisión simple escalares del bloque de registro de origen indicado por xmm2 por valores de m128 y acumular el resultado en xmm1. |
EVEX.LLIG.F2.0F38.W0 AB /r | V4FNMADDSS xmm1{k1}{z}, xmm2+3, m128 | A | Valido | Valido | Multiply and negatevalores en coma flotante de precisión simple escalaresdel bloque de registro de fuentes indicado porxmm2por valoresm128y acumular el resultado enxmm1. |
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
Tuple1_4Xmodrm.reglectura y escriturabyte 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
Coste medido
Cargando las mediciones de arch-data...
Descripción
Esta instrucción compute 4 secuencial escalar fusionado coma flotante de precisión simple multiplica-add instrucciones con un operando de memoria seleccionado secuencialmente en cada uno de los cuatro pasos.
En el cuadro anterior, la notación de "+3" se utiliza para denotar que la instrucción accede a 4 registros de fuentes basados en que operando; las fuentes son consecutivas, comienzan en un múltiplo de 4 límites, y contienen el registro codificado operando.
Esta instrucción admite la supresión de la falla de memoria. Todo el operando de memoria está cargado si el bit de máscara menos significativo se fija a 1 o si se utiliza una codificación "sin máscaras".
El tipo tuple Tuple1 4X implica que cuatro elementos de 32 bits (16 bytes) se refieren a la parte de operación de memoria de esta instrucción.
El redondeo se realiza en cada límite FMA. Las excepciones también se toman secuencialmente. Preand post-computational exceptions of the first FMA take priority over the preand post-computational exceptions of the second FMA, etc.
Operación
src_reg_id is the 5 bit index of the vector register specified in the instruction as the src1 register.
define NFMA_SS(vl, dest, k1, msrc, regs_loaded, src_base, posneg):
tmpdest := dest
// reg[] is an array representing the SIMD register file.
IF k1[0] or *no writemask*:
FOR j := 0 to regs_loaded - 1:
IF posneg = 0:
tmpdest.single[0] := RoundFPControl_MXCSR(tmpdest.single[0] - reg[src_base + j ].single[0] * msrc.single[j])
ELSE:
tmpdest.single[0] := RoundFPControl_MXCSR(tmpdest.single[0] + reg[src_base + j ].single[0] * msrc.single[j])
ELSE IF *zeroing*:
tmpdest.single[0] := 0
dest := tmpdst
dest[MAX_VL-1:VL] := 0
V4FMADDSS and V4FNMADDSS dest{k1}, src1, msrc (AVX512)
VL = 128
regs_loaded := 4
src_base := src_reg_id & ~3 // for src1 operand
posneg := 0 if negative form, 1 otherwise
NFMA_SS(vl, dest, k1, msrc, regs_loaded, src_base, posneg)Intel C/C++ compilador intrínseco
V4FMADDSS __m128 _mm_4fmadd_ss(__m128, __m128x4, __m128 *);
V4FMADDSS __m128 _mm_mask_4fmadd_ss(__m128, __mmask8, __m128x4, __m128 *);
V4FMADDSS __m128 _mm_maskz_4fmadd_ss(__mmask8, __m128, __m128x4, __m128 *);
V4FNMADDSS __m128 _mm_4fnmadd_ss(__m128, __m128x4, __m128 *);
V4FNMADDSS __m128 _mm_mask_4fnmadd_ss(__m128, __mmask8, __m128x4, __m128 *);
V4FNMADDSS __m128 _mm_maskz_4fnmadd_ss(__mmask8, __m128, __m128x4, __m128 *);SIMD coma flotante Excepciones
Overflow, Underflow, Invalid, Precision, Denormal.
Otras excepciones
See Type E2; additionally:
#UD If the EVEX broadcast bit is set to 1.#UD If the MODRM.mod = 0b11.