Soma 4 números float (ou 2 números double) de uma única vez no registrador destino com os quatro números float (ou 2 números double) do registrador/memória fonte. Exemplo:
ADDSS faz a adição do float contido no double word (4 bytes) menos significativo do registrador XMM. Já ADDSD faz a adição do double contido na quadword (8 bytes) menos significativa do registrador.
Funciona como ADDSS/ADDSD porém dividindo os números ao invés de somá-los.
RCPPS | Compute Reciprocals of Packed Single-precision floating-point values
RCPPS xmm(n), xmm(n)
RCPPS xmm(n), float(4)
Calcula o valor aproximado do inverso multiplicativo dos floats no operando fonte (a direita) e armazena os valores no operando destino.
RCPSS | Compute Reciprocal of Scalar Single-precision floating-point value
RCPSS xmm(n), xmm(n)
RCPSS xmm(n), float(1)
Calcula o valor aproximado do inverso multiplicativo do float no operando fonte (a direita) e armazena o resultado na double word (4 bytes) menos significativa do operando destino.
SQRTP(S|D) | Compute square roots of Packed (Single|Double)-precision floating-point values
bits 64
section .text
global my_sqrt
my_sqrt:
sqrtsd xmm0, xmm0
ret
RSQRTPS | Compute Reciprocals of square roots of Packed Single-precision floating-point values
RSQRTPS xmm(n), xmm(n)
RSQRTPS xmm(n), float(4)
Calcula o inverso multiplicativo das raízes quadradas dos floats no operando fonte, armazenando os resultados no operando destino. Essa instrução é equivalente ao uso de SQRTPS seguido de RCPPS.
RSQRTSS | Compute Reciprocal of square root of Scalar Single-precision floating-point value
RSQRTSS xmm(n), xmm(n)
RSQRTSS xmm(n), float(1)
Calcula o inverso multiplicativo da raiz quadrada do número escalar no operando fonte e armazena o resultado no double word menos significativo do operando destino.
MAXP(S|D) | return maximum of Packed (Single|Double)-precision floating-point values