Instruções de conversão
Convertendo valores entre float, double e inteiro.
Essas instruções servem para conversão de tipos entre float, double e inteiro.
Conversão entre double e float
CVTPS2PD | Convert packed single-precision floating-point values to packed double-precision floating-point values
CVTPS2PD xmm(n), xmm(n)
CVTPS2PD xmm(n), float(2)Converte dois valores float do operando fonte (segundo) em dois valores double no operando destino (primeiro).
CVTPD2PS | Convert packed double-precision floating-point values to packed single-precision floating-point values
CVTPD2PS xmm(n), xmm(n)
CVTPD2PS xmm(n), double(2)Converte dois valores double do operando fonte (segundo) em dois valores float no operando destino (primeiro).
CVTSS2SD | Convert scalar single-precision floating-point value to scalar double-precision floating-point value
CVTSS2SD xmm(n), xmm(n)
CVTSS2SD xmm(n), float(1)Converte um valor float do operando fonte (segundo) em um valor double no operando destino (primeiro).
CVTSD2SS | Convert scalar double-precision floating-point value to scalar single-precision floating-point value
CVTSD2SS xmm(n), xmm(n)
CVTSD2SS xmm(n), double(1)Converte um valor double do operando fonte (segundo) em um valor float no operando destino (primeiro).
Conversão entre double e inteiro
CVTPD2DQ/CVTTPD2DQ | Convert (with truncation) packed double-precision floating-point values to packed doubleword integers
CVTPD2DQ xmm(n), xmm(n)
CVTPD2DQ xmm(n), double(2)
CVTTPD2DQ xmm(n), xmm(n)
CVTTPD2DQ xmm(n), double(2)Converte os dois doubles no operando fonte para dois inteiros sinalizados de 32-bit no operando destino. A instrução CVTPD2DQ faz o arredondamento normal do valor enquanto CVTTPD2DQ trunca ele.
CVTDQ2PD | Convert packed doubleword integers to packed double-precision floating-point values
CVTDQ2PD xmm(n), xmm(n)
CVTDQ2PD xmm(n), dword(2)Converte os dois inteiros sinalizados de 32-bit no operando fonte para dois doubles no operando destino.
CVTSD2SI/CVTTSD2SI | Convert scalar double-precision floating-point value to doubleword integer
CVTSD2SI reg32/64, xmm(n)
CVTSD2SI reg32/64, double(1)
CVTTSD2SI reg32/64, xmm(n)
CVTTSD2SI reg32/64, double(1)CVTSD2SI converte o valor double no operando fonte em inteiro de 32-bit sinalizado, e armazena o valor no registrador de propósito geral do operando destino. O registrador destino também pode ser um registrador de 64-bit onde nesse caso o valor sofrerá extensão de sinal (sign extension).
CVTTSD2SI faz a mesma coisa porém truncando o valor.
CVTSI2SD | Convert doubleword integer to scalar double-precision floating-point value
CVTSI2SD xmm(n), reg32/64
CVTSI2SD xmm(n), dword(1)
CVTSI2SD xmm(n), qword(1)Converte o valor inteiro sinalizado de 32 ou 64 bits do operando fonte e armazena como um double no operando destino.
Conversão entre float e inteiro
CVTPS2DQ/CVTTPS2DQ | Convert (with truncation) packed single-precision floating-point values to packed doubleword integers
CVTPS2DQ xmm(n), xmm(n)
CVTPS2DQ xmm(n), float(4)
CVTTPS2DQ xmm(n), xmm(n)
CVTTPS2DQ xmm(n), float(4)Converte quatro floats do operando fonte em quatro inteiros sinalizados de 32-bit no operando destino. A instrução CVTPS2DQ faz o arredondamento normal dos valores enquanto CVTTPS2DQ trunca eles.
CVTDQ2PS | Convert packed doubleword integers to packed single-precision floating-point values
CVTDQ2PS xmm(n), xmm(n)
CVTDQ2PS xmm(n), dword(4)Converte quatro inteiros sinalizados de 32-bit no operando fonte para quatro floats no operando destino.
CVTSS2SI/CVTTSS2SI | Convert scalar single-precision floating-point value to doubleword integer
CVTSS2SI reg32/64, xmm(n)
CVTSS2SI reg32/64, float(1)
CVTTSS2SI reg32/64, xmm(n)
CVTTSS2SI reg32/64, float(1)CVTSS2SI converte o valor float no operando fonte em inteiro de 32-bit sinalizado, e armazena o valor no registrador de propósito geral do operando destino. O registrador destino também pode ser um registrador de 64-bit onde nesse caso o valor sofrerá extensão de sinal (sign extension).
A instrução CVTTSS2SI faz a mesma coisa porém truncando o valor.
CVTSI2SS | Convert doubleword integer to scalar single-precision floating-point value
CVTSI2SS xmm(n), reg32/64
CVTSI2SS xmm(n), dword(1)
CVTSI2SS xmm(n), qword(1)Converte o valor inteiro sinalizado de 32 ou 64 bits do operando fonte e armazena como um float no operando destino.
Last updated
Was this helpful?