| 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 1612 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1623 | 1623 |
| 1624 | 1624 |
| 1625 //--------Coprocessor-instructions---------------- | 1625 //--------Coprocessor-instructions---------------- |
| 1626 | 1626 |
| 1627 // Load, store, move. | 1627 // Load, store, move. |
| 1628 void Assembler::lwc1(FPURegister fd, const MemOperand& src) { | 1628 void Assembler::lwc1(FPURegister fd, const MemOperand& src) { |
| 1629 GenInstrImmediate(LWC1, src.rm(), fd, src.offset_); | 1629 GenInstrImmediate(LWC1, src.rm(), fd, src.offset_); |
| 1630 } | 1630 } |
| 1631 | 1631 |
| 1632 | 1632 |
| 1633 void Assembler::ldc1(FPURegister fd, const MemOperand& src) { | 1633 void Assembler::ldc1(FPURegister fd, const MemOperand& src, bool aligned) { |
| 1634 // Workaround for non-8-byte alignment of HeapNumber, convert 64-bit | 1634 // Workaround for non-8-byte alignment of HeapNumber, convert 64-bit |
| 1635 // load to two 32-bit loads. | 1635 // load to two 32-bit loads. |
| 1636 GenInstrImmediate(LWC1, src.rm(), fd, src.offset_); | 1636 if (aligned) { |
| 1637 FPURegister nextfpreg; | 1637 GenInstrImmediate(LDC1, src.rm(), fd, src.offset_); |
| 1638 nextfpreg.setcode(fd.code() + 1); | 1638 } else { |
| 1639 GenInstrImmediate(LWC1, src.rm(), nextfpreg, src.offset_ + 4); | 1639 GenInstrImmediate(LWC1, src.rm(), fd, src.offset_); |
| 1640 FPURegister nextfpreg; |
| 1641 nextfpreg.setcode(fd.code() + 1); |
| 1642 GenInstrImmediate(LWC1, src.rm(), nextfpreg, src.offset_ + 4); |
| 1643 } |
| 1640 } | 1644 } |
| 1641 | 1645 |
| 1642 | 1646 |
| 1643 void Assembler::swc1(FPURegister fd, const MemOperand& src) { | 1647 void Assembler::swc1(FPURegister fd, const MemOperand& src) { |
| 1644 GenInstrImmediate(SWC1, src.rm(), fd, src.offset_); | 1648 GenInstrImmediate(SWC1, src.rm(), fd, src.offset_); |
| 1645 } | 1649 } |
| 1646 | 1650 |
| 1647 | 1651 |
| 1648 void Assembler::sdc1(FPURegister fd, const MemOperand& src) { | 1652 void Assembler::sdc1(FPURegister fd, const MemOperand& src, bool aligned) { |
| 1649 // Workaround for non-8-byte alignment of HeapNumber, convert 64-bit | 1653 // Workaround for non-8-byte alignment of HeapNumber, convert 64-bit |
| 1650 // store to two 32-bit stores. | 1654 // store to two 32-bit stores. |
| 1651 GenInstrImmediate(SWC1, src.rm(), fd, src.offset_); | 1655 if (aligned) { |
| 1652 FPURegister nextfpreg; | 1656 GenInstrImmediate(SDC1, src.rm(), fd, src.offset_); |
| 1653 nextfpreg.setcode(fd.code() + 1); | 1657 } else { |
| 1654 GenInstrImmediate(SWC1, src.rm(), nextfpreg, src.offset_ + 4); | 1658 GenInstrImmediate(SWC1, src.rm(), fd, src.offset_); |
| 1659 FPURegister nextfpreg; |
| 1660 nextfpreg.setcode(fd.code() + 1); |
| 1661 GenInstrImmediate(SWC1, src.rm(), nextfpreg, src.offset_ + 4); |
| 1662 } |
| 1655 } | 1663 } |
| 1656 | 1664 |
| 1657 | 1665 |
| 1658 void Assembler::mtc1(Register rt, FPURegister fs) { | 1666 void Assembler::mtc1(Register rt, FPURegister fs) { |
| 1659 GenInstrRegister(COP1, MTC1, rt, fs, f0); | 1667 GenInstrRegister(COP1, MTC1, rt, fs, f0); |
| 1660 } | 1668 } |
| 1661 | 1669 |
| 1662 | 1670 |
| 1663 void Assembler::mfc1(Register rt, FPURegister fs) { | 1671 void Assembler::mfc1(Register rt, FPURegister fs) { |
| 1664 GenInstrRegister(COP1, MFC1, rt, fs, f0); | 1672 GenInstrRegister(COP1, MFC1, rt, fs, f0); |
| (...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2293 } | 2301 } |
| 2294 | 2302 |
| 2295 if (patched) { | 2303 if (patched) { |
| 2296 CPU::FlushICache(pc+2, sizeof(Address)); | 2304 CPU::FlushICache(pc+2, sizeof(Address)); |
| 2297 } | 2305 } |
| 2298 } | 2306 } |
| 2299 | 2307 |
| 2300 } } // namespace v8::internal | 2308 } } // namespace v8::internal |
| 2301 | 2309 |
| 2302 #endif // V8_TARGET_ARCH_MIPS | 2310 #endif // V8_TARGET_ARCH_MIPS |
| OLD | NEW |