comparison src/cpu/x86/vm/assembler_x86.cpp @ 2014:4de5f4101cfd

Merge
author iveresov
date Wed, 08 Dec 2010 17:50:49 -0800
parents 0fc262af204f 2f644f85485d
children 06f017f7daa7 b1a2afa37ec4
comparison
equal deleted inserted replaced
1990:401fbd7ff77c 2014:4de5f4101cfd
2647 emit_byte(0x0F); 2647 emit_byte(0x0F);
2648 emit_byte(0x51); 2648 emit_byte(0x51);
2649 emit_byte(0xC0 | encode); 2649 emit_byte(0xC0 | encode);
2650 } 2650 }
2651 2651
2652 void Assembler::sqrtsd(XMMRegister dst, Address src) {
2653 NOT_LP64(assert(VM_Version::supports_sse2(), ""));
2654 InstructionMark im(this);
2655 emit_byte(0xF2);
2656 prefix(src, dst);
2657 emit_byte(0x0F);
2658 emit_byte(0x51);
2659 emit_operand(dst, src);
2660 }
2661
2662 void Assembler::sqrtss(XMMRegister dst, XMMRegister src) {
2663 // HMM Table D-1 says sse2
2664 // NOT_LP64(assert(VM_Version::supports_sse(), ""));
2665 NOT_LP64(assert(VM_Version::supports_sse2(), ""));
2666 emit_byte(0xF3);
2667 int encode = prefix_and_encode(dst->encoding(), src->encoding());
2668 emit_byte(0x0F);
2669 emit_byte(0x51);
2670 emit_byte(0xC0 | encode);
2671 }
2672
2673 void Assembler::sqrtss(XMMRegister dst, Address src) {
2674 NOT_LP64(assert(VM_Version::supports_sse2(), ""));
2675 InstructionMark im(this);
2676 emit_byte(0xF3);
2677 prefix(src, dst);
2678 emit_byte(0x0F);
2679 emit_byte(0x51);
2680 emit_operand(dst, src);
2681 }
2682
2652 void Assembler::stmxcsr( Address dst) { 2683 void Assembler::stmxcsr( Address dst) {
2653 NOT_LP64(assert(VM_Version::supports_sse(), "")); 2684 NOT_LP64(assert(VM_Version::supports_sse(), ""));
2654 InstructionMark im(this); 2685 InstructionMark im(this);
2655 prefix(dst); 2686 prefix(dst);
2656 emit_byte(0x0F); 2687 emit_byte(0x0F);
4354 4385
4355 void Assembler::shrq(Register dst) { 4386 void Assembler::shrq(Register dst) {
4356 int encode = prefixq_and_encode(dst->encoding()); 4387 int encode = prefixq_and_encode(dst->encoding());
4357 emit_byte(0xD3); 4388 emit_byte(0xD3);
4358 emit_byte(0xE8 | encode); 4389 emit_byte(0xE8 | encode);
4359 }
4360
4361 void Assembler::sqrtsd(XMMRegister dst, Address src) {
4362 NOT_LP64(assert(VM_Version::supports_sse2(), ""));
4363 InstructionMark im(this);
4364 emit_byte(0xF2);
4365 prefix(src, dst);
4366 emit_byte(0x0F);
4367 emit_byte(0x51);
4368 emit_operand(dst, src);
4369 } 4390 }
4370 4391
4371 void Assembler::subq(Address dst, int32_t imm32) { 4392 void Assembler::subq(Address dst, int32_t imm32) {
4372 InstructionMark im(this); 4393 InstructionMark im(this);
4373 prefixq(dst); 4394 prefixq(dst);
4926 // src should NEVER be a real pointer. Use AddressLiteral for true pointers 4947 // src should NEVER be a real pointer. Use AddressLiteral for true pointers
4927 void MacroAssembler::movptr(Address dst, intptr_t src) { 4948 void MacroAssembler::movptr(Address dst, intptr_t src) {
4928 movl(dst, src); 4949 movl(dst, src);
4929 } 4950 }
4930 4951
4931
4932 void MacroAssembler::movsd(XMMRegister dst, AddressLiteral src) {
4933 movsd(dst, as_Address(src));
4934 }
4935 4952
4936 void MacroAssembler::pop_callee_saved_registers() { 4953 void MacroAssembler::pop_callee_saved_registers() {
4937 pop(rcx); 4954 pop(rcx);
4938 pop(rdx); 4955 pop(rdx);
4939 pop(rdi); 4956 pop(rdi);