Index: src/arm/lithium-codegen-arm.cc |
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
index 738084af030a3cdab9b94619a296a583f01a91a1..769764e785aadcb0d7978a9c0606d96fae610df6 100644 |
--- a/src/arm/lithium-codegen-arm.cc |
+++ b/src/arm/lithium-codegen-arm.cc |
@@ -195,8 +195,7 @@ bool LCodeGen::GeneratePrologue() { |
} |
} |
- if (info()->saves_caller_doubles() && CpuFeatures::IsSupported(VFP2)) { |
- CpuFeatureScope scope(masm(), VFP2); |
+ if (info()->saves_caller_doubles()) { |
Comment(";;; Save clobbered callee double registers"); |
int count = 0; |
BitVector* doubles = chunk()->allocated_double_registers(); |
@@ -1209,8 +1208,6 @@ void LCodeGen::DoModI(LModI* instr) { |
Label vfp_modulo, both_positive, right_negative; |
- CpuFeatureScope scope(masm(), VFP2); |
- |
// Check for x % 0. |
if (instr->hydrogen()->CheckFlag(HValue::kCanBeDivByZero)) { |
__ cmp(right, Operand::Zero()); |
@@ -1615,7 +1612,6 @@ void LCodeGen::DoDeferredBinaryOpStub(LPointerMap* pointer_map, |
LOperand* left_argument, |
LOperand* right_argument, |
Token::Value op) { |
- CpuFeatureScope vfp_scope(masm(), VFP2); |
Register left = ToRegister(left_argument); |
Register right = ToRegister(right_argument); |
@@ -1901,7 +1897,6 @@ void LCodeGen::DoConstantI(LConstantI* instr) { |
void LCodeGen::DoConstantD(LConstantD* instr) { |
ASSERT(instr->result()->IsDoubleRegister()); |
DwVfpRegister result = ToDoubleRegister(instr->result()); |
- CpuFeatureScope scope(masm(), VFP2); |
double v = instr->value(); |
__ Vmov(result, v, scratch0()); |
} |
@@ -2072,7 +2067,6 @@ void LCodeGen::DoMathMinMax(LMathMinMax* instr) { |
__ mov(result_reg, right_op, LeaveCC, NegateCondition(condition)); |
} else { |
ASSERT(instr->hydrogen()->representation().IsDouble()); |
- CpuFeatureScope scope(masm(), VFP2); |
DwVfpRegister left_reg = ToDoubleRegister(left); |
DwVfpRegister right_reg = ToDoubleRegister(right); |
DwVfpRegister result_reg = ToDoubleRegister(instr->result()); |
@@ -2118,7 +2112,6 @@ void LCodeGen::DoMathMinMax(LMathMinMax* instr) { |
void LCodeGen::DoArithmeticD(LArithmeticD* instr) { |
- CpuFeatureScope scope(masm(), VFP2); |
DwVfpRegister left = ToDoubleRegister(instr->left()); |
DwVfpRegister right = ToDoubleRegister(instr->right()); |
DwVfpRegister result = ToDoubleRegister(instr->result()); |
@@ -2209,7 +2202,6 @@ void LCodeGen::DoBranch(LBranch* instr) { |
__ cmp(reg, Operand::Zero()); |
EmitBranch(true_block, false_block, ne); |
} else if (r.IsDouble()) { |
- CpuFeatureScope scope(masm(), VFP2); |
DwVfpRegister reg = ToDoubleRegister(instr->value()); |
Register scratch = scratch0(); |
@@ -2301,7 +2293,6 @@ void LCodeGen::DoBranch(LBranch* instr) { |
} |
if (expected.Contains(ToBooleanStub::HEAP_NUMBER)) { |
- CpuFeatureScope scope(masm(), VFP2); |
// heap number -> false iff +0, -0, or NaN. |
DwVfpRegister dbl_scratch = double_scratch0(); |
Label not_heap_number; |
@@ -2381,7 +2372,6 @@ void LCodeGen::DoCmpIDAndBranch(LCmpIDAndBranch* instr) { |
EmitGoto(next_block); |
} else { |
if (instr->is_double()) { |
- CpuFeatureScope scope(masm(), VFP2); |
// Compare left and right operands as doubles and load the |
// resulting flags into the normal status register. |
__ VFPCompareAndSetFlags(ToDoubleRegister(left), ToDoubleRegister(right)); |
@@ -2936,8 +2926,7 @@ void LCodeGen::DoReturn(LReturn* instr) { |
__ push(r0); |
__ CallRuntime(Runtime::kTraceExit, 1); |
} |
- if (info()->saves_caller_doubles() && CpuFeatures::IsSupported(VFP2)) { |
- CpuFeatureScope scope(masm(), VFP2); |
+ if (info()->saves_caller_doubles()) { |
ASSERT(NeedsEagerFrame()); |
BitVector* doubles = chunk()->allocated_double_registers(); |
BitVector::Iterator save_iterator(doubles); |
@@ -3319,58 +3308,11 @@ void LCodeGen::DoLoadKeyedExternalArray(LLoadKeyed* instr) { |
? Operand(constant_key << element_size_shift) |
: Operand(key, LSL, shift_size); |
__ add(scratch0(), external_pointer, operand); |
- if (CpuFeatures::IsSupported(VFP2)) { |
- CpuFeatureScope scope(masm(), VFP2); |
- if (elements_kind == EXTERNAL_FLOAT_ELEMENTS) { |
- __ vldr(kScratchDoubleReg.low(), scratch0(), additional_offset); |
- __ vcvt_f64_f32(result, kScratchDoubleReg.low()); |
- } else { // i.e. elements_kind == EXTERNAL_DOUBLE_ELEMENTS |
- __ vldr(result, scratch0(), additional_offset); |
- } |
- } else { |
- if (elements_kind == EXTERNAL_FLOAT_ELEMENTS) { |
- Register value = external_pointer; |
- __ ldr(value, MemOperand(scratch0(), additional_offset)); |
- __ and_(sfpd_lo, value, Operand(kBinary32MantissaMask)); |
- |
- __ mov(scratch0(), Operand(value, LSR, kBinary32MantissaBits)); |
- __ and_(scratch0(), scratch0(), |
- Operand(kBinary32ExponentMask >> kBinary32MantissaBits)); |
- |
- Label exponent_rebiased; |
- __ teq(scratch0(), Operand(0x00)); |
- __ b(eq, &exponent_rebiased); |
- |
- __ teq(scratch0(), Operand(0xff)); |
- __ mov(scratch0(), Operand(0x7ff), LeaveCC, eq); |
- __ b(eq, &exponent_rebiased); |
- |
- // Rebias exponent. |
- __ add(scratch0(), |
- scratch0(), |
- Operand(-kBinary32ExponentBias + HeapNumber::kExponentBias)); |
- |
- __ bind(&exponent_rebiased); |
- __ and_(sfpd_hi, value, Operand(kBinary32SignMask)); |
- __ orr(sfpd_hi, sfpd_hi, |
- Operand(scratch0(), LSL, HeapNumber::kMantissaBitsInTopWord)); |
- |
- // Shift mantissa. |
- static const int kMantissaShiftForHiWord = |
- kBinary32MantissaBits - HeapNumber::kMantissaBitsInTopWord; |
- |
- static const int kMantissaShiftForLoWord = |
- kBitsPerInt - kMantissaShiftForHiWord; |
- |
- __ orr(sfpd_hi, sfpd_hi, |
- Operand(sfpd_lo, LSR, kMantissaShiftForHiWord)); |
- __ mov(sfpd_lo, Operand(sfpd_lo, LSL, kMantissaShiftForLoWord)); |
- |
- } else { |
- __ ldr(sfpd_lo, MemOperand(scratch0(), additional_offset)); |
- __ ldr(sfpd_hi, MemOperand(scratch0(), |
- additional_offset + kPointerSize)); |
- } |
+ if (elements_kind == EXTERNAL_FLOAT_ELEMENTS) { |
+ __ vldr(kScratchDoubleReg.low(), scratch0(), additional_offset); |
+ __ vcvt_f64_f32(result, kScratchDoubleReg.low()); |
+ } else { // i.e. elements_kind == EXTERNAL_DOUBLE_ELEMENTS |
+ __ vldr(result, scratch0(), additional_offset); |
} |
} else { |
Register result = ToRegister(instr->result()); |
@@ -3444,23 +3386,12 @@ void LCodeGen::DoLoadKeyedFixedDoubleArray(LLoadKeyed* instr) { |
if (!key_is_constant) { |
__ add(elements, elements, Operand(key, LSL, shift_size)); |
} |
- if (CpuFeatures::IsSupported(VFP2)) { |
- CpuFeatureScope scope(masm(), VFP2); |
- __ add(elements, elements, Operand(base_offset)); |
- __ vldr(result, elements, 0); |
- if (instr->hydrogen()->RequiresHoleCheck()) { |
- __ ldr(scratch, MemOperand(elements, sizeof(kHoleNanLower32))); |
- __ cmp(scratch, Operand(kHoleNanUpper32)); |
- DeoptimizeIf(eq, instr->environment()); |
- } |
- } else { |
- __ ldr(sfpd_hi, MemOperand(elements, base_offset + kPointerSize)); |
- __ ldr(sfpd_lo, MemOperand(elements, base_offset)); |
- if (instr->hydrogen()->RequiresHoleCheck()) { |
- ASSERT(kPointerSize == sizeof(kHoleNanLower32)); |
- __ cmp(sfpd_hi, Operand(kHoleNanUpper32)); |
- DeoptimizeIf(eq, instr->environment()); |
- } |
+ __ add(elements, elements, Operand(base_offset)); |
+ __ vldr(result, elements, 0); |
+ if (instr->hydrogen()->RequiresHoleCheck()) { |
+ __ ldr(scratch, MemOperand(elements, sizeof(kHoleNanLower32))); |
+ __ cmp(scratch, Operand(kHoleNanUpper32)); |
+ DeoptimizeIf(eq, instr->environment()); |
} |
} |
@@ -3902,7 +3833,6 @@ void LCodeGen::EmitIntegerMathAbs(LUnaryMathOperation* instr) { |
void LCodeGen::DoMathAbs(LUnaryMathOperation* instr) { |
- CpuFeatureScope scope(masm(), VFP2); |
// Class for deferred case. |
class DeferredMathAbsTaggedHeapNumber: public LDeferredCode { |
public: |
@@ -3939,7 +3869,6 @@ void LCodeGen::DoMathAbs(LUnaryMathOperation* instr) { |
void LCodeGen::DoMathFloor(LUnaryMathOperation* instr) { |
- CpuFeatureScope scope(masm(), VFP2); |
DwVfpRegister input = ToDoubleRegister(instr->value()); |
Register result = ToRegister(instr->result()); |
Register input_high = scratch0(); |
@@ -3962,7 +3891,6 @@ void LCodeGen::DoMathFloor(LUnaryMathOperation* instr) { |
void LCodeGen::DoMathRound(LUnaryMathOperation* instr) { |
- CpuFeatureScope scope(masm(), VFP2); |
DwVfpRegister input = ToDoubleRegister(instr->value()); |
Register result = ToRegister(instr->result()); |
DwVfpRegister double_scratch1 = ToDoubleRegister(instr->temp()); |
@@ -4002,7 +3930,6 @@ void LCodeGen::DoMathRound(LUnaryMathOperation* instr) { |
void LCodeGen::DoMathSqrt(LUnaryMathOperation* instr) { |
- CpuFeatureScope scope(masm(), VFP2); |
DwVfpRegister input = ToDoubleRegister(instr->value()); |
DwVfpRegister result = ToDoubleRegister(instr->result()); |
__ vsqrt(result, input); |
@@ -4010,7 +3937,6 @@ void LCodeGen::DoMathSqrt(LUnaryMathOperation* instr) { |
void LCodeGen::DoMathPowHalf(LUnaryMathOperation* instr) { |
- CpuFeatureScope scope(masm(), VFP2); |
DwVfpRegister input = ToDoubleRegister(instr->value()); |
DwVfpRegister result = ToDoubleRegister(instr->result()); |
DwVfpRegister temp = ToDoubleRegister(instr->temp()); |
@@ -4032,7 +3958,6 @@ void LCodeGen::DoMathPowHalf(LUnaryMathOperation* instr) { |
void LCodeGen::DoPower(LPower* instr) { |
- CpuFeatureScope scope(masm(), VFP2); |
Representation exponent_type = instr->hydrogen()->right()->representation(); |
// Having marked this as a call, we can use any registers. |
// Just make sure that the input/output registers are the expected ones. |
@@ -4065,7 +3990,6 @@ void LCodeGen::DoPower(LPower* instr) { |
void LCodeGen::DoRandom(LRandom* instr) { |
- CpuFeatureScope scope(masm(), VFP2); |
class DeferredDoRandom: public LDeferredCode { |
public: |
DeferredDoRandom(LCodeGen* codegen, LRandom* instr) |
@@ -4144,7 +4068,6 @@ void LCodeGen::DoDeferredRandom(LRandom* instr) { |
void LCodeGen::DoMathExp(LMathExp* instr) { |
- CpuFeatureScope scope(masm(), VFP2); |
DwVfpRegister input = ToDoubleRegister(instr->value()); |
DwVfpRegister result = ToDoubleRegister(instr->result()); |
DwVfpRegister double_scratch1 = ToDoubleRegister(instr->double_temp()); |
@@ -4442,7 +4365,6 @@ void LCodeGen::DoBoundsCheck(LBoundsCheck* instr) { |
void LCodeGen::DoStoreKeyedExternalArray(LStoreKeyed* instr) { |
- CpuFeatureScope scope(masm(), VFP2); |
Register external_pointer = ToRegister(instr->elements()); |
Register key = no_reg; |
ElementsKind elements_kind = instr->elements_kind(); |
@@ -4513,7 +4435,6 @@ void LCodeGen::DoStoreKeyedExternalArray(LStoreKeyed* instr) { |
void LCodeGen::DoStoreKeyedFixedDoubleArray(LStoreKeyed* instr) { |
- CpuFeatureScope scope(masm(), VFP2); |
DwVfpRegister value = ToDoubleRegister(instr->value()); |
Register elements = ToRegister(instr->elements()); |
Register key = no_reg; |
@@ -4814,7 +4735,6 @@ void LCodeGen::DoStringLength(LStringLength* instr) { |
void LCodeGen::DoInteger32ToDouble(LInteger32ToDouble* instr) { |
- CpuFeatureScope scope(masm(), VFP2); |
LOperand* input = instr->value(); |
ASSERT(input->IsRegister() || input->IsStackSlot()); |
LOperand* output = instr->result(); |
@@ -4832,7 +4752,6 @@ void LCodeGen::DoInteger32ToDouble(LInteger32ToDouble* instr) { |
void LCodeGen::DoUint32ToDouble(LUint32ToDouble* instr) { |
- CpuFeatureScope scope(masm(), VFP2); |
LOperand* input = instr->value(); |
LOperand* output = instr->result(); |
@@ -4894,43 +4813,6 @@ void LCodeGen::DoNumberTagU(LNumberTagU* instr) { |
} |
-// Convert unsigned integer with specified number of leading zeroes in binary |
-// representation to IEEE 754 double. |
-// Integer to convert is passed in register src. |
-// Resulting double is returned in registers hiword:loword. |
-// This functions does not work correctly for 0. |
-static void GenerateUInt2Double(MacroAssembler* masm, |
- Register src, |
- Register hiword, |
- Register loword, |
- Register scratch, |
- int leading_zeroes) { |
- const int meaningful_bits = kBitsPerInt - leading_zeroes - 1; |
- const int biased_exponent = HeapNumber::kExponentBias + meaningful_bits; |
- |
- const int mantissa_shift_for_hi_word = |
- meaningful_bits - HeapNumber::kMantissaBitsInTopWord; |
- const int mantissa_shift_for_lo_word = |
- kBitsPerInt - mantissa_shift_for_hi_word; |
- masm->mov(scratch, Operand(biased_exponent << HeapNumber::kExponentShift)); |
- if (mantissa_shift_for_hi_word > 0) { |
- masm->mov(loword, Operand(src, LSL, mantissa_shift_for_lo_word)); |
- masm->orr(hiword, scratch, |
- Operand(src, LSR, mantissa_shift_for_hi_word)); |
- } else { |
- masm->mov(loword, Operand::Zero()); |
- masm->orr(hiword, scratch, |
- Operand(src, LSL, -mantissa_shift_for_hi_word)); |
- } |
- |
- // If least significant bit of biased exponent was not 1 it was corrupted |
- // by most significant bit of mantissa so we should fix that. |
- if (!(biased_exponent & 1)) { |
- masm->bic(hiword, hiword, Operand(1 << HeapNumber::kExponentShift)); |
- } |
-} |
- |
- |
void LCodeGen::DoDeferredNumberTagI(LInstruction* instr, |
LOperand* value, |
IntegerSignedness signedness) { |
@@ -4952,35 +4834,11 @@ void LCodeGen::DoDeferredNumberTagI(LInstruction* instr, |
__ SmiUntag(src, dst); |
__ eor(src, src, Operand(0x80000000)); |
} |
- if (CpuFeatures::IsSupported(VFP2)) { |
- CpuFeatureScope scope(masm(), VFP2); |
- __ vmov(flt_scratch, src); |
- __ vcvt_f64_s32(dbl_scratch, flt_scratch); |
- } else { |
- FloatingPointHelper::Destination dest = |
- FloatingPointHelper::kCoreRegisters; |
- FloatingPointHelper::ConvertIntToDouble(masm(), src, dest, d0, |
- sfpd_lo, sfpd_hi, |
- scratch0(), s0); |
- } |
+ __ vmov(flt_scratch, src); |
+ __ vcvt_f64_s32(dbl_scratch, flt_scratch); |
} else { |
- if (CpuFeatures::IsSupported(VFP2)) { |
- CpuFeatureScope scope(masm(), VFP2); |
- __ vmov(flt_scratch, src); |
- __ vcvt_f64_u32(dbl_scratch, flt_scratch); |
- } else { |
- Label no_leading_zero, convert_done; |
- __ tst(src, Operand(0x80000000)); |
- __ b(ne, &no_leading_zero); |
- |
- // Integer has one leading zeros. |
- GenerateUInt2Double(masm(), src, sfpd_hi, sfpd_lo, r9, 1); |
- __ b(&convert_done); |
- |
- __ bind(&no_leading_zero); |
- GenerateUInt2Double(masm(), src, sfpd_hi, sfpd_lo, r9, 0); |
- __ bind(&convert_done); |
- } |
+ __ vmov(flt_scratch, src); |
+ __ vcvt_f64_u32(dbl_scratch, flt_scratch); |
} |
if (FLAG_inline_new) { |
@@ -4996,30 +4854,16 @@ void LCodeGen::DoDeferredNumberTagI(LInstruction* instr, |
// TODO(3095996): Put a valid pointer value in the stack slot where the result |
// register is stored, as this register is in the pointer map, but contains an |
// integer value. |
- if (!CpuFeatures::IsSupported(VFP2)) { |
- // Preserve sfpd_lo. |
- __ mov(r9, sfpd_lo); |
- } |
__ mov(ip, Operand::Zero()); |
__ StoreToSafepointRegisterSlot(ip, dst); |
CallRuntimeFromDeferred(Runtime::kAllocateHeapNumber, 0, instr); |
__ Move(dst, r0); |
- if (!CpuFeatures::IsSupported(VFP2)) { |
- // Restore sfpd_lo. |
- __ mov(sfpd_lo, r9); |
- } |
__ sub(dst, dst, Operand(kHeapObjectTag)); |
// Done. Put the value in dbl_scratch into the value of the allocated heap |
// number. |
__ bind(&done); |
- if (CpuFeatures::IsSupported(VFP2)) { |
- CpuFeatureScope scope(masm(), VFP2); |
- __ vstr(dbl_scratch, dst, HeapNumber::kValueOffset); |
- } else { |
- __ str(sfpd_lo, MemOperand(dst, HeapNumber::kMantissaOffset)); |
- __ str(sfpd_hi, MemOperand(dst, HeapNumber::kExponentOffset)); |
- } |
+ __ vstr(dbl_scratch, dst, HeapNumber::kValueOffset); |
__ add(dst, dst, Operand(kHeapObjectTag)); |
__ StoreToSafepointRegisterSlot(dst, dst); |
} |
@@ -5052,45 +4896,19 @@ void LCodeGen::DoNumberTagD(LNumberTagD* instr) { |
Label no_special_nan_handling; |
Label done; |
if (convert_hole) { |
- if (CpuFeatures::IsSupported(VFP2)) { |
- CpuFeatureScope scope(masm(), VFP2); |
- DwVfpRegister input_reg = ToDoubleRegister(instr->value()); |
- __ VFPCompareAndSetFlags(input_reg, input_reg); |
- __ b(vc, &no_special_nan_handling); |
- __ vmov(reg, scratch0(), input_reg); |
- __ cmp(scratch0(), Operand(kHoleNanUpper32)); |
- Label canonicalize; |
- __ b(ne, &canonicalize); |
- __ Move(reg, factory()->the_hole_value()); |
- __ b(&done); |
- __ bind(&canonicalize); |
- __ Vmov(input_reg, |
- FixedDoubleArray::canonical_not_the_hole_nan_as_double(), |
- no_reg); |
- } else { |
- Label not_hole; |
- __ cmp(sfpd_hi, Operand(kHoleNanUpper32)); |
- __ b(ne, ¬_hole); |
- __ Move(reg, factory()->the_hole_value()); |
- __ b(&done); |
- __ bind(¬_hole); |
- __ and_(scratch, sfpd_hi, Operand(0x7ff00000)); |
- __ cmp(scratch, Operand(0x7ff00000)); |
- __ b(ne, &no_special_nan_handling); |
- Label special_nan_handling; |
- __ tst(sfpd_hi, Operand(0x000FFFFF)); |
- __ b(ne, &special_nan_handling); |
- __ cmp(sfpd_lo, Operand(0)); |
- __ b(eq, &no_special_nan_handling); |
- __ bind(&special_nan_handling); |
- double canonical_nan = |
- FixedDoubleArray::canonical_not_the_hole_nan_as_double(); |
- uint64_t casted_nan = BitCast<uint64_t>(canonical_nan); |
- __ mov(sfpd_lo, |
- Operand(static_cast<uint32_t>(casted_nan & 0xFFFFFFFF))); |
- __ mov(sfpd_hi, |
- Operand(static_cast<uint32_t>(casted_nan >> 32))); |
- } |
+ DwVfpRegister input_reg = ToDoubleRegister(instr->value()); |
+ __ VFPCompareAndSetFlags(input_reg, input_reg); |
+ __ b(vc, &no_special_nan_handling); |
+ __ vmov(reg, scratch0(), input_reg); |
+ __ cmp(scratch0(), Operand(kHoleNanUpper32)); |
+ Label canonicalize; |
+ __ b(ne, &canonicalize); |
+ __ Move(reg, factory()->the_hole_value()); |
+ __ b(&done); |
+ __ bind(&canonicalize); |
+ __ Vmov(input_reg, |
+ FixedDoubleArray::canonical_not_the_hole_nan_as_double(), |
+ no_reg); |
} |
__ bind(&no_special_nan_handling); |
@@ -5104,13 +4922,7 @@ void LCodeGen::DoNumberTagD(LNumberTagD* instr) { |
__ jmp(deferred->entry()); |
} |
__ bind(deferred->exit()); |
- if (CpuFeatures::IsSupported(VFP2)) { |
- CpuFeatureScope scope(masm(), VFP2); |
- __ vstr(input_reg, reg, HeapNumber::kValueOffset); |
- } else { |
- __ str(sfpd_lo, MemOperand(reg, HeapNumber::kValueOffset)); |
- __ str(sfpd_hi, MemOperand(reg, HeapNumber::kValueOffset + kPointerSize)); |
- } |
+ __ vstr(input_reg, reg, HeapNumber::kValueOffset); |
// Now that we have finished with the object's real address tag it |
__ add(reg, reg, Operand(kHeapObjectTag)); |
__ bind(&done); |
@@ -5160,7 +4972,6 @@ void LCodeGen::EmitNumberUntagD(Register input_reg, |
Register scratch = scratch0(); |
SwVfpRegister flt_scratch = double_scratch0().low(); |
ASSERT(!result_reg.is(double_scratch0())); |
- CpuFeatureScope scope(masm(), VFP2); |
Label load_smi, heap_number, done; |
@@ -5249,7 +5060,6 @@ void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr) { |
__ cmp(scratch1, Operand(ip)); |
if (instr->truncating()) { |
- CpuFeatureScope scope(masm(), VFP2); |
Register scratch3 = ToRegister(instr->temp2()); |
ASSERT(!scratch3.is(input_reg) && |
!scratch3.is(scratch1) && |
@@ -5270,8 +5080,8 @@ void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr) { |
__ sub(scratch1, input_reg, Operand(kHeapObjectTag)); |
__ vldr(double_scratch2, scratch1, HeapNumber::kValueOffset); |
- __ ECMAToInt32VFP(input_reg, double_scratch2, double_scratch, |
- scratch1, scratch2, scratch3); |
+ __ ECMAToInt32(input_reg, double_scratch2, double_scratch, |
+ scratch1, scratch2, scratch3); |
} else { |
CpuFeatureScope scope(masm(), VFP3); |
@@ -5369,8 +5179,8 @@ void LCodeGen::DoDoubleToI(LDoubleToI* instr) { |
if (instr->truncating()) { |
Register scratch3 = ToRegister(instr->temp2()); |
- __ ECMAToInt32VFP(result_reg, double_input, double_scratch, |
- scratch1, scratch2, scratch3); |
+ __ ECMAToInt32(result_reg, double_input, double_scratch, |
+ scratch1, scratch2, scratch3); |
} else { |
__ TryDoubleToInt32Exact(result_reg, double_input, double_scratch); |
// Deoptimize if the input wasn't a int32 (inside a double). |
@@ -5486,7 +5296,6 @@ void LCodeGen::DoCheckMaps(LCheckMaps* instr) { |
void LCodeGen::DoClampDToUint8(LClampDToUint8* instr) { |
- CpuFeatureScope vfp_scope(masm(), VFP2); |
DwVfpRegister value_reg = ToDoubleRegister(instr->unclamped()); |
Register result_reg = ToRegister(instr->result()); |
DwVfpRegister temp_reg = ToDoubleRegister(instr->temp()); |
@@ -5495,7 +5304,6 @@ void LCodeGen::DoClampDToUint8(LClampDToUint8* instr) { |
void LCodeGen::DoClampIToUint8(LClampIToUint8* instr) { |
- CpuFeatureScope scope(masm(), VFP2); |
Register unclamped_reg = ToRegister(instr->unclamped()); |
Register result_reg = ToRegister(instr->result()); |
__ ClampUint8(result_reg, unclamped_reg); |
@@ -5503,7 +5311,6 @@ void LCodeGen::DoClampIToUint8(LClampIToUint8* instr) { |
void LCodeGen::DoClampTToUint8(LClampTToUint8* instr) { |
- CpuFeatureScope scope(masm(), VFP2); |
Register scratch = scratch0(); |
Register input_reg = ToRegister(instr->unclamped()); |
Register result_reg = ToRegister(instr->result()); |