| 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 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 535 | 535 |
| 536 void movzx_b(Register dst, const Operand& src); | 536 void movzx_b(Register dst, const Operand& src); |
| 537 | 537 |
| 538 void movzx_w(Register dst, const Operand& src); | 538 void movzx_w(Register dst, const Operand& src); |
| 539 | 539 |
| 540 // Conditional moves | 540 // Conditional moves |
| 541 void cmov(Condition cc, Register dst, int32_t imm32); | 541 void cmov(Condition cc, Register dst, int32_t imm32); |
| 542 void cmov(Condition cc, Register dst, Handle<Object> handle); | 542 void cmov(Condition cc, Register dst, Handle<Object> handle); |
| 543 void cmov(Condition cc, Register dst, const Operand& src); | 543 void cmov(Condition cc, Register dst, const Operand& src); |
| 544 | 544 |
| 545 // Flag management. |
| 546 void cld(); |
| 547 |
| 545 // Repetitive string instructions. | 548 // Repetitive string instructions. |
| 546 void rep_movs(); | 549 void rep_movs(); |
| 550 void rep_stos(); |
| 547 | 551 |
| 548 // Exchange two registers | 552 // Exchange two registers |
| 549 void xchg(Register dst, Register src); | 553 void xchg(Register dst, Register src); |
| 550 | 554 |
| 551 // Arithmetics | 555 // Arithmetics |
| 552 void adc(Register dst, int32_t imm32); | 556 void adc(Register dst, int32_t imm32); |
| 553 void adc(Register dst, const Operand& src); | 557 void adc(Register dst, const Operand& src); |
| 554 | 558 |
| 555 void add(Register dst, const Operand& src); | 559 void add(Register dst, const Operand& src); |
| 556 void add(const Operand& dst, const Immediate& x); | 560 void add(const Operand& dst, const Immediate& x); |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 747 void sahf(); | 751 void sahf(); |
| 748 void setcc(Condition cc, Register reg); | 752 void setcc(Condition cc, Register reg); |
| 749 | 753 |
| 750 void cpuid(); | 754 void cpuid(); |
| 751 | 755 |
| 752 // SSE2 instructions | 756 // SSE2 instructions |
| 753 void cvttss2si(Register dst, const Operand& src); | 757 void cvttss2si(Register dst, const Operand& src); |
| 754 void cvttsd2si(Register dst, const Operand& src); | 758 void cvttsd2si(Register dst, const Operand& src); |
| 755 | 759 |
| 756 void cvtsi2sd(XMMRegister dst, const Operand& src); | 760 void cvtsi2sd(XMMRegister dst, const Operand& src); |
| 761 void cvtss2sd(XMMRegister dst, XMMRegister src); |
| 757 | 762 |
| 758 void addsd(XMMRegister dst, XMMRegister src); | 763 void addsd(XMMRegister dst, XMMRegister src); |
| 759 void subsd(XMMRegister dst, XMMRegister src); | 764 void subsd(XMMRegister dst, XMMRegister src); |
| 760 void mulsd(XMMRegister dst, XMMRegister src); | 765 void mulsd(XMMRegister dst, XMMRegister src); |
| 761 void divsd(XMMRegister dst, XMMRegister src); | 766 void divsd(XMMRegister dst, XMMRegister src); |
| 762 void xorpd(XMMRegister dst, XMMRegister src); | 767 void xorpd(XMMRegister dst, XMMRegister src); |
| 768 void sqrtsd(XMMRegister dst, XMMRegister src); |
| 763 | 769 |
| 764 void comisd(XMMRegister dst, XMMRegister src); | 770 void comisd(XMMRegister dst, XMMRegister src); |
| 771 void ucomisd(XMMRegister dst, XMMRegister src); |
| 765 | 772 |
| 766 void movdqa(XMMRegister dst, const Operand& src); | 773 void movdqa(XMMRegister dst, const Operand& src); |
| 767 void movdqa(const Operand& dst, XMMRegister src); | 774 void movdqa(const Operand& dst, XMMRegister src); |
| 768 void movdqu(XMMRegister dst, const Operand& src); | 775 void movdqu(XMMRegister dst, const Operand& src); |
| 769 void movdqu(const Operand& dst, XMMRegister src); | 776 void movdqu(const Operand& dst, XMMRegister src); |
| 770 | 777 |
| 771 // Use either movsd or movlpd. | 778 // Use either movsd or movlpd. |
| 772 void movdbl(XMMRegister dst, const Operand& src); | 779 void movdbl(XMMRegister dst, const Operand& src); |
| 773 void movdbl(const Operand& dst, XMMRegister src); | 780 void movdbl(const Operand& dst, XMMRegister src); |
| 774 | 781 |
| 782 void movd(XMMRegister dst, const Operand& src); |
| 783 void movsd(XMMRegister dst, XMMRegister src); |
| 784 |
| 785 void pxor(XMMRegister dst, XMMRegister src); |
| 786 void ptest(XMMRegister dst, XMMRegister src); |
| 787 |
| 775 // Debugging | 788 // Debugging |
| 776 void Print(); | 789 void Print(); |
| 777 | 790 |
| 778 // Check the code size generated from label to here. | 791 // Check the code size generated from label to here. |
| 779 int SizeOfCodeGeneratedSince(Label* l) { return pc_offset() - l->pos(); } | 792 int SizeOfCodeGeneratedSince(Label* l) { return pc_offset() - l->pos(); } |
| 780 | 793 |
| 781 // Mark address of the ExitJSFrame code. | 794 // Mark address of the ExitJSFrame code. |
| 782 void RecordJSReturn(); | 795 void RecordJSReturn(); |
| 783 | 796 |
| 784 // Record a comment relocation entry that can be used by a disassembler. | 797 // 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: | 927 private: |
| 915 Assembler* assembler_; | 928 Assembler* assembler_; |
| 916 #ifdef DEBUG | 929 #ifdef DEBUG |
| 917 int space_before_; | 930 int space_before_; |
| 918 #endif | 931 #endif |
| 919 }; | 932 }; |
| 920 | 933 |
| 921 } } // namespace v8::internal | 934 } } // namespace v8::internal |
| 922 | 935 |
| 923 #endif // V8_IA32_ASSEMBLER_IA32_H_ | 936 #endif // V8_IA32_ASSEMBLER_IA32_H_ |
| OLD | NEW |