| Index: src/ia32/macro-assembler-ia32.cc | 
| diff --git a/src/ia32/macro-assembler-ia32.cc b/src/ia32/macro-assembler-ia32.cc | 
| index a68cc130092fc68362301f75c87cc72fb9ff04eb..030e2c9b2f9f06910eb37cc7573d97c436cba08f 100644 | 
| --- a/src/ia32/macro-assembler-ia32.cc | 
| +++ b/src/ia32/macro-assembler-ia32.cc | 
| @@ -587,6 +587,25 @@ void MacroAssembler::Cvtsi2sd(XMMRegister dst, const Operand& src) { | 
| } | 
|  | 
|  | 
| +void MacroAssembler::Cvtui2ss(XMMRegister dst, Register src, Register tmp) { | 
| +  Label msb_set_src; | 
| +  Label jmp_return; | 
| +  test(src, src); | 
| +  j(sign, &msb_set_src, Label::kNear); | 
| +  cvtsi2ss(dst, src); | 
| +  jmp(&jmp_return, Label::kNear); | 
| +  bind(&msb_set_src); | 
| +  mov(tmp, src); | 
| +  shr(src, 1); | 
| +  // Recover the least significant bit to avoid rounding errors. | 
| +  and_(tmp, Immediate(1)); | 
| +  or_(src, tmp); | 
| +  cvtsi2ss(dst, src); | 
| +  addss(dst, dst); | 
| +  bind(&jmp_return); | 
| +} | 
| + | 
| + | 
| bool MacroAssembler::IsUnsafeImmediate(const Immediate& x) { | 
| static const int kMaxImmediateBits = 17; | 
| if (!RelocInfo::IsNone(x.rmode_)) return false; | 
|  |