Chromium Code Reviews| 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 b52146b4d24a2c08d970a56951df08947d123ff4..1ad21d19944a8b3fee0bb070b06d6995fe1f1ea7 100644 |
| --- a/src/compiler/ia32/code-generator-ia32.cc |
| +++ b/src/compiler/ia32/code-generator-ia32.cc |
| @@ -742,6 +742,18 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |
| case kSSEFloat32ToInt32: |
| __ cvttss2si(i.OutputRegister(), i.InputOperand(0)); |
| break; |
| + case kSSEFloat32ToUint32: { |
| + Label success; |
| + __ cvttss2si(i.OutputRegister(), i.InputOperand(0)); |
| + __ test(i.OutputRegister(), i.OutputRegister()); |
| + __ j(positive, &success); |
| + __ Move(kScratchDoubleReg, -2147483648.0f); |
|
ahaas
2016/01/29 10:45:08
You could use static_cast<float>(INT32_MIN) here,
|
| + __ addss(kScratchDoubleReg, i.InputOperand(0)); |
| + __ cvttss2si(i.OutputRegister(), kScratchDoubleReg); |
| + __ or_(i.OutputRegister(), Immediate(0x80000000)); |
| + __ bind(&success); |
| + break; |
| + } |
| case kSSEFloat64ToInt32: |
| __ cvttsd2si(i.OutputRegister(), i.InputOperand(0)); |
| break; |