comparison src/cpu/x86/vm/assembler_x86_64.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 d6fe2e4959d6
comparison
equal deleted inserted replaced
70:b683f557224b 71:3d62cb85208d
3370 emit_byte(0x0F); 3370 emit_byte(0x0F);
3371 emit_byte(0x5A); 3371 emit_byte(0x5A);
3372 emit_byte(0xC0 | encode); 3372 emit_byte(0xC0 | encode);
3373 } 3373 }
3374 3374
3375 void Assembler::cvtdq2pd(XMMRegister dst, XMMRegister src) {
3376 emit_byte(0xF3);
3377 int encode = prefix_and_encode(dst->encoding(), src->encoding());
3378 emit_byte(0x0F);
3379 emit_byte(0xE6);
3380 emit_byte(0xC0 | encode);
3381 }
3382
3383 void Assembler::cvtdq2ps(XMMRegister dst, XMMRegister src) {
3384 int encode = prefix_and_encode(dst->encoding(), src->encoding());
3385 emit_byte(0x0F);
3386 emit_byte(0x5B);
3387 emit_byte(0xC0 | encode);
3388 }
3389
3375 void Assembler::cvtsd2ss(XMMRegister dst, XMMRegister src) { 3390 void Assembler::cvtsd2ss(XMMRegister dst, XMMRegister src) {
3376 emit_byte(0xF2); 3391 emit_byte(0xF2);
3377 int encode = prefix_and_encode(dst->encoding(), src->encoding()); 3392 int encode = prefix_and_encode(dst->encoding(), src->encoding());
3378 emit_byte(0x0F); 3393 emit_byte(0x0F);
3379 emit_byte(0x5A); 3394 emit_byte(0x5A);