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

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

Issue 453043002: MIPS: Add support for arch. revision 6 to mips32 port. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Addressed comments. Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « src/mips/lithium-mips.cc ('k') | src/mips/macro-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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ 5 #ifndef V8_MIPS_MACRO_ASSEMBLER_MIPS_H_
6 #define V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ 6 #define V8_MIPS_MACRO_ASSEMBLER_MIPS_H_
7 7
8 #include "src/assembler.h" 8 #include "src/assembler.h"
9 #include "src/globals.h" 9 #include "src/globals.h"
10 #include "src/mips/assembler-mips.h" 10 #include "src/mips/assembler-mips.h"
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 } 227 }
228 228
229 inline void Move(FPURegister dst, FPURegister src) { 229 inline void Move(FPURegister dst, FPURegister src) {
230 if (!dst.is(src)) { 230 if (!dst.is(src)) {
231 mov_d(dst, src); 231 mov_d(dst, src);
232 } 232 }
233 } 233 }
234 234
235 inline void Move(Register dst_low, Register dst_high, FPURegister src) { 235 inline void Move(Register dst_low, Register dst_high, FPURegister src) {
236 mfc1(dst_low, src); 236 mfc1(dst_low, src);
237 mfc1(dst_high, FPURegister::from_code(src.code() + 1)); 237 Mfhc1(dst_high, src);
238 } 238 }
239 239
240 inline void FmoveHigh(Register dst_high, FPURegister src) { 240 inline void FmoveHigh(Register dst_high, FPURegister src) {
241 mfc1(dst_high, FPURegister::from_code(src.code() + 1)); 241 Mfhc1(dst_high, src);
242 } 242 }
243 243
244 inline void FmoveLow(Register dst_low, FPURegister src) { 244 inline void FmoveLow(Register dst_low, FPURegister src) {
245 mfc1(dst_low, src); 245 mfc1(dst_low, src);
246 } 246 }
247 247
248 inline void Move(FPURegister dst, Register src_low, Register src_high) { 248 inline void Move(FPURegister dst, Register src_low, Register src_high) {
249 mtc1(src_low, dst); 249 mtc1(src_low, dst);
250 mtc1(src_high, FPURegister::from_code(dst.code() + 1)); 250 Mthc1(src_high, dst);
251 } 251 }
252 252
253 // Conditional move. 253 // Conditional move.
254 void Move(FPURegister dst, double imm); 254 void Move(FPURegister dst, double imm);
255 void Movz(Register rd, Register rs, Register rt); 255 void Movz(Register rd, Register rs, Register rt);
256 void Movn(Register rd, Register rs, Register rt); 256 void Movn(Register rd, Register rs, Register rt);
257 void Movt(Register rd, Register rs, uint16_t cc = 0); 257 void Movt(Register rd, Register rs, uint16_t cc = 0);
258 void Movf(Register rd, Register rs, uint16_t cc = 0); 258 void Movf(Register rd, Register rs, uint16_t cc = 0);
259 259
260 void Clz(Register rd, Register rs); 260 void Clz(Register rd, Register rs);
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
575 575
576 #define DEFINE_INSTRUCTION2(instr) \ 576 #define DEFINE_INSTRUCTION2(instr) \
577 void instr(Register rs, const Operand& rt); \ 577 void instr(Register rs, const Operand& rt); \
578 void instr(Register rs, Register rt) { \ 578 void instr(Register rs, Register rt) { \
579 instr(rs, Operand(rt)); \ 579 instr(rs, Operand(rt)); \
580 } \ 580 } \
581 void instr(Register rs, int32_t j) { \ 581 void instr(Register rs, int32_t j) { \
582 instr(rs, Operand(j)); \ 582 instr(rs, Operand(j)); \
583 } 583 }
584 584
585 #define DEFINE_INSTRUCTION3(instr) \
586 void instr(Register rd_hi, Register rd_lo, Register rs, const Operand& rt); \
587 void instr(Register rd_hi, Register rd_lo, Register rs, Register rt) { \
588 instr(rd_hi, rd_lo, rs, Operand(rt)); \
589 } \
590 void instr(Register rd_hi, Register rd_lo, Register rs, int32_t j) { \
591 instr(rd_hi, rd_lo, rs, Operand(j)); \
592 }
593
585 DEFINE_INSTRUCTION(Addu); 594 DEFINE_INSTRUCTION(Addu);
586 DEFINE_INSTRUCTION(Subu); 595 DEFINE_INSTRUCTION(Subu);
587 DEFINE_INSTRUCTION(Mul); 596 DEFINE_INSTRUCTION(Mul);
597 DEFINE_INSTRUCTION(Mod);
598 DEFINE_INSTRUCTION(Mulh);
588 DEFINE_INSTRUCTION2(Mult); 599 DEFINE_INSTRUCTION2(Mult);
589 DEFINE_INSTRUCTION2(Multu); 600 DEFINE_INSTRUCTION2(Multu);
590 DEFINE_INSTRUCTION2(Div); 601 DEFINE_INSTRUCTION2(Div);
591 DEFINE_INSTRUCTION2(Divu); 602 DEFINE_INSTRUCTION2(Divu);
592 603
604 DEFINE_INSTRUCTION3(Div);
605 DEFINE_INSTRUCTION3(Mul);
606
593 DEFINE_INSTRUCTION(And); 607 DEFINE_INSTRUCTION(And);
594 DEFINE_INSTRUCTION(Or); 608 DEFINE_INSTRUCTION(Or);
595 DEFINE_INSTRUCTION(Xor); 609 DEFINE_INSTRUCTION(Xor);
596 DEFINE_INSTRUCTION(Nor); 610 DEFINE_INSTRUCTION(Nor);
597 DEFINE_INSTRUCTION2(Neg); 611 DEFINE_INSTRUCTION2(Neg);
598 612
599 DEFINE_INSTRUCTION(Slt); 613 DEFINE_INSTRUCTION(Slt);
600 DEFINE_INSTRUCTION(Sltu); 614 DEFINE_INSTRUCTION(Sltu);
601 615
602 // MIPS32 R2 instruction macro. 616 // MIPS32 R2 instruction macro.
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
735 void Cvt_d_uw(FPURegister fd, Register rs, FPURegister scratch); 749 void Cvt_d_uw(FPURegister fd, Register rs, FPURegister scratch);
736 750
737 // Convert double to unsigned word. 751 // Convert double to unsigned word.
738 void Trunc_uw_d(FPURegister fd, FPURegister fs, FPURegister scratch); 752 void Trunc_uw_d(FPURegister fd, FPURegister fs, FPURegister scratch);
739 void Trunc_uw_d(FPURegister fd, Register rs, FPURegister scratch); 753 void Trunc_uw_d(FPURegister fd, Register rs, FPURegister scratch);
740 754
741 void Trunc_w_d(FPURegister fd, FPURegister fs); 755 void Trunc_w_d(FPURegister fd, FPURegister fs);
742 void Round_w_d(FPURegister fd, FPURegister fs); 756 void Round_w_d(FPURegister fd, FPURegister fs);
743 void Floor_w_d(FPURegister fd, FPURegister fs); 757 void Floor_w_d(FPURegister fd, FPURegister fs);
744 void Ceil_w_d(FPURegister fd, FPURegister fs); 758 void Ceil_w_d(FPURegister fd, FPURegister fs);
759
760 // FP32 mode: Move the general purpose register into
761 // the high part of the double-register pair.
762 // FP64 mode: Move the general-purpose register into
763 // the higher 32 bits of the 64-bit coprocessor register,
764 // while leaving the low bits unchanged.
765 void Mthc1(Register rt, FPURegister fs);
766
767 // FP32 mode: move the high part of the double-register pair into
768 // general purpose register.
769 // FP64 mode: Move the higher 32 bits of the 64-bit coprocessor register into
770 // general-purpose register.
771 void Mfhc1(Register rt, FPURegister fs);
772
745 // Wrapper function for the different cmp/branch types. 773 // Wrapper function for the different cmp/branch types.
746 void BranchF(Label* target, 774 void BranchF(Label* target,
747 Label* nan, 775 Label* nan,
748 Condition cc, 776 Condition cc,
749 FPURegister cmp1, 777 FPURegister cmp1,
750 FPURegister cmp2, 778 FPURegister cmp2,
751 BranchDelaySlot bd = PROTECT); 779 BranchDelaySlot bd = PROTECT);
752 780
753 // Alternate (inline) version for better readability with USE_DELAY_SLOT. 781 // Alternate (inline) version for better readability with USE_DELAY_SLOT.
754 inline void BranchF(BranchDelaySlot bd, 782 inline void BranchF(BranchDelaySlot bd,
(...skipping 939 matching lines...) Expand 10 before | Expand all | Expand 10 after
1694 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) 1722 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x)
1695 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 1723 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
1696 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 1724 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
1697 #else 1725 #else
1698 #define ACCESS_MASM(masm) masm-> 1726 #define ACCESS_MASM(masm) masm->
1699 #endif 1727 #endif
1700 1728
1701 } } // namespace v8::internal 1729 } } // namespace v8::internal
1702 1730
1703 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ 1731 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_
OLDNEW
« no previous file with comments | « src/mips/lithium-mips.cc ('k') | src/mips/macro-assembler-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698