Mercurial > hg > truffle
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); |