Mercurial > hg > truffle
comparison 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 |
comparison
equal
deleted
inserted
replaced
70:b683f557224b | 71:3d62cb85208d |
---|---|
2670 emit_byte(0x0F); | 2670 emit_byte(0x0F); |
2671 emit_byte(0x12); | 2671 emit_byte(0x12); |
2672 emit_sse_operand(dst, src); | 2672 emit_sse_operand(dst, src); |
2673 } | 2673 } |
2674 | 2674 |
2675 void Assembler::cvtdq2pd(XMMRegister dst, XMMRegister src) { | |
2676 assert(VM_Version::supports_sse2(), ""); | |
2677 | |
2678 emit_byte(0xF3); | |
2679 emit_byte(0x0F); | |
2680 emit_byte(0xE6); | |
2681 emit_sse_operand(dst, src); | |
2682 } | |
2683 | |
2684 void Assembler::cvtdq2ps(XMMRegister dst, XMMRegister src) { | |
2685 assert(VM_Version::supports_sse2(), ""); | |
2686 | |
2687 emit_byte(0x0F); | |
2688 emit_byte(0x5B); | |
2689 emit_sse_operand(dst, src); | |
2690 } | |
2675 | 2691 |
2676 emit_sse_instruction(andps, sse, 0, 0x54, XMMRegister, XMMRegister); | 2692 emit_sse_instruction(andps, sse, 0, 0x54, XMMRegister, XMMRegister); |
2677 emit_sse_instruction(andpd, sse2, 0x66, 0x54, XMMRegister, XMMRegister); | 2693 emit_sse_instruction(andpd, sse2, 0x66, 0x54, XMMRegister, XMMRegister); |
2678 emit_sse_instruction(andnps, sse, 0, 0x55, XMMRegister, XMMRegister); | 2694 emit_sse_instruction(andnps, sse, 0, 0x55, XMMRegister, XMMRegister); |
2679 emit_sse_instruction(andnpd, sse2, 0x66, 0x55, XMMRegister, XMMRegister); | 2695 emit_sse_instruction(andnpd, sse2, 0x66, 0x55, XMMRegister, XMMRegister); |