| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/globals.h" | 5 #include "vm/globals.h" |
| 6 #if defined(TARGET_ARCH_IA32) | 6 #if defined(TARGET_ARCH_IA32) |
| 7 | 7 |
| 8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
| 9 #include "vm/heap.h" | 9 #include "vm/heap.h" |
| 10 #include "vm/memory_region.h" | 10 #include "vm/memory_region.h" |
| (...skipping 631 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 642 | 642 |
| 643 void Assembler::xorpd(XmmRegister dst, XmmRegister src) { | 643 void Assembler::xorpd(XmmRegister dst, XmmRegister src) { |
| 644 AssemblerBuffer::EnsureCapacity ensured(&buffer_); | 644 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 645 EmitUint8(0x66); | 645 EmitUint8(0x66); |
| 646 EmitUint8(0x0F); | 646 EmitUint8(0x0F); |
| 647 EmitUint8(0x57); | 647 EmitUint8(0x57); |
| 648 EmitXmmRegisterOperand(dst, src); | 648 EmitXmmRegisterOperand(dst, src); |
| 649 } | 649 } |
| 650 | 650 |
| 651 | 651 |
| 652 void Assembler::orpd(XmmRegister dst, XmmRegister src) { |
| 653 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 654 EmitUint8(0x66); |
| 655 EmitUint8(0x0F); |
| 656 EmitUint8(0x56); |
| 657 EmitXmmRegisterOperand(dst, src); |
| 658 } |
| 659 |
| 660 |
| 652 void Assembler::xorps(XmmRegister dst, const Address& src) { | 661 void Assembler::xorps(XmmRegister dst, const Address& src) { |
| 653 AssemblerBuffer::EnsureCapacity ensured(&buffer_); | 662 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 654 EmitUint8(0x0F); | 663 EmitUint8(0x0F); |
| 655 EmitUint8(0x57); | 664 EmitUint8(0x57); |
| 656 EmitOperand(dst, src); | 665 EmitOperand(dst, src); |
| 657 } | 666 } |
| 658 | 667 |
| 659 | 668 |
| 660 void Assembler::xorps(XmmRegister dst, XmmRegister src) { | 669 void Assembler::xorps(XmmRegister dst, XmmRegister src) { |
| 661 AssemblerBuffer::EnsureCapacity ensured(&buffer_); | 670 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 662 EmitUint8(0x0F); | 671 EmitUint8(0x0F); |
| 663 EmitUint8(0x57); | 672 EmitUint8(0x57); |
| 664 EmitXmmRegisterOperand(dst, src); | 673 EmitXmmRegisterOperand(dst, src); |
| 665 } | 674 } |
| 666 | 675 |
| 667 | 676 |
| 668 void Assembler::andpd(XmmRegister dst, const Address& src) { | 677 void Assembler::andpd(XmmRegister dst, const Address& src) { |
| 669 AssemblerBuffer::EnsureCapacity ensured(&buffer_); | 678 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 670 EmitUint8(0x66); | 679 EmitUint8(0x66); |
| 671 EmitUint8(0x0F); | 680 EmitUint8(0x0F); |
| 672 EmitUint8(0x54); | 681 EmitUint8(0x54); |
| 673 EmitOperand(dst, src); | 682 EmitOperand(dst, src); |
| 674 } | 683 } |
| 675 | 684 |
| 676 | 685 |
| 686 void Assembler::andpd(XmmRegister dst, XmmRegister src) { |
| 687 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 688 EmitUint8(0x66); |
| 689 EmitUint8(0x0F); |
| 690 EmitUint8(0x54); |
| 691 EmitXmmRegisterOperand(dst, src); |
| 692 } |
| 693 |
| 694 |
| 695 void Assembler::pextrd(Register dst, XmmRegister src, const Immediate& imm) { |
| 696 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 697 EmitUint8(0x66); |
| 698 EmitUint8(0x0F); |
| 699 EmitUint8(0x3A); |
| 700 EmitUint8(0x16); |
| 701 EmitOperand(src, Operand(dst)); |
| 702 ASSERT(imm.is_uint8()); |
| 703 EmitUint8(imm.value()); |
| 704 } |
| 705 |
| 706 |
| 707 void Assembler::pmovsxdq(XmmRegister dst, XmmRegister src) { |
| 708 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 709 EmitUint8(0x66); |
| 710 EmitUint8(0x0F); |
| 711 EmitUint8(0x38); |
| 712 EmitUint8(0x25); |
| 713 EmitXmmRegisterOperand(dst, src); |
| 714 } |
| 715 |
| 716 |
| 717 void Assembler::pcmpeqq(XmmRegister dst, XmmRegister src) { |
| 718 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 719 EmitUint8(0x66); |
| 720 EmitUint8(0x0F); |
| 721 EmitUint8(0x38); |
| 722 EmitUint8(0x29); |
| 723 EmitXmmRegisterOperand(dst, src); |
| 724 } |
| 725 |
| 726 |
| 677 void Assembler::fldl(const Address& src) { | 727 void Assembler::fldl(const Address& src) { |
| 678 AssemblerBuffer::EnsureCapacity ensured(&buffer_); | 728 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 679 EmitUint8(0xDD); | 729 EmitUint8(0xDD); |
| 680 EmitOperand(0, src); | 730 EmitOperand(0, src); |
| 681 } | 731 } |
| 682 | 732 |
| 683 | 733 |
| 684 void Assembler::fstpl(const Address& dst) { | 734 void Assembler::fstpl(const Address& dst) { |
| 685 AssemblerBuffer::EnsureCapacity ensured(&buffer_); | 735 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 686 EmitUint8(0xDD); | 736 EmitUint8(0xDD); |
| (...skipping 1154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1841 | 1891 |
| 1842 const char* Assembler::XmmRegisterName(XmmRegister reg) { | 1892 const char* Assembler::XmmRegisterName(XmmRegister reg) { |
| 1843 ASSERT((0 <= reg) && (reg < kNumberOfXmmRegisters)); | 1893 ASSERT((0 <= reg) && (reg < kNumberOfXmmRegisters)); |
| 1844 return xmm_reg_names[reg]; | 1894 return xmm_reg_names[reg]; |
| 1845 } | 1895 } |
| 1846 | 1896 |
| 1847 | 1897 |
| 1848 } // namespace dart | 1898 } // namespace dart |
| 1849 | 1899 |
| 1850 #endif // defined TARGET_ARCH_IA32 | 1900 #endif // defined TARGET_ARCH_IA32 |
| OLD | NEW |