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 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 // cp is assumed to be a callee saved register. | 321 // cp is assumed to be a callee saved register. |
322 // Defined using #define instead of "static const Register&" because Clang | 322 // Defined using #define instead of "static const Register&" because Clang |
323 // complains otherwise when a compilation unit that includes this header | 323 // complains otherwise when a compilation unit that includes this header |
324 // doesn't use the variables. | 324 // doesn't use the variables. |
325 #define kRootRegister s6 | 325 #define kRootRegister s6 |
326 #define cp s7 | 326 #define cp s7 |
327 #define kLithiumScratchReg s3 | 327 #define kLithiumScratchReg s3 |
328 #define kLithiumScratchReg2 s4 | 328 #define kLithiumScratchReg2 s4 |
329 #define kLithiumScratchDouble f30 | 329 #define kLithiumScratchDouble f30 |
330 #define kDoubleRegZero f28 | 330 #define kDoubleRegZero f28 |
| 331 // Used on mips32r6 for compare operations. |
| 332 #define kDoubleCompareReg f31 |
331 | 333 |
332 // FPU (coprocessor 1) control registers. | 334 // FPU (coprocessor 1) control registers. |
333 // Currently only FCSR (#31) is implemented. | 335 // Currently only FCSR (#31) is implemented. |
334 struct FPUControlRegister { | 336 struct FPUControlRegister { |
335 bool is_valid() const { return code_ == kFCSRRegister; } | 337 bool is_valid() const { return code_ == kFCSRRegister; } |
336 bool is(FPUControlRegister creg) const { return code_ == creg.code_; } | 338 bool is(FPUControlRegister creg) const { return code_ == creg.code_; } |
337 int code() const { | 339 int code() const { |
338 DCHECK(is_valid()); | 340 DCHECK(is_valid()); |
339 return code_; | 341 return code_; |
340 } | 342 } |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
458 // but it may be bound only once. | 460 // but it may be bound only once. |
459 void bind(Label* L); // Binds an unbound label L to current code position. | 461 void bind(Label* L); // Binds an unbound label L to current code position. |
460 // Determines if Label is bound and near enough so that branch instruction | 462 // Determines if Label is bound and near enough so that branch instruction |
461 // can be used to reach it, instead of jump instruction. | 463 // can be used to reach it, instead of jump instruction. |
462 bool is_near(Label* L); | 464 bool is_near(Label* L); |
463 | 465 |
464 // Returns the branch offset to the given label from the current code | 466 // Returns the branch offset to the given label from the current code |
465 // position. Links the label to the current position if it is still unbound. | 467 // position. Links the label to the current position if it is still unbound. |
466 // Manages the jump elimination optimization if the second parameter is true. | 468 // Manages the jump elimination optimization if the second parameter is true. |
467 int32_t branch_offset(Label* L, bool jump_elimination_allowed); | 469 int32_t branch_offset(Label* L, bool jump_elimination_allowed); |
| 470 int32_t branch_offset_compact(Label* L, bool jump_elimination_allowed); |
| 471 int32_t branch_offset21(Label* L, bool jump_elimination_allowed); |
| 472 int32_t branch_offset21_compact(Label* L, bool jump_elimination_allowed); |
468 int32_t shifted_branch_offset(Label* L, bool jump_elimination_allowed) { | 473 int32_t shifted_branch_offset(Label* L, bool jump_elimination_allowed) { |
469 int32_t o = branch_offset(L, jump_elimination_allowed); | 474 int32_t o = branch_offset(L, jump_elimination_allowed); |
470 DCHECK((o & 3) == 0); // Assert the offset is aligned. | 475 DCHECK((o & 3) == 0); // Assert the offset is aligned. |
471 return o >> 2; | 476 return o >> 2; |
472 } | 477 } |
| 478 int32_t shifted_branch_offset_compact(Label* L, |
| 479 bool jump_elimination_allowed) { |
| 480 int32_t o = branch_offset_compact(L, jump_elimination_allowed); |
| 481 DCHECK((o & 3) == 0); // Assert the offset is aligned. |
| 482 return o >> 2; |
| 483 } |
473 uint32_t jump_address(Label* L); | 484 uint32_t jump_address(Label* L); |
474 | 485 |
475 // Puts a labels target address at the given position. | 486 // Puts a labels target address at the given position. |
476 // The high 8 bits are set to zero. | 487 // The high 8 bits are set to zero. |
477 void label_at_put(Label* L, int at_offset); | 488 void label_at_put(Label* L, int at_offset); |
478 | 489 |
479 // Read/Modify the code target address in the branch/call instruction at pc. | 490 // Read/Modify the code target address in the branch/call instruction at pc. |
480 static Address target_address_at(Address pc); | 491 static Address target_address_at(Address pc); |
481 static void set_target_address_at(Address pc, | 492 static void set_target_address_at(Address pc, |
482 Address target, | 493 Address target, |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
620 void b(int16_t offset); | 631 void b(int16_t offset); |
621 void b(Label* L) { b(branch_offset(L, false)>>2); } | 632 void b(Label* L) { b(branch_offset(L, false)>>2); } |
622 void bal(int16_t offset); | 633 void bal(int16_t offset); |
623 void bal(Label* L) { bal(branch_offset(L, false)>>2); } | 634 void bal(Label* L) { bal(branch_offset(L, false)>>2); } |
624 | 635 |
625 void beq(Register rs, Register rt, int16_t offset); | 636 void beq(Register rs, Register rt, int16_t offset); |
626 void beq(Register rs, Register rt, Label* L) { | 637 void beq(Register rs, Register rt, Label* L) { |
627 beq(rs, rt, branch_offset(L, false) >> 2); | 638 beq(rs, rt, branch_offset(L, false) >> 2); |
628 } | 639 } |
629 void bgez(Register rs, int16_t offset); | 640 void bgez(Register rs, int16_t offset); |
| 641 void bgezc(Register rt, int16_t offset); |
| 642 void bgezc(Register rt, Label* L) { |
| 643 bgezc(rt, branch_offset_compact(L, false)>>2); |
| 644 } |
| 645 void bgeuc(Register rs, Register rt, int16_t offset); |
| 646 void bgeuc(Register rs, Register rt, Label* L) { |
| 647 bgeuc(rs, rt, branch_offset_compact(L, false)>>2); |
| 648 } |
| 649 void bgec(Register rs, Register rt, int16_t offset); |
| 650 void bgec(Register rs, Register rt, Label* L) { |
| 651 bgec(rs, rt, branch_offset_compact(L, false)>>2); |
| 652 } |
630 void bgezal(Register rs, int16_t offset); | 653 void bgezal(Register rs, int16_t offset); |
| 654 void bgezalc(Register rt, int16_t offset); |
| 655 void bgezalc(Register rt, Label* L) { |
| 656 bgezalc(rt, branch_offset_compact(L, false)>>2); |
| 657 } |
| 658 void bgezall(Register rs, int16_t offset); |
| 659 void bgezall(Register rs, Label* L) { |
| 660 bgezall(rs, branch_offset(L, false)>>2); |
| 661 } |
631 void bgtz(Register rs, int16_t offset); | 662 void bgtz(Register rs, int16_t offset); |
| 663 void bgtzc(Register rt, int16_t offset); |
| 664 void bgtzc(Register rt, Label* L) { |
| 665 bgtzc(rt, branch_offset_compact(L, false)>>2); |
| 666 } |
632 void blez(Register rs, int16_t offset); | 667 void blez(Register rs, int16_t offset); |
| 668 void blezc(Register rt, int16_t offset); |
| 669 void blezc(Register rt, Label* L) { |
| 670 blezc(rt, branch_offset_compact(L, false)>>2); |
| 671 } |
633 void bltz(Register rs, int16_t offset); | 672 void bltz(Register rs, int16_t offset); |
| 673 void bltzc(Register rt, int16_t offset); |
| 674 void bltzc(Register rt, Label* L) { |
| 675 bltzc(rt, branch_offset_compact(L, false)>>2); |
| 676 } |
| 677 void bltuc(Register rs, Register rt, int16_t offset); |
| 678 void bltuc(Register rs, Register rt, Label* L) { |
| 679 bltuc(rs, rt, branch_offset_compact(L, false)>>2); |
| 680 } |
| 681 void bltc(Register rs, Register rt, int16_t offset); |
| 682 void bltc(Register rs, Register rt, Label* L) { |
| 683 bltc(rs, rt, branch_offset_compact(L, false)>>2); |
| 684 } |
634 void bltzal(Register rs, int16_t offset); | 685 void bltzal(Register rs, int16_t offset); |
| 686 void blezalc(Register rt, int16_t offset); |
| 687 void blezalc(Register rt, Label* L) { |
| 688 blezalc(rt, branch_offset_compact(L, false)>>2); |
| 689 } |
| 690 void bltzalc(Register rt, int16_t offset); |
| 691 void bltzalc(Register rt, Label* L) { |
| 692 bltzalc(rt, branch_offset_compact(L, false)>>2); |
| 693 } |
| 694 void bgtzalc(Register rt, int16_t offset); |
| 695 void bgtzalc(Register rt, Label* L) { |
| 696 bgtzalc(rt, branch_offset_compact(L, false)>>2); |
| 697 } |
| 698 void beqzalc(Register rt, int16_t offset); |
| 699 void beqzalc(Register rt, Label* L) { |
| 700 beqzalc(rt, branch_offset_compact(L, false)>>2); |
| 701 } |
| 702 void beqc(Register rs, Register rt, int16_t offset); |
| 703 void beqc(Register rs, Register rt, Label* L) { |
| 704 beqc(rs, rt, branch_offset_compact(L, false)>>2); |
| 705 } |
| 706 void beqzc(Register rs, int32_t offset); |
| 707 void beqzc(Register rs, Label* L) { |
| 708 beqzc(rs, branch_offset21_compact(L, false)>>2); |
| 709 } |
| 710 void bnezalc(Register rt, int16_t offset); |
| 711 void bnezalc(Register rt, Label* L) { |
| 712 bnezalc(rt, branch_offset_compact(L, false)>>2); |
| 713 } |
| 714 void bnec(Register rs, Register rt, int16_t offset); |
| 715 void bnec(Register rs, Register rt, Label* L) { |
| 716 bnec(rs, rt, branch_offset_compact(L, false)>>2); |
| 717 } |
| 718 void bnezc(Register rt, int32_t offset); |
| 719 void bnezc(Register rt, Label* L) { |
| 720 bnezc(rt, branch_offset21_compact(L, false)>>2); |
| 721 } |
635 void bne(Register rs, Register rt, int16_t offset); | 722 void bne(Register rs, Register rt, int16_t offset); |
636 void bne(Register rs, Register rt, Label* L) { | 723 void bne(Register rs, Register rt, Label* L) { |
637 bne(rs, rt, branch_offset(L, false)>>2); | 724 bne(rs, rt, branch_offset(L, false)>>2); |
638 } | 725 } |
| 726 void bovc(Register rs, Register rt, int16_t offset); |
| 727 void bovc(Register rs, Register rt, Label* L) { |
| 728 bovc(rs, rt, branch_offset_compact(L, false)>>2); |
| 729 } |
| 730 void bnvc(Register rs, Register rt, int16_t offset); |
| 731 void bnvc(Register rs, Register rt, Label* L) { |
| 732 bnvc(rs, rt, branch_offset_compact(L, false)>>2); |
| 733 } |
639 | 734 |
640 // Never use the int16_t b(l)cond version with a branch offset | 735 // Never use the int16_t b(l)cond version with a branch offset |
641 // instead of using the Label* version. | 736 // instead of using the Label* version. |
642 | 737 |
643 // Jump targets must be in the current 256 MB-aligned region. i.e. 28 bits. | 738 // Jump targets must be in the current 256 MB-aligned region. i.e. 28 bits. |
644 void j(int32_t target); | 739 void j(int32_t target); |
645 void jal(int32_t target); | 740 void jal(int32_t target); |
646 void jalr(Register rs, Register rd = ra); | 741 void jalr(Register rs, Register rd = ra); |
647 void jr(Register target); | 742 void jr(Register target); |
648 void j_or_jr(int32_t target, Register rs); | 743 void j_or_jr(int32_t target, Register rs); |
649 void jal_or_jalr(int32_t target, Register rs); | 744 void jal_or_jalr(int32_t target, Register rs); |
650 | 745 |
651 | 746 |
652 // -------Data-processing-instructions--------- | 747 // -------Data-processing-instructions--------- |
653 | 748 |
654 // Arithmetic. | 749 // Arithmetic. |
655 void addu(Register rd, Register rs, Register rt); | 750 void addu(Register rd, Register rs, Register rt); |
656 void subu(Register rd, Register rs, Register rt); | 751 void subu(Register rd, Register rs, Register rt); |
657 void mult(Register rs, Register rt); | 752 void mult(Register rs, Register rt); |
658 void multu(Register rs, Register rt); | 753 void multu(Register rs, Register rt); |
659 void div(Register rs, Register rt); | 754 void div(Register rs, Register rt); |
660 void divu(Register rs, Register rt); | 755 void divu(Register rs, Register rt); |
| 756 void div(Register rd, Register rs, Register rt); |
| 757 void divu(Register rd, Register rs, Register rt); |
| 758 void mod(Register rd, Register rs, Register rt); |
| 759 void modu(Register rd, Register rs, Register rt); |
661 void mul(Register rd, Register rs, Register rt); | 760 void mul(Register rd, Register rs, Register rt); |
| 761 void muh(Register rd, Register rs, Register rt); |
| 762 void mulu(Register rd, Register rs, Register rt); |
| 763 void muhu(Register rd, Register rs, Register rt); |
662 | 764 |
663 void addiu(Register rd, Register rs, int32_t j); | 765 void addiu(Register rd, Register rs, int32_t j); |
664 | 766 |
665 // Logical. | 767 // Logical. |
666 void and_(Register rd, Register rs, Register rt); | 768 void and_(Register rd, Register rs, Register rt); |
667 void or_(Register rd, Register rs, Register rt); | 769 void or_(Register rd, Register rs, Register rt); |
668 void xor_(Register rd, Register rs, Register rt); | 770 void xor_(Register rd, Register rs, Register rt); |
669 void nor(Register rd, Register rs, Register rt); | 771 void nor(Register rd, Register rs, Register rt); |
670 | 772 |
671 void andi(Register rd, Register rs, int32_t j); | 773 void andi(Register rd, Register rs, int32_t j); |
672 void ori(Register rd, Register rs, int32_t j); | 774 void ori(Register rd, Register rs, int32_t j); |
673 void xori(Register rd, Register rs, int32_t j); | 775 void xori(Register rd, Register rs, int32_t j); |
674 void lui(Register rd, int32_t j); | 776 void lui(Register rd, int32_t j); |
| 777 void aui(Register rs, Register rt, int32_t j); |
675 | 778 |
676 // Shifts. | 779 // Shifts. |
677 // Please note: sll(zero_reg, zero_reg, x) instructions are reserved as nop | 780 // Please note: sll(zero_reg, zero_reg, x) instructions are reserved as nop |
678 // and may cause problems in normal code. coming_from_nop makes sure this | 781 // and may cause problems in normal code. coming_from_nop makes sure this |
679 // doesn't happen. | 782 // doesn't happen. |
680 void sll(Register rd, Register rt, uint16_t sa, bool coming_from_nop = false); | 783 void sll(Register rd, Register rt, uint16_t sa, bool coming_from_nop = false); |
681 void sllv(Register rd, Register rt, Register rs); | 784 void sllv(Register rd, Register rt, Register rs); |
682 void srl(Register rd, Register rt, uint16_t sa); | 785 void srl(Register rd, Register rt, uint16_t sa); |
683 void srlv(Register rd, Register rt, Register rs); | 786 void srlv(Register rd, Register rt, Register rs); |
684 void sra(Register rt, Register rd, uint16_t sa); | 787 void sra(Register rt, Register rd, uint16_t sa); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
729 void sltu(Register rd, Register rs, Register rt); | 832 void sltu(Register rd, Register rs, Register rt); |
730 void slti(Register rd, Register rs, int32_t j); | 833 void slti(Register rd, Register rs, int32_t j); |
731 void sltiu(Register rd, Register rs, int32_t j); | 834 void sltiu(Register rd, Register rs, int32_t j); |
732 | 835 |
733 // Conditional move. | 836 // Conditional move. |
734 void movz(Register rd, Register rs, Register rt); | 837 void movz(Register rd, Register rs, Register rt); |
735 void movn(Register rd, Register rs, Register rt); | 838 void movn(Register rd, Register rs, Register rt); |
736 void movt(Register rd, Register rs, uint16_t cc = 0); | 839 void movt(Register rd, Register rs, uint16_t cc = 0); |
737 void movf(Register rd, Register rs, uint16_t cc = 0); | 840 void movf(Register rd, Register rs, uint16_t cc = 0); |
738 | 841 |
| 842 void sel(SecondaryField fmt, FPURegister fd, FPURegister ft, |
| 843 FPURegister fs, uint8_t sel); |
| 844 void seleqz(Register rs, Register rt, Register rd); |
| 845 void seleqz(SecondaryField fmt, FPURegister fd, FPURegister ft, |
| 846 FPURegister fs); |
| 847 void selnez(Register rs, Register rt, Register rd); |
| 848 void selnez(SecondaryField fmt, FPURegister fd, FPURegister ft, |
| 849 FPURegister fs); |
| 850 |
739 // Bit twiddling. | 851 // Bit twiddling. |
740 void clz(Register rd, Register rs); | 852 void clz(Register rd, Register rs); |
741 void ins_(Register rt, Register rs, uint16_t pos, uint16_t size); | 853 void ins_(Register rt, Register rs, uint16_t pos, uint16_t size); |
742 void ext_(Register rt, Register rs, uint16_t pos, uint16_t size); | 854 void ext_(Register rt, Register rs, uint16_t pos, uint16_t size); |
743 | 855 |
744 // --------Coprocessor-instructions---------------- | 856 // --------Coprocessor-instructions---------------- |
745 | 857 |
746 // Load, store, and move. | 858 // Load, store, and move. |
747 void lwc1(FPURegister fd, const MemOperand& src); | 859 void lwc1(FPURegister fd, const MemOperand& src); |
748 void ldc1(FPURegister fd, const MemOperand& src); | 860 void ldc1(FPURegister fd, const MemOperand& src); |
749 | 861 |
750 void swc1(FPURegister fs, const MemOperand& dst); | 862 void swc1(FPURegister fs, const MemOperand& dst); |
751 void sdc1(FPURegister fs, const MemOperand& dst); | 863 void sdc1(FPURegister fs, const MemOperand& dst); |
752 | 864 |
753 void mtc1(Register rt, FPURegister fs); | 865 void mtc1(Register rt, FPURegister fs); |
| 866 void mthc1(Register rt, FPURegister fs); |
| 867 |
754 void mfc1(Register rt, FPURegister fs); | 868 void mfc1(Register rt, FPURegister fs); |
| 869 void mfhc1(Register rt, FPURegister fs); |
755 | 870 |
756 void ctc1(Register rt, FPUControlRegister fs); | 871 void ctc1(Register rt, FPUControlRegister fs); |
757 void cfc1(Register rt, FPUControlRegister fs); | 872 void cfc1(Register rt, FPUControlRegister fs); |
758 | 873 |
759 // Arithmetic. | 874 // Arithmetic. |
760 void add_d(FPURegister fd, FPURegister fs, FPURegister ft); | 875 void add_d(FPURegister fd, FPURegister fs, FPURegister ft); |
761 void sub_d(FPURegister fd, FPURegister fs, FPURegister ft); | 876 void sub_d(FPURegister fd, FPURegister fs, FPURegister ft); |
762 void mul_d(FPURegister fd, FPURegister fs, FPURegister ft); | 877 void mul_d(FPURegister fd, FPURegister fs, FPURegister ft); |
763 void madd_d(FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft); | 878 void madd_d(FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft); |
764 void div_d(FPURegister fd, FPURegister fs, FPURegister ft); | 879 void div_d(FPURegister fd, FPURegister fs, FPURegister ft); |
(...skipping 18 matching lines...) Expand all Loading... |
783 void cvt_l_d(FPURegister fd, FPURegister fs); | 898 void cvt_l_d(FPURegister fd, FPURegister fs); |
784 void trunc_l_s(FPURegister fd, FPURegister fs); | 899 void trunc_l_s(FPURegister fd, FPURegister fs); |
785 void trunc_l_d(FPURegister fd, FPURegister fs); | 900 void trunc_l_d(FPURegister fd, FPURegister fs); |
786 void round_l_s(FPURegister fd, FPURegister fs); | 901 void round_l_s(FPURegister fd, FPURegister fs); |
787 void round_l_d(FPURegister fd, FPURegister fs); | 902 void round_l_d(FPURegister fd, FPURegister fs); |
788 void floor_l_s(FPURegister fd, FPURegister fs); | 903 void floor_l_s(FPURegister fd, FPURegister fs); |
789 void floor_l_d(FPURegister fd, FPURegister fs); | 904 void floor_l_d(FPURegister fd, FPURegister fs); |
790 void ceil_l_s(FPURegister fd, FPURegister fs); | 905 void ceil_l_s(FPURegister fd, FPURegister fs); |
791 void ceil_l_d(FPURegister fd, FPURegister fs); | 906 void ceil_l_d(FPURegister fd, FPURegister fs); |
792 | 907 |
| 908 void min(SecondaryField fmt, FPURegister fd, FPURegister ft, FPURegister fs); |
| 909 void mina(SecondaryField fmt, FPURegister fd, FPURegister ft, FPURegister fs); |
| 910 void max(SecondaryField fmt, FPURegister fd, FPURegister ft, FPURegister fs); |
| 911 void maxa(SecondaryField fmt, FPURegister fd, FPURegister ft, FPURegister fs); |
| 912 |
793 void cvt_s_w(FPURegister fd, FPURegister fs); | 913 void cvt_s_w(FPURegister fd, FPURegister fs); |
794 void cvt_s_l(FPURegister fd, FPURegister fs); | 914 void cvt_s_l(FPURegister fd, FPURegister fs); |
795 void cvt_s_d(FPURegister fd, FPURegister fs); | 915 void cvt_s_d(FPURegister fd, FPURegister fs); |
796 | 916 |
797 void cvt_d_w(FPURegister fd, FPURegister fs); | 917 void cvt_d_w(FPURegister fd, FPURegister fs); |
798 void cvt_d_l(FPURegister fd, FPURegister fs); | 918 void cvt_d_l(FPURegister fd, FPURegister fs); |
799 void cvt_d_s(FPURegister fd, FPURegister fs); | 919 void cvt_d_s(FPURegister fd, FPURegister fs); |
800 | 920 |
801 // Conditions and branches. | 921 // Conditions and branches for MIPSr6. |
| 922 void cmp(FPUCondition cond, SecondaryField fmt, |
| 923 FPURegister fd, FPURegister ft, FPURegister fs); |
| 924 |
| 925 void bc1eqz(int16_t offset, FPURegister ft); |
| 926 void bc1eqz(Label* L, FPURegister ft) { |
| 927 bc1eqz(branch_offset(L, false)>>2, ft); |
| 928 } |
| 929 void bc1nez(int16_t offset, FPURegister ft); |
| 930 void bc1nez(Label* L, FPURegister ft) { |
| 931 bc1nez(branch_offset(L, false)>>2, ft); |
| 932 } |
| 933 |
| 934 // Conditions and branches for non MIPSr6. |
802 void c(FPUCondition cond, SecondaryField fmt, | 935 void c(FPUCondition cond, SecondaryField fmt, |
803 FPURegister ft, FPURegister fs, uint16_t cc = 0); | 936 FPURegister ft, FPURegister fs, uint16_t cc = 0); |
804 | 937 |
805 void bc1f(int16_t offset, uint16_t cc = 0); | 938 void bc1f(int16_t offset, uint16_t cc = 0); |
806 void bc1f(Label* L, uint16_t cc = 0) { bc1f(branch_offset(L, false)>>2, cc); } | 939 void bc1f(Label* L, uint16_t cc = 0) { bc1f(branch_offset(L, false)>>2, cc); } |
807 void bc1t(int16_t offset, uint16_t cc = 0); | 940 void bc1t(int16_t offset, uint16_t cc = 0); |
808 void bc1t(Label* L, uint16_t cc = 0) { bc1t(branch_offset(L, false)>>2, cc); } | 941 void bc1t(Label* L, uint16_t cc = 0) { bc1t(branch_offset(L, false)>>2, cc); } |
809 void fcmp(FPURegister src1, const double src2, FPUCondition cond); | 942 void fcmp(FPURegister src1, const double src2, FPUCondition cond); |
810 | 943 |
811 // Check the code size generated from label to here. | 944 // Check the code size generated from label to here. |
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1237 class EnsureSpace BASE_EMBEDDED { | 1370 class EnsureSpace BASE_EMBEDDED { |
1238 public: | 1371 public: |
1239 explicit EnsureSpace(Assembler* assembler) { | 1372 explicit EnsureSpace(Assembler* assembler) { |
1240 assembler->CheckBuffer(); | 1373 assembler->CheckBuffer(); |
1241 } | 1374 } |
1242 }; | 1375 }; |
1243 | 1376 |
1244 } } // namespace v8::internal | 1377 } } // namespace v8::internal |
1245 | 1378 |
1246 #endif // V8_ARM_ASSEMBLER_MIPS_H_ | 1379 #endif // V8_ARM_ASSEMBLER_MIPS_H_ |
OLD | NEW |