Index: src/compiler/ppc/code-generator-ppc.cc |
diff --git a/src/compiler/ppc/code-generator-ppc.cc b/src/compiler/ppc/code-generator-ppc.cc |
index 60b73aee8127bbc498ba0d74ba1e1df0c749c741..550cb230a947f17681484e2c53bd7ec347afdbe8 100644 |
--- a/src/compiler/ppc/code-generator-ppc.cc |
+++ b/src/compiler/ppc/code-generator-ppc.cc |
@@ -1191,27 +1191,18 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |
#if V8_TARGET_ARCH_PPC64 |
case kPPC_DoubleToUint64: { |
bool check_conversion = (i.OutputCount() > 1); |
- Label done; |
if (check_conversion) { |
- // Set 2nd output to zero if conversion fails. |
- // We must check explicitly for negative values here since the |
- // conversion instruction rounds the input toward zero before |
- // checking for validity (otherwise, values between -1 and 0 |
- // would produce incorrect results). |
- __ li(i.OutputRegister(1), Operand::Zero()); |
- __ fcmpu(i.InputDoubleRegister(0), kDoubleRegZero); |
- __ blt(&done); |
__ mtfsb0(VXCVI); // clear FPSCR:VXCVI bit |
} |
__ ConvertDoubleToUnsignedInt64(i.InputDoubleRegister(0), |
i.OutputRegister(0), kScratchDoubleReg); |
if (check_conversion) { |
+ // Set 2nd output to zero if conversion fails. |
CRBit crbit = static_cast<CRBit>(VXCVI % CRWIDTH); |
__ mcrfs(cr7, VXCVI); // extract FPSCR field containing VXCVI into cr7 |
__ li(i.OutputRegister(1), Operand(1)); |
__ isel(i.OutputRegister(1), r0, i.OutputRegister(1), |
v8::internal::Assembler::encode_crbit(cr7, crbit)); |
- __ bind(&done); |
} |
DCHECK_EQ(LeaveRC, i.OutputRCBit()); |
break; |