OLD | NEW |
1 | 1 |
2 // Copyright 2012 the V8 project authors. All rights reserved. | 2 // Copyright 2012 the V8 project authors. All rights reserved. |
3 // Use of this source code is governed by a BSD-style license that can be | 3 // Use of this source code is governed by a BSD-style license that can be |
4 // found in the LICENSE file. | 4 // found in the LICENSE file. |
5 | 5 |
6 #include <limits.h> // For LONG_MIN, LONG_MAX. | 6 #include <limits.h> // For LONG_MIN, LONG_MAX. |
7 | 7 |
8 #if V8_TARGET_ARCH_MIPS | 8 #if V8_TARGET_ARCH_MIPS |
9 | 9 |
10 #include "src/base/bits.h" | 10 #include "src/base/bits.h" |
(...skipping 1378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1389 // Simple conversion. | 1389 // Simple conversion. |
1390 bind(&simple_convert); | 1390 bind(&simple_convert); |
1391 trunc_w_d(scratch, fd); | 1391 trunc_w_d(scratch, fd); |
1392 mfc1(rs, scratch); | 1392 mfc1(rs, scratch); |
1393 | 1393 |
1394 bind(&done); | 1394 bind(&done); |
1395 } | 1395 } |
1396 | 1396 |
1397 | 1397 |
1398 void MacroAssembler::Mthc1(Register rt, FPURegister fs) { | 1398 void MacroAssembler::Mthc1(Register rt, FPURegister fs) { |
1399 if (IsFp64Mode()) { | 1399 if (IsFp32Mode()) { |
| 1400 mtc1(rt, fs.high()); |
| 1401 } else { |
| 1402 DCHECK(IsFp64Mode() || IsFpxxMode()); |
| 1403 DCHECK(IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)); |
1400 mthc1(rt, fs); | 1404 mthc1(rt, fs); |
1401 } else { | |
1402 mtc1(rt, fs.high()); | |
1403 } | 1405 } |
1404 } | 1406 } |
1405 | 1407 |
1406 | 1408 |
1407 void MacroAssembler::Mfhc1(Register rt, FPURegister fs) { | 1409 void MacroAssembler::Mfhc1(Register rt, FPURegister fs) { |
1408 if (IsFp64Mode()) { | 1410 if (IsFp32Mode()) { |
| 1411 mfc1(rt, fs.high()); |
| 1412 } else { |
| 1413 DCHECK(IsFp64Mode() || IsFpxxMode()); |
| 1414 DCHECK(IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)); |
1409 mfhc1(rt, fs); | 1415 mfhc1(rt, fs); |
1410 } else { | |
1411 mfc1(rt, fs.high()); | |
1412 } | 1416 } |
1413 } | 1417 } |
1414 | 1418 |
1415 | 1419 |
1416 void MacroAssembler::BranchFCommon(SecondaryField sizeField, Label* target, | 1420 void MacroAssembler::BranchFCommon(SecondaryField sizeField, Label* target, |
1417 Label* nan, Condition cond, FPURegister cmp1, | 1421 Label* nan, Condition cond, FPURegister cmp1, |
1418 FPURegister cmp2, BranchDelaySlot bd) { | 1422 FPURegister cmp2, BranchDelaySlot bd) { |
1419 { | 1423 { |
1420 BlockTrampolinePoolScope block_trampoline_pool(this); | 1424 BlockTrampolinePoolScope block_trampoline_pool(this); |
1421 if (cond == al) { | 1425 if (cond == al) { |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1607 } | 1611 } |
1608 } | 1612 } |
1609 } | 1613 } |
1610 if (bd == PROTECT) { | 1614 if (bd == PROTECT) { |
1611 nop(); | 1615 nop(); |
1612 } | 1616 } |
1613 } | 1617 } |
1614 | 1618 |
1615 | 1619 |
1616 void MacroAssembler::FmoveLow(FPURegister dst, Register src_low) { | 1620 void MacroAssembler::FmoveLow(FPURegister dst, Register src_low) { |
1617 if (IsFp64Mode()) { | 1621 if (IsFp32Mode()) { |
| 1622 mtc1(src_low, dst); |
| 1623 } else { |
| 1624 DCHECK(IsFp64Mode() || IsFpxxMode()); |
| 1625 DCHECK(IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)); |
1618 DCHECK(!src_low.is(at)); | 1626 DCHECK(!src_low.is(at)); |
1619 mfhc1(at, dst); | 1627 mfhc1(at, dst); |
1620 mtc1(src_low, dst); | 1628 mtc1(src_low, dst); |
1621 mthc1(at, dst); | 1629 mthc1(at, dst); |
1622 } else { | |
1623 mtc1(src_low, dst); | |
1624 } | 1630 } |
1625 } | 1631 } |
1626 | 1632 |
1627 | 1633 |
1628 void MacroAssembler::Move(FPURegister dst, float imm) { | 1634 void MacroAssembler::Move(FPURegister dst, float imm) { |
1629 li(at, Operand(bit_cast<int32_t>(imm))); | 1635 li(at, Operand(bit_cast<int32_t>(imm))); |
1630 mtc1(at, dst); | 1636 mtc1(at, dst); |
1631 } | 1637 } |
1632 | 1638 |
1633 | 1639 |
(...skipping 4134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5768 if (mag.shift > 0) sra(result, result, mag.shift); | 5774 if (mag.shift > 0) sra(result, result, mag.shift); |
5769 srl(at, dividend, 31); | 5775 srl(at, dividend, 31); |
5770 Addu(result, result, Operand(at)); | 5776 Addu(result, result, Operand(at)); |
5771 } | 5777 } |
5772 | 5778 |
5773 | 5779 |
5774 } // namespace internal | 5780 } // namespace internal |
5775 } // namespace v8 | 5781 } // namespace v8 |
5776 | 5782 |
5777 #endif // V8_TARGET_ARCH_MIPS | 5783 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |