Mercurial > hg > truffle
diff src/cpu/x86/vm/assembler_x86_32.cpp @ 71:3d62cb85208d
6662967: Optimize I2D conversion on new x86
Summary: Use CVTDQ2PS and CVTDQ2PD for integer values conversions to float and double values on new AMD cpu.
Reviewed-by: sgoldman, never
author | kvn |
---|---|
date | Wed, 19 Mar 2008 15:33:25 -0700 |
parents | a61af66fc99e |
children | deadee49286e |
line wrap: on
line diff
--- a/src/cpu/x86/vm/assembler_x86_32.cpp Wed Mar 19 15:14:36 2008 -0700 +++ b/src/cpu/x86/vm/assembler_x86_32.cpp Wed Mar 19 15:33:25 2008 -0700 @@ -2672,6 +2672,22 @@ emit_sse_operand(dst, src); } +void Assembler::cvtdq2pd(XMMRegister dst, XMMRegister src) { + assert(VM_Version::supports_sse2(), ""); + + emit_byte(0xF3); + emit_byte(0x0F); + emit_byte(0xE6); + emit_sse_operand(dst, src); +} + +void Assembler::cvtdq2ps(XMMRegister dst, XMMRegister src) { + assert(VM_Version::supports_sse2(), ""); + + emit_byte(0x0F); + emit_byte(0x5B); + emit_sse_operand(dst, src); +} emit_sse_instruction(andps, sse, 0, 0x54, XMMRegister, XMMRegister); emit_sse_instruction(andpd, sse2, 0x66, 0x54, XMMRegister, XMMRegister);