Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(242)

Side by Side Diff: src/mips/assembler-mips.h

Issue 1195793002: MIPS: Implemented PC-relative instructions for R6. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/mips/assembler-mips.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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_
OLDNEW
« no previous file with comments | « no previous file | src/mips/assembler-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698