/external/v8/src/crankshaft/arm64/ |
H A D | lithium-codegen-arm64.h | 108 DoubleRegister double_scratch() { return crankshaft_fp_scratch; } function in class:v8::internal::LCodeGen
|
/external/v8/src/arm/ |
H A D | code-stubs-arm.cc | 87 LowDwVfpRegister double_scratch = kScratchDoubleReg; local 93 __ vldr(double_scratch, MemOperand(input_reg, double_offset)); 94 __ vmov(scratch_low, scratch_high, double_scratch); 97 __ vcvt_s32_f64(double_scratch.low(), double_scratch); 98 __ vmov(result_reg, double_scratch.low()); 686 const LowDwVfpRegister double_scratch = d3; local 702 __ TryDoubleToInt32Exact(scratch, double_exponent, double_scratch); 728 __ vmov(double_scratch, double_base); // Back up base. 738 __ vmul(double_result, double_result, double_scratch, c [all...] |
H A D | macro-assembler-arm.cc | 2447 LowDwVfpRegister double_scratch) { 2448 DCHECK(!double_input.is(double_scratch)); 2449 vcvt_s32_f64(double_scratch.low(), double_input); 2450 vcvt_f64_s32(double_scratch, double_scratch.low()); 2451 VFPCompareAndSetFlags(double_input, double_scratch); 2457 LowDwVfpRegister double_scratch) { 2458 DCHECK(!double_input.is(double_scratch)); 2459 vcvt_s32_f64(double_scratch.low(), double_input); 2460 vmov(result, double_scratch 3566 ClampDoubleToUint8(Register result_reg, DwVfpRegister input_reg, LowDwVfpRegister double_scratch) argument [all...] |
/external/v8/src/arm64/ |
H A D | code-stubs-arm64.cc | 74 DoubleRegister double_scratch = d0; // only used if !skip_fastpath() local 84 __ Push(double_scratch); 86 __ Ldr(double_scratch, MemOperand(input, double_offset)); 89 __ TryConvertDoubleToInt64(result, double_scratch, &done); 90 __ Fmov(result, double_scratch); 135 __ Pop(double_scratch); 145 FPRegister double_scratch, 214 __ Ldr(double_scratch, FieldMemOperand(right, HeapNumber::kValueOffset)); 215 __ Fcmp(double_scratch, double_scratch); 143 EmitIdenticalObjectComparison(MacroAssembler* masm, Register left, Register right, Register scratch, FPRegister double_scratch, Label* slow, Condition cond) argument [all...] |
/external/v8/src/ia32/ |
H A D | code-stubs-ia32.cc | 324 const XMMRegister double_scratch = xmm4; local 344 __ DoubleToI(exponent, double_exponent, double_scratch, 402 __ movsd(double_scratch, double_base); // Back up base. 417 __ movsd(double_result, double_scratch); 422 __ mulsd(double_scratch, double_scratch); 424 __ mulsd(double_result, double_scratch);
|
/external/v8/src/mips/ |
H A D | code-stubs-mips.cc | 90 DoubleRegister double_scratch = kLithiumScratchDouble; local 96 __ ldc1(double_scratch, MemOperand(input_reg, double_offset)); 103 __ Trunc_w_d(double_scratch, double_scratch); 105 __ mfc1(scratch3, double_scratch); 756 const DoubleRegister double_scratch = f6; local 777 double_scratch, 810 __ mov_d(double_scratch, double_base); // Back up base. 829 __ mul_d(double_result, double_result, double_scratch); 835 __ mul_d(double_scratch, double_scratc [all...] |
/external/v8/src/mips64/ |
H A D | code-stubs-mips64.cc | 89 DoubleRegister double_scratch = kLithiumScratchDouble; local 94 __ ldc1(double_scratch, MemOperand(input_reg, double_offset)); 101 __ Trunc_w_d(double_scratch, double_scratch); 103 __ mfc1(scratch3, double_scratch); 753 const DoubleRegister double_scratch = f6; local 774 double_scratch, 807 __ mov_d(double_scratch, double_base); // Back up base. 826 __ mul_d(double_result, double_result, double_scratch); 832 __ mul_d(double_scratch, double_scratc [all...] |
/external/v8/src/ppc/ |
H A D | code-stubs-ppc.cc | 81 DoubleRegister double_scratch = kScratchDoubleReg; local 89 __ lfd(double_scratch, MemOperand(input_reg, double_offset)); 92 __ ConvertDoubleToInt64(double_scratch, 728 const DoubleRegister double_scratch = d0; local 744 double_scratch); 772 __ fmr(double_scratch, double_base); // Back up base. 792 __ fmul(double_result, double_result, double_scratch); 796 __ fmul(double_scratch, double_scratch, double_scratch); [all...] |
H A D | macro-assembler-ppc.cc | 2165 DoubleRegister double_scratch) { 2166 TryDoubleToInt32Exact(scratch1, double_input, scratch2, double_scratch); 2208 DoubleRegister double_scratch) { 2210 DCHECK(!double_input.is(double_scratch)); 2216 result, double_scratch); 2226 fcfid(double_scratch, double_scratch); 2227 fcmpu(double_scratch, double_input); 2234 DoubleRegister double_scratch, Label* done, 2237 DCHECK(!double_input.is(double_scratch)); 2163 TestDoubleIsInt32(DoubleRegister double_input, Register scratch1, Register scratch2, DoubleRegister double_scratch) argument 2205 TryDoubleToInt32Exact(Register result, DoubleRegister double_input, Register scratch, DoubleRegister double_scratch) argument 2232 TryInt32Floor(Register result, DoubleRegister double_input, Register input_high, Register scratch, DoubleRegister double_scratch, Label* done, Label* exact) argument 2275 DoubleRegister double_scratch = kScratchDoubleReg; local 2321 DoubleRegister double_scratch = kScratchDoubleReg; local 3249 ClampDoubleToUint8(Register result_reg, DoubleRegister input_reg, DoubleRegister double_scratch) argument [all...] |
/external/v8/src/s390/ |
H A D | code-stubs-s390.cc | 79 DoubleRegister double_scratch = kScratchDoubleReg; local 87 __ LoadDouble(double_scratch, MemOperand(input_reg, double_offset)); 90 __ ConvertDoubleToInt64(double_scratch, 705 const DoubleRegister double_scratch = d0; local 721 double_scratch); 747 __ ldr(double_scratch, double_base); // Back up base. 763 __ mdbr(double_result, double_scratch); 768 __ mdbr(double_scratch, double_scratch); 776 __ ldr(double_scratch, double_resul [all...] |
H A D | macro-assembler-s390.cc | 1976 DoubleRegister double_scratch) { 1977 TryDoubleToInt32Exact(scratch1, double_input, scratch2, double_scratch); 2012 DoubleRegister double_scratch) { 2014 DCHECK(!double_input.is(double_scratch)); 2020 result, double_scratch); 2030 lgdr(scratch, double_scratch); 2031 cdfbr(double_scratch, scratch); 2032 cdbr(double_scratch, double_input); 2038 DoubleRegister double_scratch, Label* done, 2041 DCHECK(!double_input.is(double_scratch)); 1866 STATIC_ASSERT(Map::kInstanceTypeOffset < 4096); STATIC_ASSERT(LAST_TYPE < 256); LoadlB(type_reg, FieldMemOperand(map, Map::kInstanceTypeOffset)); CmpP(type_reg, Operand(type)); } void MacroAssembler::CompareRoot(Register obj, Heap::RootListIndex index) { CmpP(obj, MemOperand(kRootRegister, index << kPointerSizeLog2)); } void MacroAssembler::SmiToDouble(DoubleRegister value, Register smi) { SmiUntag(ip, smi); ConvertIntToDouble(ip, value); } void MacroAssembler::CompareMap(Register obj, Register scratch, Handle<Map> map, Label* early_success) { LoadP(scratch, FieldMemOperand(obj, HeapObject::kMapOffset)); CompareMap(obj, map, early_success); } void MacroAssembler::CompareMap(Register obj_map, Handle<Map> map, Label* early_success) { mov(r0, Operand(map)); CmpP(r0, FieldMemOperand(obj_map, HeapObject::kMapOffset)); } void MacroAssembler::CheckMap(Register obj, Register scratch, Handle<Map> map, Label* fail, SmiCheckType smi_check_type) { if (smi_check_type == DO_SMI_CHECK) { JumpIfSmi(obj, fail); } Label success; CompareMap(obj, scratch, map, &success); bne(fail); bind(&success); } void MacroAssembler::CheckMap(Register obj, Register scratch, Heap::RootListIndex index, Label* fail, SmiCheckType smi_check_type) { if (smi_check_type == DO_SMI_CHECK) { JumpIfSmi(obj, fail); } LoadP(scratch, FieldMemOperand(obj, HeapObject::kMapOffset)); CompareRoot(scratch, index); bne(fail); } void MacroAssembler::DispatchWeakMap(Register obj, Register scratch1, Register scratch2, Handle<WeakCell> cell, Handle<Code> success, SmiCheckType smi_check_type) { Label fail; if (smi_check_type == DO_SMI_CHECK) { JumpIfSmi(obj, &fail); } LoadP(scratch1, FieldMemOperand(obj, HeapObject::kMapOffset)); CmpWeakValue(scratch1, cell, scratch2); Jump(success, RelocInfo::CODE_TARGET, eq); bind(&fail); } void MacroAssembler::CmpWeakValue(Register value, Handle<WeakCell> cell, Register scratch, CRegister) { mov(scratch, Operand(cell)); CmpP(value, FieldMemOperand(scratch, WeakCell::kValueOffset)); } void MacroAssembler::GetWeakValue(Register value, Handle<WeakCell> cell) { mov(value, Operand(cell)); LoadP(value, FieldMemOperand(value, WeakCell::kValueOffset)); } void MacroAssembler::LoadWeakValue(Register value, Handle<WeakCell> cell, Label* miss) { GetWeakValue(value, cell); JumpIfSmi(value, miss); } void MacroAssembler::GetMapConstructor(Register result, Register map, Register temp, Register temp2) { Label done, loop; LoadP(result, FieldMemOperand(map, Map::kConstructorOrBackPointerOffset)); bind(&loop); JumpIfSmi(result, &done); CompareObjectType(result, temp, temp2, MAP_TYPE); bne(&done); LoadP(result, FieldMemOperand(result, Map::kConstructorOrBackPointerOffset)); b(&loop); bind(&done); } void MacroAssembler::CallStub(CodeStub* stub, TypeFeedbackId ast_id, Condition cond) { DCHECK(AllowThisStubCall(stub)); Call(stub->GetCode(), RelocInfo::CODE_TARGET, ast_id, cond); } void MacroAssembler::TailCallStub(CodeStub* stub, Condition cond) { Jump(stub->GetCode(), RelocInfo::CODE_TARGET, cond); } bool MacroAssembler::AllowThisStubCall(CodeStub* stub) { return has_frame_ || !stub->SometimesSetsUpAFrame(); } void MacroAssembler::TestDoubleIsInt32(DoubleRegister double_input, Register scratch1, Register scratch2, DoubleRegister double_scratch) { TryDoubleToInt32Exact(scratch1, double_input, scratch2, double_scratch); } void MacroAssembler::TestDoubleIsMinusZero(DoubleRegister input, Register scratch1, Register scratch2) { lgdr(scratch1, input); llihf(scratch2, Operand(0x80000000)); CmpP(scratch1, scratch2); } void MacroAssembler::TestDoubleSign(DoubleRegister input, Register scratch) { lgdr(scratch, input); cgfi(scratch, Operand::Zero()); } void MacroAssembler::TestHeapNumberSign(Register input, Register scratch) { LoadlW(scratch, FieldMemOperand(input, HeapNumber::kValueOffset + Register::kExponentOffset)); Cmp32(scratch, Operand::Zero()); } void MacroAssembler::TryDoubleToInt32Exact(Register result, DoubleRegister double_input, Register scratch, DoubleRegister double_scratch) { Label done; DCHECK(!double_input.is(double_scratch)); ConvertDoubleToInt64(double_input, scratch, result, double_scratch); TestIfInt32(result, r0); bne(&done); lgdr(scratch, double_scratch); cdfbr(double_scratch, scratch); cdbr(double_scratch, double_input); bind(&done); } void MacroAssembler::TryInt32Floor(Register result, DoubleRegister double_input, Register input_high, Register scratch, DoubleRegister double_scratch, Label* done, Label* exact) { DCHECK(!result.is(input_high)); DCHECK(!double_input.is(double_scratch)); Label exception; lay(sp, MemOperand(sp, -kDoubleSize)); StoreDouble(double_input, MemOperand(sp)); LoadlW(input_high, MemOperand(sp, Register::kExponentOffset)); la(sp, MemOperand(sp, kDoubleSize)); ExtractBitMask(result, input_high, HeapNumber::kExponentMask); CmpLogicalP(result, Operand(0x7ff)); beq(&exception); ConvertDoubleToInt64(double_input, scratch, result, double_scratch, kRoundToMinusInf); TestIfInt32(result, r0); bne(&exception); lgdr(scratch, double_scratch); cdfbr(double_scratch, scratch); cdbr(double_scratch, double_input); beq(exact); b(done); bind(&exception); } void MacroAssembler::TryInlineTruncateDoubleToI(Register result, DoubleRegister double_input, Label* done) { DoubleRegister double_scratch = kScratchDoubleReg; Register scratch = ip; ConvertDoubleToInt64(double_input, scratch, result, double_scratch); TestIfInt32(result, r0); beq(done); } void MacroAssembler::TruncateDoubleToI(Register result, DoubleRegister double_input) { Label done; TryInlineTruncateDoubleToI(result, double_input, &done); push(r14); lay(sp, MemOperand(sp, -kDoubleSize)); StoreDouble(double_input, MemOperand(sp)); DoubleToIStub stub(isolate(), sp, result, 0, true, true); CallStub(&stub); la(sp, MemOperand(sp, kDoubleSize)); pop(r14); bind(&done); } void MacroAssembler::TruncateHeapNumberToI(Register result, Register object) { Label done; DoubleRegister double_scratch = kScratchDoubleReg; DCHECK(!result.is(object)); LoadDouble(double_scratch, FieldMemOperand(object, HeapNumber::kValueOffset)); TryInlineTruncateDoubleToI(result, double_scratch, &done); push(r14); DoubleToIStub stub(isolate(), object, result, HeapNumber::kValueOffset - kHeapObjectTag, true, true); CallStub(&stub); pop(r14); bind(&done); } void MacroAssembler::TruncateNumberToI(Register object, Register result, Register heap_number_map, Register scratch1, Label* not_number) { Label done; DCHECK(!result.is(object)); UntagAndJumpIfSmi(result, object, &done); JumpIfNotHeapNumber(object, heap_number_map, scratch1, not_number); TruncateHeapNumberToI(result, object); bind(&done); } void MacroAssembler::GetLeastBitsFromSmi(Register dst, Register src, int num_least_bits) { if (CpuFeatures::IsSupported(GENERAL_INSTR_EXT)) { risbg(dst, src, Operand(64 - num_least_bits), Operand(63), Operand(64 - kSmiShift), true); } else { SmiUntag(dst, src); AndP(dst, Operand((1 << num_least_bits) - 1)); } } void MacroAssembler::GetLeastBitsFromInt32(Register dst, Register src, int num_least_bits) { AndP(dst, src, Operand((1 << num_least_bits) - 1)); } void MacroAssembler::CallRuntime(const Runtime::Function* f, int num_arguments, SaveFPRegsMode save_doubles) { CHECK(f->nargs < 0 || f->nargs == num_arguments); mov(r2, Operand(num_arguments)); mov(r3, Operand(ExternalReference(f, isolate()))); CEntryStub stub(isolate(), f->result_size, save_doubles); CallStub(&stub); } void MacroAssembler::CallExternalReference(const ExternalReference& ext, int num_arguments) { mov(r2, Operand(num_arguments)); mov(r3, Operand(ext)); CEntryStub stub(isolate(), 1); CallStub(&stub); } void MacroAssembler::TailCallRuntime(Runtime::FunctionId fid) { const Runtime::Function* function = Runtime::FunctionForId(fid); DCHECK_EQ(1, function->result_size); if (function->nargs >= 0) argument 2979 ClampDoubleToUint8(Register result_reg, DoubleRegister input_reg, DoubleRegister double_scratch) argument [all...] |
/external/v8/src/x64/ |
H A D | code-stubs-x64.cc | 216 const XMMRegister double_scratch = xmm4; local 236 __ DoubleToI(exponent, double_exponent, double_scratch, 294 __ Movsd(double_scratch, double_base); // Back up base. 309 __ Movsd(double_result, double_scratch); 314 __ Mulsd(double_scratch, double_scratch); 316 __ Mulsd(double_result, double_scratch);
|
/external/v8/src/crankshaft/arm/ |
H A D | lithium-codegen-arm.cc | 3875 DwVfpRegister double_scratch = double_scratch0(); local 3899 __ VFPCanonicalizeNaN(double_scratch, value); 3900 __ vstr(double_scratch, scratch, 0); 4523 LowDwVfpRegister double_scratch = double_scratch0(); local 4554 __ TryDoubleToInt32Exact(input_reg, double_scratch2, double_scratch); 4624 LowDwVfpRegister double_scratch = double_scratch0(); local 4629 __ TryDoubleToInt32Exact(result_reg, double_input, double_scratch); 4649 LowDwVfpRegister double_scratch = double_scratch0(); local 4654 __ TryDoubleToInt32Exact(result_reg, double_input, double_scratch);
|
/external/v8/src/crankshaft/mips/ |
H A D | lithium-codegen-mips.cc | 3835 DoubleRegister double_scratch = double_scratch0(); local 3867 __ ldc1(double_scratch, 3869 __ sdc1(double_scratch, MemOperand(scratch, 0)); 4494 DoubleRegister double_scratch = double_scratch0(); local 4523 __ ldc1(double_scratch, 4529 double_scratch, 4541 __ Mfhc1(scratch1, double_scratch);
|
/external/v8/src/crankshaft/mips64/ |
H A D | lithium-codegen-mips64.cc | 4056 DoubleRegister double_scratch = double_scratch0(); local 4086 __ FPUCanonicalizeNaN(double_scratch, value); 4087 __ sdc1(double_scratch, MemOperand(scratch, 0)); 4687 DoubleRegister double_scratch = double_scratch0(); local 4716 __ ldc1(double_scratch, 4722 double_scratch, 4734 __ mfhc1(scratch1, double_scratch); // Get exponent/sign bits.
|
/external/v8/src/crankshaft/ppc/ |
H A D | lithium-codegen-ppc.cc | 4167 DoubleRegister double_scratch = double_scratch0(); local 4197 __ CanonicalizeNaN(double_scratch, value); 4198 __ stfd(double_scratch, MemOperand(elements, base_offset)); 4823 DoubleRegister double_scratch = double_scratch0(); local 4854 double_scratch); 4922 DoubleRegister double_scratch = double_scratch0(); local 4928 double_scratch); 4947 DoubleRegister double_scratch = double_scratch0(); local 4953 double_scratch);
|
/external/v8/src/crankshaft/s390/ |
H A D | lithium-codegen-s390.cc | 4075 DoubleRegister double_scratch = double_scratch0(); local 4116 __ CanonicalizeNaN(double_scratch, value); 4119 __ StoreDouble(double_scratch, 4122 __ StoreDouble(double_scratch, MemOperand(elements, address_offset)); 4748 DoubleRegister double_scratch = double_scratch0(); local 4779 double_scratch); 4844 DoubleRegister double_scratch = double_scratch0(); local 4850 double_scratch); 4868 DoubleRegister double_scratch = double_scratch0(); local 4874 double_scratch); [all...] |