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);