| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef VM_ASSEMBLER_MIPS_H_ | 5 #ifndef VM_ASSEMBLER_MIPS_H_ |
| 6 #define VM_ASSEMBLER_MIPS_H_ | 6 #define VM_ASSEMBLER_MIPS_H_ |
| 7 | 7 |
| 8 #ifndef VM_ASSEMBLER_H_ | 8 #ifndef VM_ASSEMBLER_H_ |
| 9 #error Do not include assembler_mips.h directly; use assembler.h instead. | 9 #error Do not include assembler_mips.h directly; use assembler.h instead. |
| 10 #endif | 10 #endif |
| (...skipping 567 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 578 } | 578 } |
| 579 | 579 |
| 580 void clo(Register rd, Register rs) { | 580 void clo(Register rd, Register rs) { |
| 581 EmitRType(SPECIAL2, rs, rd, rd, 0, CLO); | 581 EmitRType(SPECIAL2, rs, rd, rd, 0, CLO); |
| 582 } | 582 } |
| 583 | 583 |
| 584 void clz(Register rd, Register rs) { | 584 void clz(Register rd, Register rs) { |
| 585 EmitRType(SPECIAL2, rs, rd, rd, 0, CLZ); | 585 EmitRType(SPECIAL2, rs, rd, rd, 0, CLZ); |
| 586 } | 586 } |
| 587 | 587 |
| 588 // Convert a double in ds to a 32-bit signed int in fd rounding towards 0. |
| 589 void truncwd(FRegister fd, DRegister ds) { |
| 590 FRegister fs = static_cast<FRegister>(ds * 2); |
| 591 EmitFpuRType(COP1, FMT_D, F0, fs, fd, COP1_TRUNC_W); |
| 592 } |
| 593 |
| 588 // Convert a 32-bit float in fs to a 64-bit double in dd. | 594 // Convert a 32-bit float in fs to a 64-bit double in dd. |
| 589 void cvtds(DRegister dd, FRegister fs) { | 595 void cvtds(DRegister dd, FRegister fs) { |
| 590 FRegister fd = static_cast<FRegister>(dd * 2); | 596 FRegister fd = static_cast<FRegister>(dd * 2); |
| 591 EmitFpuRType(COP1, FMT_S, F0, fs, fd, COP1_CVT_D); | 597 EmitFpuRType(COP1, FMT_S, F0, fs, fd, COP1_CVT_D); |
| 592 } | 598 } |
| 593 | 599 |
| 594 // Converts a 32-bit signed int in fs to a double in fd. | 600 // Converts a 32-bit signed int in fs to a double in fd. |
| 595 void cvtdw(DRegister dd, FRegister fs) { | 601 void cvtdw(DRegister dd, FRegister fs) { |
| 596 FRegister fd = static_cast<FRegister>(dd * 2); | 602 FRegister fd = static_cast<FRegister>(dd * 2); |
| 597 EmitFpuRType(COP1, FMT_W, F0, fs, fd, COP1_CVT_D); | 603 EmitFpuRType(COP1, FMT_W, F0, fs, fd, COP1_CVT_D); |
| 598 } | 604 } |
| 599 | 605 |
| 600 // Converts a 64-bit signed int in fs to a double in fd. | 606 // Convert a 64-bit double in ds to a 32-bit float in fd. |
| 601 void cvtdl(DRegister dd, DRegister ds) { | |
| 602 FRegister fs = static_cast<FRegister>(ds * 2); | |
| 603 FRegister fd = static_cast<FRegister>(dd * 2); | |
| 604 EmitFpuRType(COP1, FMT_L, F0, fs, fd, COP1_CVT_D); | |
| 605 } | |
| 606 | |
| 607 void cvtsd(FRegister fd, DRegister ds) { | 607 void cvtsd(FRegister fd, DRegister ds) { |
| 608 FRegister fs = static_cast<FRegister>(ds * 2); | 608 FRegister fs = static_cast<FRegister>(ds * 2); |
| 609 EmitFpuRType(COP1, FMT_D, F0, fs, fd, COP1_CVT_S); | 609 EmitFpuRType(COP1, FMT_D, F0, fs, fd, COP1_CVT_S); |
| 610 } | 610 } |
| 611 | 611 |
| 612 void cvtwd(FRegister fd, DRegister ds) { | |
| 613 FRegister fs = static_cast<FRegister>(ds * 2); | |
| 614 EmitFpuRType(COP1, FMT_D, F0, fs, fd, COP1_CVT_W); | |
| 615 } | |
| 616 | |
| 617 void div(Register rs, Register rt) { | 612 void div(Register rs, Register rt) { |
| 618 EmitRType(SPECIAL, rs, rt, R0, 0, DIV); | 613 EmitRType(SPECIAL, rs, rt, R0, 0, DIV); |
| 619 } | 614 } |
| 620 | 615 |
| 621 void divd(DRegister dd, DRegister ds, DRegister dt) { | 616 void divd(DRegister dd, DRegister ds, DRegister dt) { |
| 622 FRegister fd = static_cast<FRegister>(dd * 2); | 617 FRegister fd = static_cast<FRegister>(dd * 2); |
| 623 FRegister fs = static_cast<FRegister>(ds * 2); | 618 FRegister fs = static_cast<FRegister>(ds * 2); |
| 624 FRegister ft = static_cast<FRegister>(dt * 2); | 619 FRegister ft = static_cast<FRegister>(dt * 2); |
| 625 EmitFpuRType(COP1, FMT_D, ft, fs, fd, COP1_DIV); | 620 EmitFpuRType(COP1, FMT_D, ft, fs, fd, COP1_DIV); |
| 626 } | 621 } |
| (...skipping 1139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1766 Register value, | 1761 Register value, |
| 1767 Label* no_update); | 1762 Label* no_update); |
| 1768 | 1763 |
| 1769 DISALLOW_ALLOCATION(); | 1764 DISALLOW_ALLOCATION(); |
| 1770 DISALLOW_COPY_AND_ASSIGN(Assembler); | 1765 DISALLOW_COPY_AND_ASSIGN(Assembler); |
| 1771 }; | 1766 }; |
| 1772 | 1767 |
| 1773 } // namespace dart | 1768 } // namespace dart |
| 1774 | 1769 |
| 1775 #endif // VM_ASSEMBLER_MIPS_H_ | 1770 #endif // VM_ASSEMBLER_MIPS_H_ |
| OLD | NEW |