Chromium Code Reviews| Index: src/mips/macro-assembler-mips.cc |
| diff --git a/src/mips/macro-assembler-mips.cc b/src/mips/macro-assembler-mips.cc |
| index c7f727bef604e1e0eff71ff0987b00b57f5d2c56..606b41db28fd42850fa9cb7cc3d371b4a490b0e1 100644 |
| --- a/src/mips/macro-assembler-mips.cc |
| +++ b/src/mips/macro-assembler-mips.cc |
| @@ -752,6 +752,64 @@ void MacroAssembler::MultiPopReversed(RegList regs) { |
| } |
| +void MacroAssembler::MultiPushFPU(RegList regs) { |
| + CpuFeatures::Scope scope(FPU); |
| + int16_t NumSaved = 0; |
| + int16_t NumToPush = NumberOfBitsSet(regs); |
| + |
| + addiu(sp, sp, -8 * NumToPush); |
| + for (int16_t i = kNumRegisters; i > 0; i--) { |
| + if ((regs & (1 << i)) != 0) { |
| + sdc1(FPURegister::from_code(i), |
| + MemOperand(sp, 8 * (NumToPush - ++NumSaved))); |
| + } |
| + } |
|
Yang
2011/08/31 12:38:44
Consider - for readability - introducing a stack_o
Paul Lind
2011/09/01 06:50:27
Nice suggestion, the code looks much cleaner now.
|
| +} |
| + |
| + |
| +void MacroAssembler::MultiPushReversedFPU(RegList regs) { |
| + CpuFeatures::Scope scope(FPU); |
| + int16_t NumSaved = 0; |
| + int16_t NumToPush = NumberOfBitsSet(regs); |
| + |
| + addiu(sp, sp, -8 * NumToPush); |
| + for (int16_t i = 0; i < kNumRegisters; i++) { |
| + if ((regs & (1 << i)) != 0) { |
| + sdc1(FPURegister::from_code(i), |
| + MemOperand(sp, 8 * (NumToPush - ++NumSaved))); |
| + } |
| + } |
| +} |
| + |
| + |
| +void MacroAssembler::MultiPopFPU(RegList regs) { |
| + CpuFeatures::Scope scope(FPU); |
| + int16_t NumSaved = 0; |
| + |
| + for (int16_t i = 0; i < kNumRegisters; i++) { |
| + if ((regs & (1 << i)) != 0) { |
| + ldc1(FPURegister::from_code(i), |
| + MemOperand(sp, 8 * (NumSaved++))); |
| + } |
| + } |
| + addiu(sp, sp, 8 * NumSaved); |
| +} |
| + |
| + |
| +void MacroAssembler::MultiPopReversedFPU(RegList regs) { |
| + CpuFeatures::Scope scope(FPU); |
| + int16_t NumSaved = 0; |
| + |
| + for (int16_t i = kNumRegisters; i > 0; i--) { |
| + if ((regs & (1 << i)) != 0) { |
| + ldc1(FPURegister::from_code(i), |
| + MemOperand(sp, 8 * (NumSaved++))); |
| + } |
| + } |
| + addiu(sp, sp, 8 * NumSaved); |
| +} |
| + |
| + |
| void MacroAssembler::Ext(Register rt, |
| Register rs, |
| uint16_t pos, |