| Index: src/compiler/ia32/code-generator-ia32.cc
|
| diff --git a/src/compiler/ia32/code-generator-ia32.cc b/src/compiler/ia32/code-generator-ia32.cc
|
| index 38f7d4b0c100f51c1e464786cb57f35df22d18a6..37ad39dd4eb79fb7be5d0b93c25d2aef58f60b37 100644
|
| --- a/src/compiler/ia32/code-generator-ia32.cc
|
| +++ b/src/compiler/ia32/code-generator-ia32.cc
|
| @@ -315,9 +315,22 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) {
|
| case kSSEFloat64ToInt32:
|
| __ cvttsd2si(i.OutputRegister(), i.InputOperand(0));
|
| break;
|
| + case kSSEFloat64ToUint32: {
|
| + XMMRegister scratch = xmm0;
|
| + __ Move(scratch, -2147483648.0);
|
| + // TODO(turbofan): IA32 SSE subsd() should take an operand.
|
| + __ addsd(scratch, i.InputDoubleRegister(0));
|
| + __ cvttsd2si(i.OutputRegister(), scratch);
|
| + __ add(i.OutputRegister(), Immediate(0x80000000));
|
| + break;
|
| + }
|
| case kSSEInt32ToFloat64:
|
| __ cvtsi2sd(i.OutputDoubleRegister(), i.InputOperand(0));
|
| break;
|
| + case kSSEUint32ToFloat64:
|
| + // TODO(turbofan): IA32 SSE LoadUint32() should take an operand.
|
| + __ LoadUint32(i.OutputDoubleRegister(), i.InputRegister(0));
|
| + break;
|
| case kSSELoad:
|
| __ movsd(i.OutputDoubleRegister(), i.MemoryOperand());
|
| break;
|
|
|