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 627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
638 sll(zero_reg, nop_rt_reg, type, true); | 638 sll(zero_reg, nop_rt_reg, type, true); |
639 } | 639 } |
640 | 640 |
641 | 641 |
642 // --------Branch-and-jump-instructions---------- | 642 // --------Branch-and-jump-instructions---------- |
643 // We don't use likely variant of instructions. | 643 // We don't use likely variant of instructions. |
644 void b(int16_t offset); | 644 void b(int16_t offset); |
645 void b(Label* L) { b(branch_offset(L, false)>>2); } | 645 void b(Label* L) { b(branch_offset(L, false)>>2); } |
646 void bal(int16_t offset); | 646 void bal(int16_t offset); |
647 void bal(Label* L) { bal(branch_offset(L, false)>>2); } | 647 void bal(Label* L) { bal(branch_offset(L, false)>>2); } |
| 648 void bc(int32_t offset); |
| 649 void bc(Label* L) { bc(branch_offset(L, false) >> 2); } |
| 650 void balc(int32_t offset); |
| 651 void balc(Label* L) { balc(branch_offset(L, false) >> 2); } |
648 | 652 |
649 void beq(Register rs, Register rt, int16_t offset); | 653 void beq(Register rs, Register rt, int16_t offset); |
650 void beq(Register rs, Register rt, Label* L) { | 654 void beq(Register rs, Register rt, Label* L) { |
651 beq(rs, rt, branch_offset(L, false) >> 2); | 655 beq(rs, rt, branch_offset(L, false) >> 2); |
652 } | 656 } |
653 void bgez(Register rs, int16_t offset); | 657 void bgez(Register rs, int16_t offset); |
654 void bgezc(Register rt, int16_t offset); | 658 void bgezc(Register rt, int16_t offset); |
655 void bgezc(Register rt, Label* L) { | 659 void bgezc(Register rt, Label* L) { |
656 bgezc(rt, branch_offset_compact(L, false)>>2); | 660 bgezc(rt, branch_offset_compact(L, false)>>2); |
657 } | 661 } |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
746 } | 750 } |
747 | 751 |
748 // Never use the int16_t b(l)cond version with a branch offset | 752 // Never use the int16_t b(l)cond version with a branch offset |
749 // instead of using the Label* version. | 753 // instead of using the Label* version. |
750 | 754 |
751 // Jump targets must be in the current 256 MB-aligned region. i.e. 28 bits. | 755 // Jump targets must be in the current 256 MB-aligned region. i.e. 28 bits. |
752 void j(int32_t target); | 756 void j(int32_t target); |
753 void jal(int32_t target); | 757 void jal(int32_t target); |
754 void jalr(Register rs, Register rd = ra); | 758 void jalr(Register rs, Register rd = ra); |
755 void jr(Register target); | 759 void jr(Register target); |
756 void j_or_jr(int32_t target, Register rs); | 760 void jic(Register rt, int16_t offset); |
757 void jal_or_jalr(int32_t target, Register rs); | 761 void jialc(Register rt, int16_t offset); |
758 | 762 |
759 | 763 |
760 // -------Data-processing-instructions--------- | 764 // -------Data-processing-instructions--------- |
761 | 765 |
762 // Arithmetic. | 766 // Arithmetic. |
763 void addu(Register rd, Register rs, Register rt); | 767 void addu(Register rd, Register rs, Register rt); |
764 void subu(Register rd, Register rs, Register rt); | 768 void subu(Register rd, Register rs, Register rt); |
765 void mult(Register rs, Register rt); | 769 void mult(Register rs, Register rt); |
766 void multu(Register rs, Register rt); | 770 void multu(Register rs, Register rt); |
767 void div(Register rs, Register rt); | 771 void div(Register rs, Register rt); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
812 void lw(Register rd, const MemOperand& rs); | 816 void lw(Register rd, const MemOperand& rs); |
813 void lwl(Register rd, const MemOperand& rs); | 817 void lwl(Register rd, const MemOperand& rs); |
814 void lwr(Register rd, const MemOperand& rs); | 818 void lwr(Register rd, const MemOperand& rs); |
815 void sb(Register rd, const MemOperand& rs); | 819 void sb(Register rd, const MemOperand& rs); |
816 void sh(Register rd, const MemOperand& rs); | 820 void sh(Register rd, const MemOperand& rs); |
817 void sw(Register rd, const MemOperand& rs); | 821 void sw(Register rd, const MemOperand& rs); |
818 void swl(Register rd, const MemOperand& rs); | 822 void swl(Register rd, const MemOperand& rs); |
819 void swr(Register rd, const MemOperand& rs); | 823 void swr(Register rd, const MemOperand& rs); |
820 | 824 |
821 | 825 |
| 826 // ---------PC-Relative-instructions----------- |
| 827 |
| 828 void addiupc(Register rs, int32_t imm19); |
| 829 void lwpc(Register rs, int32_t offset19); |
| 830 void auipc(Register rs, int16_t imm16); |
| 831 void aluipc(Register rs, int16_t imm16); |
| 832 |
| 833 |
822 // ----------------Prefetch-------------------- | 834 // ----------------Prefetch-------------------- |
823 | 835 |
824 void pref(int32_t hint, const MemOperand& rs); | 836 void pref(int32_t hint, const MemOperand& rs); |
825 | 837 |
826 | 838 |
827 // -------------Misc-instructions-------------- | 839 // -------------Misc-instructions-------------- |
828 | 840 |
829 // Break / Trap instructions. | 841 // Break / Trap instructions. |
830 void break_(uint32_t code, bool break_as_stop = false); | 842 void break_(uint32_t code, bool break_as_stop = false); |
831 void stop(const char* msg, uint32_t code = kMaxStopCode); | 843 void stop(const char* msg, uint32_t code = kMaxStopCode); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
872 void movt_d(FPURegister fd, FPURegister fs, uint16_t cc); | 884 void movt_d(FPURegister fd, FPURegister fs, uint16_t cc); |
873 void movf_s(FPURegister fd, FPURegister fs, uint16_t cc); | 885 void movf_s(FPURegister fd, FPURegister fs, uint16_t cc); |
874 void movf_d(FPURegister fd, FPURegister fs, uint16_t cc); | 886 void movf_d(FPURegister fd, FPURegister fs, uint16_t cc); |
875 void movn_s(FPURegister fd, FPURegister fs, Register rt); | 887 void movn_s(FPURegister fd, FPURegister fs, Register rt); |
876 void movn_d(FPURegister fd, FPURegister fs, Register rt); | 888 void movn_d(FPURegister fd, FPURegister fs, Register rt); |
877 // Bit twiddling. | 889 // Bit twiddling. |
878 void clz(Register rd, Register rs); | 890 void clz(Register rd, Register rs); |
879 void ins_(Register rt, Register rs, uint16_t pos, uint16_t size); | 891 void ins_(Register rt, Register rs, uint16_t pos, uint16_t size); |
880 void ext_(Register rt, Register rs, uint16_t pos, uint16_t size); | 892 void ext_(Register rt, Register rs, uint16_t pos, uint16_t size); |
881 void bitswap(Register rd, Register rt); | 893 void bitswap(Register rd, Register rt); |
| 894 void align(Register rd, Register rs, Register rt, uint8_t bp); |
882 | 895 |
883 // --------Coprocessor-instructions---------------- | 896 // --------Coprocessor-instructions---------------- |
884 | 897 |
885 // Load, store, and move. | 898 // Load, store, and move. |
886 void lwc1(FPURegister fd, const MemOperand& src); | 899 void lwc1(FPURegister fd, const MemOperand& src); |
887 void ldc1(FPURegister fd, const MemOperand& src); | 900 void ldc1(FPURegister fd, const MemOperand& src); |
888 | 901 |
889 void swc1(FPURegister fs, const MemOperand& dst); | 902 void swc1(FPURegister fs, const MemOperand& dst); |
890 void sdc1(FPURegister fs, const MemOperand& dst); | 903 void sdc1(FPURegister fs, const MemOperand& dst); |
891 | 904 |
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1340 Register rt, | 1353 Register rt, |
1341 int32_t j); | 1354 int32_t j); |
1342 void GenInstrImmediate(Opcode opcode, | 1355 void GenInstrImmediate(Opcode opcode, |
1343 Register rs, | 1356 Register rs, |
1344 SecondaryField SF, | 1357 SecondaryField SF, |
1345 int32_t j); | 1358 int32_t j); |
1346 void GenInstrImmediate(Opcode opcode, | 1359 void GenInstrImmediate(Opcode opcode, |
1347 Register r1, | 1360 Register r1, |
1348 FPURegister r2, | 1361 FPURegister r2, |
1349 int32_t j); | 1362 int32_t j); |
| 1363 void GenInstrImmediate(Opcode opcode, Register rs, int32_t j); |
| 1364 void GenInstrImmediate(Opcode opcode, int32_t offset26); |
1350 | 1365 |
1351 | 1366 |
1352 void GenInstrJump(Opcode opcode, | 1367 void GenInstrJump(Opcode opcode, |
1353 uint32_t address); | 1368 uint32_t address); |
1354 | 1369 |
1355 // Helpers. | 1370 // Helpers. |
1356 void LoadRegPlusOffsetToAt(const MemOperand& src); | 1371 void LoadRegPlusOffsetToAt(const MemOperand& src); |
1357 | 1372 |
1358 // Labels. | 1373 // Labels. |
1359 void print(Label* L); | 1374 void print(Label* L); |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1444 class EnsureSpace BASE_EMBEDDED { | 1459 class EnsureSpace BASE_EMBEDDED { |
1445 public: | 1460 public: |
1446 explicit EnsureSpace(Assembler* assembler) { | 1461 explicit EnsureSpace(Assembler* assembler) { |
1447 assembler->CheckBuffer(); | 1462 assembler->CheckBuffer(); |
1448 } | 1463 } |
1449 }; | 1464 }; |
1450 | 1465 |
1451 } } // namespace v8::internal | 1466 } } // namespace v8::internal |
1452 | 1467 |
1453 #endif // V8_ARM_ASSEMBLER_MIPS_H_ | 1468 #endif // V8_ARM_ASSEMBLER_MIPS_H_ |
OLD | NEW |