| OLD | NEW |
| 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
| 2 // All Rights Reserved. | 2 // All Rights Reserved. |
| 3 // | 3 // |
| 4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
| 5 // modification, are permitted provided that the following conditions are | 5 // modification, are permitted provided that the following conditions are |
| 6 // met: | 6 // met: |
| 7 // | 7 // |
| 8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
| 9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
| 10 // | 10 // |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 const Register edx = { 2 }; | 86 const Register edx = { 2 }; |
| 87 const Register ebx = { 3 }; | 87 const Register ebx = { 3 }; |
| 88 const Register esp = { 4 }; | 88 const Register esp = { 4 }; |
| 89 const Register ebp = { 5 }; | 89 const Register ebp = { 5 }; |
| 90 const Register esi = { 6 }; | 90 const Register esi = { 6 }; |
| 91 const Register edi = { 7 }; | 91 const Register edi = { 7 }; |
| 92 const Register no_reg = { -1 }; | 92 const Register no_reg = { -1 }; |
| 93 | 93 |
| 94 | 94 |
| 95 struct XMMRegister { | 95 struct XMMRegister { |
| 96 bool is_valid() const { return 0 <= code_ && code_ < 2; } // currently | 96 bool is_valid() const { return 0 <= code_ && code_ < 8; } |
| 97 int code() const { | 97 int code() const { |
| 98 ASSERT(is_valid()); | 98 ASSERT(is_valid()); |
| 99 return code_; | 99 return code_; |
| 100 } | 100 } |
| 101 | 101 |
| 102 int code_; | 102 int code_; |
| 103 }; | 103 }; |
| 104 | 104 |
| 105 const XMMRegister xmm0 = { 0 }; | 105 const XMMRegister xmm0 = { 0 }; |
| 106 const XMMRegister xmm1 = { 1 }; | 106 const XMMRegister xmm1 = { 1 }; |
| (...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 613 void shld(Register dst, const Operand& src); | 613 void shld(Register dst, const Operand& src); |
| 614 | 614 |
| 615 void shl(Register dst, uint8_t imm8); | 615 void shl(Register dst, uint8_t imm8); |
| 616 void shl_cl(Register dst); | 616 void shl_cl(Register dst); |
| 617 | 617 |
| 618 void shrd(Register dst, const Operand& src); | 618 void shrd(Register dst, const Operand& src); |
| 619 | 619 |
| 620 void shr(Register dst, uint8_t imm8); | 620 void shr(Register dst, uint8_t imm8); |
| 621 void shr_cl(Register dst); | 621 void shr_cl(Register dst); |
| 622 | 622 |
| 623 void sqrt(XMMRegister dst, XMMRegister src); |
| 624 |
| 623 void subb(const Operand& dst, int8_t imm8); | 625 void subb(const Operand& dst, int8_t imm8); |
| 624 void subb(Register dst, const Operand& src); | 626 void subb(Register dst, const Operand& src); |
| 625 void sub(const Operand& dst, const Immediate& x); | 627 void sub(const Operand& dst, const Immediate& x); |
| 626 void sub(Register dst, const Operand& src); | 628 void sub(Register dst, const Operand& src); |
| 627 void sub(const Operand& dst, Register src); | 629 void sub(const Operand& dst, Register src); |
| 628 | 630 |
| 629 void test(Register reg, const Immediate& imm); | 631 void test(Register reg, const Immediate& imm); |
| 630 void test(Register reg, const Operand& op); | 632 void test(Register reg, const Operand& op); |
| 631 void test_b(Register reg, const Operand& op); | 633 void test_b(Register reg, const Operand& op); |
| 632 void test(const Operand& op, const Immediate& imm); | 634 void test(const Operand& op, const Immediate& imm); |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 747 void sahf(); | 749 void sahf(); |
| 748 void setcc(Condition cc, Register reg); | 750 void setcc(Condition cc, Register reg); |
| 749 | 751 |
| 750 void cpuid(); | 752 void cpuid(); |
| 751 | 753 |
| 752 // SSE2 instructions | 754 // SSE2 instructions |
| 753 void cvttss2si(Register dst, const Operand& src); | 755 void cvttss2si(Register dst, const Operand& src); |
| 754 void cvttsd2si(Register dst, const Operand& src); | 756 void cvttsd2si(Register dst, const Operand& src); |
| 755 | 757 |
| 756 void cvtsi2sd(XMMRegister dst, const Operand& src); | 758 void cvtsi2sd(XMMRegister dst, const Operand& src); |
| 759 void cvtss2sd(XMMRegister dst, XMMRegister src); |
| 757 | 760 |
| 758 void addsd(XMMRegister dst, XMMRegister src); | 761 void addsd(XMMRegister dst, XMMRegister src); |
| 759 void subsd(XMMRegister dst, XMMRegister src); | 762 void subsd(XMMRegister dst, XMMRegister src); |
| 760 void mulsd(XMMRegister dst, XMMRegister src); | 763 void mulsd(XMMRegister dst, XMMRegister src); |
| 761 void divsd(XMMRegister dst, XMMRegister src); | 764 void divsd(XMMRegister dst, XMMRegister src); |
| 762 void xorpd(XMMRegister dst, XMMRegister src); | 765 void xorpd(XMMRegister dst, XMMRegister src); |
| 763 | 766 |
| 764 void comisd(XMMRegister dst, XMMRegister src); | 767 void comisd(XMMRegister dst, XMMRegister src); |
| 765 | 768 |
| 766 void movdqa(XMMRegister dst, const Operand& src); | 769 void movdqa(XMMRegister dst, const Operand& src); |
| 767 void movdqa(const Operand& dst, XMMRegister src); | 770 void movdqa(const Operand& dst, XMMRegister src); |
| 768 void movdqu(XMMRegister dst, const Operand& src); | 771 void movdqu(XMMRegister dst, const Operand& src); |
| 769 void movdqu(const Operand& dst, XMMRegister src); | 772 void movdqu(const Operand& dst, XMMRegister src); |
| 770 | 773 |
| 771 // Use either movsd or movlpd. | 774 // Use either movsd or movlpd. |
| 772 void movdbl(XMMRegister dst, const Operand& src); | 775 void movdbl(XMMRegister dst, const Operand& src); |
| 773 void movdbl(const Operand& dst, XMMRegister src); | 776 void movdbl(const Operand& dst, XMMRegister src); |
| 774 | 777 |
| 778 void movd(XMMRegister dst, const Operand& src); |
| 779 void movsd(XMMRegister dst, XMMRegister src); |
| 780 |
| 781 void pxor(XMMRegister dst, XMMRegister src); |
| 782 void ptest(XMMRegister dst, XMMRegister src); |
| 783 |
| 775 // Debugging | 784 // Debugging |
| 776 void Print(); | 785 void Print(); |
| 777 | 786 |
| 778 // Check the code size generated from label to here. | 787 // Check the code size generated from label to here. |
| 779 int SizeOfCodeGeneratedSince(Label* l) { return pc_offset() - l->pos(); } | 788 int SizeOfCodeGeneratedSince(Label* l) { return pc_offset() - l->pos(); } |
| 780 | 789 |
| 781 // Mark address of the ExitJSFrame code. | 790 // Mark address of the ExitJSFrame code. |
| 782 void RecordJSReturn(); | 791 void RecordJSReturn(); |
| 783 | 792 |
| 784 // Record a comment relocation entry that can be used by a disassembler. | 793 // Record a comment relocation entry that can be used by a disassembler. |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 914 private: | 923 private: |
| 915 Assembler* assembler_; | 924 Assembler* assembler_; |
| 916 #ifdef DEBUG | 925 #ifdef DEBUG |
| 917 int space_before_; | 926 int space_before_; |
| 918 #endif | 927 #endif |
| 919 }; | 928 }; |
| 920 | 929 |
| 921 } } // namespace v8::internal | 930 } } // namespace v8::internal |
| 922 | 931 |
| 923 #endif // V8_IA32_ASSEMBLER_IA32_H_ | 932 #endif // V8_IA32_ASSEMBLER_IA32_H_ |
| OLD | NEW |