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 1637 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1648 | 1648 |
1649 // Load, store, move. | 1649 // Load, store, move. |
1650 void Assembler::lwc1(FPURegister fd, const MemOperand& src) { | 1650 void Assembler::lwc1(FPURegister fd, const MemOperand& src) { |
1651 GenInstrImmediate(LWC1, src.rm(), fd, src.offset_); | 1651 GenInstrImmediate(LWC1, src.rm(), fd, src.offset_); |
1652 } | 1652 } |
1653 | 1653 |
1654 | 1654 |
1655 void Assembler::ldc1(FPURegister fd, const MemOperand& src) { | 1655 void Assembler::ldc1(FPURegister fd, const MemOperand& src) { |
1656 // Workaround for non-8-byte alignment of HeapNumber, convert 64-bit | 1656 // Workaround for non-8-byte alignment of HeapNumber, convert 64-bit |
1657 // load to two 32-bit loads. | 1657 // load to two 32-bit loads. |
1658 GenInstrImmediate(LWC1, src.rm(), fd, src.offset_); | 1658 GenInstrImmediate(LWC1, src.rm(), fd, src.offset_ + |
| 1659 Register::kMantissaOffset); |
1659 FPURegister nextfpreg; | 1660 FPURegister nextfpreg; |
1660 nextfpreg.setcode(fd.code() + 1); | 1661 nextfpreg.setcode(fd.code() + 1); |
1661 GenInstrImmediate(LWC1, src.rm(), nextfpreg, src.offset_ + 4); | 1662 GenInstrImmediate(LWC1, src.rm(), nextfpreg, src.offset_ + |
| 1663 Register::kExponentOffset); |
1662 } | 1664 } |
1663 | 1665 |
1664 | 1666 |
1665 void Assembler::swc1(FPURegister fd, const MemOperand& src) { | 1667 void Assembler::swc1(FPURegister fd, const MemOperand& src) { |
1666 GenInstrImmediate(SWC1, src.rm(), fd, src.offset_); | 1668 GenInstrImmediate(SWC1, src.rm(), fd, src.offset_); |
1667 } | 1669 } |
1668 | 1670 |
1669 | 1671 |
1670 void Assembler::sdc1(FPURegister fd, const MemOperand& src) { | 1672 void Assembler::sdc1(FPURegister fd, const MemOperand& src) { |
1671 // Workaround for non-8-byte alignment of HeapNumber, convert 64-bit | 1673 // Workaround for non-8-byte alignment of HeapNumber, convert 64-bit |
1672 // store to two 32-bit stores. | 1674 // store to two 32-bit stores. |
1673 GenInstrImmediate(SWC1, src.rm(), fd, src.offset_); | 1675 GenInstrImmediate(SWC1, src.rm(), fd, src.offset_ + |
| 1676 Register::kMantissaOffset); |
1674 FPURegister nextfpreg; | 1677 FPURegister nextfpreg; |
1675 nextfpreg.setcode(fd.code() + 1); | 1678 nextfpreg.setcode(fd.code() + 1); |
1676 GenInstrImmediate(SWC1, src.rm(), nextfpreg, src.offset_ + 4); | 1679 GenInstrImmediate(SWC1, src.rm(), nextfpreg, src.offset_ + |
| 1680 Register::kExponentOffset); |
1677 } | 1681 } |
1678 | 1682 |
1679 | 1683 |
1680 void Assembler::mtc1(Register rt, FPURegister fs) { | 1684 void Assembler::mtc1(Register rt, FPURegister fs) { |
1681 GenInstrRegister(COP1, MTC1, rt, fs, f0); | 1685 GenInstrRegister(COP1, MTC1, rt, fs, f0); |
1682 } | 1686 } |
1683 | 1687 |
1684 | 1688 |
1685 void Assembler::mfc1(Register rt, FPURegister fs) { | 1689 void Assembler::mfc1(Register rt, FPURegister fs) { |
1686 GenInstrRegister(COP1, MFC1, rt, fs, f0); | 1690 GenInstrRegister(COP1, MFC1, rt, fs, f0); |
(...skipping 650 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2337 | 2341 |
2338 void Assembler::PopulateConstantPool(ConstantPoolArray* constant_pool) { | 2342 void Assembler::PopulateConstantPool(ConstantPoolArray* constant_pool) { |
2339 // No out-of-line constant pool support. | 2343 // No out-of-line constant pool support. |
2340 UNREACHABLE(); | 2344 UNREACHABLE(); |
2341 } | 2345 } |
2342 | 2346 |
2343 | 2347 |
2344 } } // namespace v8::internal | 2348 } } // namespace v8::internal |
2345 | 2349 |
2346 #endif // V8_TARGET_ARCH_MIPS | 2350 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |