| Index: src/crankshaft/ppc/lithium-codegen-ppc.cc
 | 
| diff --git a/src/crankshaft/ppc/lithium-codegen-ppc.cc b/src/crankshaft/ppc/lithium-codegen-ppc.cc
 | 
| index edc0d696b02d2b8de142f8e05a53ef947ed3a7a8..d3ba2a91730348e50dad6958e625b41e0febb8ba 100644
 | 
| --- a/src/crankshaft/ppc/lithium-codegen-ppc.cc
 | 
| +++ b/src/crankshaft/ppc/lithium-codegen-ppc.cc
 | 
| @@ -3613,8 +3613,13 @@ void LCodeGen::DoMathAbs(LMathAbs* instr) {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +void LCodeGen::DoMathFloorD(LMathFloorD* instr) {
 | 
| +  DoubleRegister input_reg = ToDoubleRegister(instr->value());
 | 
| +  DoubleRegister output_reg = ToDoubleRegister(instr->result());
 | 
| +  __ frim(output_reg, input_reg);
 | 
| +}
 | 
|  
 | 
| -void LCodeGen::DoMathFloor(LMathFloor* instr) {
 | 
| +void LCodeGen::DoMathFloorI(LMathFloorI* instr) {
 | 
|    DoubleRegister input = ToDoubleRegister(instr->value());
 | 
|    Register result = ToRegister(instr->result());
 | 
|    Register input_high = scratch0();
 | 
| @@ -3636,8 +3641,30 @@ void LCodeGen::DoMathFloor(LMathFloor* instr) {
 | 
|    __ bind(&done);
 | 
|  }
 | 
|  
 | 
| +void LCodeGen::DoMathRoundD(LMathRoundD* instr) {
 | 
| +  DoubleRegister input_reg = ToDoubleRegister(instr->value());
 | 
| +  DoubleRegister output_reg = ToDoubleRegister(instr->result());
 | 
| +  DoubleRegister dot_five = double_scratch0();
 | 
| +  Label done;
 | 
| +
 | 
| +  __ frin(output_reg, input_reg);
 | 
| +  __ fcmpu(input_reg, kDoubleRegZero);
 | 
| +  __ bge(&done);
 | 
| +  __ fcmpu(output_reg, input_reg);
 | 
| +  __ beq(&done);
 | 
| +
 | 
| +  // Negative, non-integer case
 | 
| +  __ LoadDoubleLiteral(dot_five, 0.5, r0);
 | 
| +  __ fadd(output_reg, input_reg, dot_five);
 | 
| +  __ frim(output_reg, output_reg);
 | 
| +  // The range [-0.5, -0.0[ yielded +0.0. Force the sign to negative.
 | 
| +  __ fabs(output_reg, output_reg);
 | 
| +  __ fneg(output_reg, output_reg);
 | 
| +
 | 
| +  __ bind(&done);
 | 
| +}
 | 
|  
 | 
| -void LCodeGen::DoMathRound(LMathRound* instr) {
 | 
| +void LCodeGen::DoMathRoundI(LMathRoundI* instr) {
 | 
|    DoubleRegister input = ToDoubleRegister(instr->value());
 | 
|    Register result = ToRegister(instr->result());
 | 
|    DoubleRegister double_scratch1 = ToDoubleRegister(instr->temp());
 | 
| 
 |