Lines Matching refs:__
64 #define __ down_cast<ArmAssembler*>(codegen->GetAssembler())-> // NOLINT macro
111 __ StoreDToOffset(d_reg, SP, stack_offset); in SaveContiguousSRegisterList()
113 __ add(IP, SP, ShifterOperand(stack_offset)); in SaveContiguousSRegisterList()
114 __ vstmiad(IP, d_reg, number_of_d_regs); in SaveContiguousSRegisterList()
150 __ LoadDFromOffset(d_reg, SP, stack_offset); in RestoreContiguousSRegisterList()
152 __ add(IP, SP, ShifterOperand(stack_offset)); in RestoreContiguousSRegisterList()
153 __ vldmiad(IP, d_reg, number_of_d_regs); in RestoreContiguousSRegisterList()
184 __ StoreList(RegList(core_spills), orig_offset); in SaveLiveRegisters()
226 __ LoadList(RegList(core_spills), orig_offset); in RestoreLiveRegisters()
252 __ Bind(GetEntryLabel()); in EmitNativeCode()
278 __ Bind(GetEntryLabel()); in EmitNativeCode()
298 __ Bind(GetEntryLabel()); in EmitNativeCode()
302 __ b(GetReturnLabel()); in EmitNativeCode()
304 __ b(arm_codegen->GetLabelOf(successor_)); in EmitNativeCode()
338 __ Bind(GetEntryLabel()); in EmitNativeCode()
382 __ Bind(GetEntryLabel()); in EmitNativeCode()
399 __ mov(entry_address, ShifterOperand(temp)); in EmitNativeCode()
403 __ LoadImmediate(calling_convention.GetRegisterAt(0), type_index.index_); in EmitNativeCode()
417 __ str(R0, Address(entry_address)); in EmitNativeCode()
423 __ BindTrackedLabel(&labels->movw_label); in EmitNativeCode()
424 __ movw(temp, /* placeholder */ 0u); in EmitNativeCode()
425 __ BindTrackedLabel(&labels->movt_label); in EmitNativeCode()
426 __ movt(temp, /* placeholder */ 0u); in EmitNativeCode()
427 __ BindTrackedLabel(&labels->add_pc_label); in EmitNativeCode()
428 __ add(temp, temp, ShifterOperand(PC)); in EmitNativeCode()
429 __ str(R0, Address(temp)); in EmitNativeCode()
438 __ b(GetExitLabel()); in EmitNativeCode()
471 __ Bind(GetEntryLabel()); in EmitNativeCode()
484 __ mov(entry_address, ShifterOperand(temp)); in EmitNativeCode()
488 __ LoadImmediate(calling_convention.GetRegisterAt(0), string_index.index_); in EmitNativeCode()
495 __ str(R0, Address(entry_address)); in EmitNativeCode()
501 __ BindTrackedLabel(&labels->movw_label); in EmitNativeCode()
502 __ movw(temp, /* placeholder */ 0u); in EmitNativeCode()
503 __ BindTrackedLabel(&labels->movt_label); in EmitNativeCode()
504 __ movt(temp, /* placeholder */ 0u); in EmitNativeCode()
505 __ BindTrackedLabel(&labels->add_pc_label); in EmitNativeCode()
506 __ add(temp, temp, ShifterOperand(PC)); in EmitNativeCode()
507 __ str(R0, Address(temp)); in EmitNativeCode()
513 __ b(GetExitLabel()); in EmitNativeCode()
533 __ Bind(GetEntryLabel()); in EmitNativeCode()
566 __ b(GetExitLabel()); in EmitNativeCode()
587 __ Bind(GetEntryLabel()); in EmitNativeCode()
591 __ LoadImmediate(calling_convention.GetRegisterAt(0), in EmitNativeCode()
609 __ Bind(GetEntryLabel()); in EmitNativeCode()
635 __ b(GetExitLabel()); in EmitNativeCode()
690 __ blx(entrypoint_.AsRegister<Register>()); in GenerateReadBarrierMarkRuntimeCall()
746 __ Bind(GetEntryLabel()); in EmitNativeCode()
748 __ b(GetExitLabel()); in EmitNativeCode()
820 __ Bind(GetEntryLabel()); in EmitNativeCode()
843 __ LoadFromOffset(kLoadWord, temp_, obj_, monitor_offset); in EmitNativeCode()
856 __ add(obj_, obj_, ShifterOperand(temp_, LSR, 32)); in EmitNativeCode()
874 __ Lsrs(temp_, temp_, LockWord::kReadBarrierStateShift + 1); in EmitNativeCode()
875 __ b(GetExitLabel(), CC); // Carry flag is the last bit shifted out by LSRS. in EmitNativeCode()
878 __ b(GetExitLabel()); in EmitNativeCode()
960 __ Bind(GetEntryLabel()); in EmitNativeCode()
964 __ LoadFromOffset(kLoadWord, temp1_, obj_, monitor_offset); in EmitNativeCode()
977 __ add(obj_, obj_, ShifterOperand(temp1_, LSR, 32)); in EmitNativeCode()
995 __ Lsrs(temp1_, temp1_, LockWord::kReadBarrierStateShift + 1); in EmitNativeCode()
996 __ b(GetExitLabel(), CC); // Carry flag is the last bit shifted out by LSRS. in EmitNativeCode()
1003 __ Mov(temp1_, ref_reg); in EmitNativeCode()
1015 __ cmp(temp1_, ShifterOperand(ref_reg)); in EmitNativeCode()
1016 __ b(GetExitLabel(), EQ); in EmitNativeCode()
1035 __ add(tmp_ptr, base, ShifterOperand(offset)); in EmitNativeCode()
1038 __ PoisonHeapReference(expected); in EmitNativeCode()
1043 __ PoisonHeapReference(value); in EmitNativeCode()
1052 __ Bind(&loop_head); in EmitNativeCode()
1054 __ ldrex(tmp, tmp_ptr); in EmitNativeCode()
1056 __ subs(tmp, tmp, ShifterOperand(expected)); in EmitNativeCode()
1058 __ it(NE); in EmitNativeCode()
1059 __ clrex(NE); in EmitNativeCode()
1061 __ b(&exit_loop, NE); in EmitNativeCode()
1063 __ strex(tmp, value, tmp_ptr); in EmitNativeCode()
1064 __ cmp(tmp, ShifterOperand(1)); in EmitNativeCode()
1065 __ b(&loop_head, EQ); in EmitNativeCode()
1067 __ Bind(&exit_loop); in EmitNativeCode()
1070 __ UnpoisonHeapReference(expected); in EmitNativeCode()
1075 __ UnpoisonHeapReference(value); in EmitNativeCode()
1079 __ b(GetExitLabel()); in EmitNativeCode()
1151 __ Bind(GetEntryLabel()); in EmitNativeCode()
1188 __ Mov(free_reg, index_reg); in EmitNativeCode()
1201 __ Lsl(index_reg, index_reg, TIMES_4); in EmitNativeCode()
1205 __ AddConstant(index_reg, index_reg, offset_); in EmitNativeCode()
1244 __ LoadImmediate(calling_convention.GetRegisterAt(2), offset_); in EmitNativeCode()
1252 __ b(GetExitLabel()); in EmitNativeCode()
1304 __ Bind(GetEntryLabel()); in EmitNativeCode()
1318 __ b(GetExitLabel()); in EmitNativeCode()
1406 __ mov(out, in); in GenerateDataProcInstruction()
1410 __ add(out, first, second); in GenerateDataProcInstruction()
1413 __ and_(out, first, second); in GenerateDataProcInstruction()
1416 __ orr(out, first, second); in GenerateDataProcInstruction()
1419 __ sub(out, first, second); in GenerateDataProcInstruction()
1422 __ eor(out, first, second); in GenerateDataProcInstruction()
1443 __ adds(out_lo, first_lo, second_lo); in GenerateDataProc()
1444 __ adc(out_hi, first_hi, second_hi); in GenerateDataProc()
1446 __ subs(out_lo, first_lo, second_lo); in GenerateDataProc()
1447 __ sbc(out_hi, first_hi, second_hi); in GenerateDataProc()
1528 __ Lsl(IP, second_hi, shift_value); in GenerateLongDataProc()
1529 __ orr(IP, IP, ShifterOperand(second_lo, LSR, 32 - shift_value)); in GenerateLongDataProc()
1559 __ Lsr(IP, second_lo, shift_value); in GenerateLongDataProc()
1560 __ orr(IP, IP, ShifterOperand(second_hi, LSL, 32 - shift_value)); in GenerateLongDataProc()
1594 __ vcmpsz(lhs_loc.AsFpuRegister<SRegister>()); in GenerateVcmp()
1597 __ vcmpdz(FromLowSToD(lhs_loc.AsFpuRegisterPairLow<SRegister>())); in GenerateVcmp()
1601 __ vcmps(lhs_loc.AsFpuRegister<SRegister>(), rhs_loc.AsFpuRegister<SRegister>()); in GenerateVcmp()
1604 __ vcmpd(FromLowSToD(lhs_loc.AsFpuRegisterPairLow<SRegister>()), in GenerateVcmp()
1640 __ CmpConstant(left_high, High32Bits(value)); in GenerateLongTestConstant()
1641 __ it(EQ); in GenerateLongTestConstant()
1642 __ cmp(left_low, ShifterOperand(Low32Bits(value)), EQ); in GenerateLongTestConstant()
1649 __ cmp(left_low, ShifterOperand(left_low)); in GenerateLongTestConstant()
1669 __ CmpConstant(left_low, Low32Bits(value)); in GenerateLongTestConstant()
1670 __ sbcs(IP, left_high, ShifterOperand(High32Bits(value))); in GenerateLongTestConstant()
1707 __ cmp(left.AsRegisterPairHigh<Register>(), in GenerateLongTest()
1709 __ it(EQ); in GenerateLongTest()
1710 __ cmp(left.AsRegisterPairLow<Register>(), in GenerateLongTest()
1732 __ cmp(left.AsRegisterPairLow<Register>(), in GenerateLongTest()
1734 __ sbcs(IP, in GenerateLongTest()
1767 __ vmstat(); in GenerateTest()
1776 __ cmp(left, ShifterOperand(right.AsRegister<Register>())); in GenerateTest()
1779 __ CmpConstant(left, CodeGenerator::GetInt32ValueOf(right.GetConstant())); in GenerateTest()
1890 #undef __
1892 #define __ down_cast<ArmAssembler*>(GetAssembler())-> // NOLINT macro
1921 __ StoreToOffset(kStoreWord, static_cast<Register>(reg_id), SP, stack_index); in SaveCoreRegister()
1926 __ LoadFromOffset(kLoadWord, static_cast<Register>(reg_id), SP, stack_index); in RestoreCoreRegister()
1931 __ StoreSToOffset(static_cast<SRegister>(reg_id), SP, stack_index); in SaveFloatingPointRegister()
1936 __ LoadSFromOffset(static_cast<SRegister>(reg_id), SP, stack_index); in RestoreFloatingPointRegister()
1980 __ FinalizeCode(); in Finalize()
1986 uint32_t new_position = __ GetAdjustedPosition(old_position); in Finalize()
1992 frame_entry_interval->start = __ GetAdjustedPosition(frame_entry_interval->start); in Finalize()
1993 frame_entry_interval->end = __ GetAdjustedPosition(frame_entry_interval->end); in Finalize()
1995 it.second.start = __ GetAdjustedPosition(it.second.start); in Finalize()
1996 it.second.end = __ GetAdjustedPosition(it.second.end); in Finalize()
1999 it.code_interval.start = __ GetAdjustedPosition(it.code_interval.start); in Finalize()
2000 it.code_interval.end = __ GetAdjustedPosition(it.code_interval.end); in Finalize()
2066 __ Bind(&frame_entry_label_); in GenerateFrameEntry()
2073 __ AddConstant(IP, SP, -static_cast<int32_t>(GetStackOverflowReservedBytes(kArm))); in GenerateFrameEntry()
2074 __ LoadFromOffset(kLoadWord, IP, IP, 0); in GenerateFrameEntry()
2078 __ PushList(core_spill_mask_); in GenerateFrameEntry()
2079 __ cfi().AdjustCFAOffset(kArmWordSize * POPCOUNT(core_spill_mask_)); in GenerateFrameEntry()
2080 __ cfi().RelOffsetForMany(DWARFReg(kMethodRegisterArgument), 0, core_spill_mask_, kArmWordSize); in GenerateFrameEntry()
2083 __ vpushs(start_register, POPCOUNT(fpu_spill_mask_)); in GenerateFrameEntry()
2084 __ cfi().AdjustCFAOffset(kArmWordSize * POPCOUNT(fpu_spill_mask_)); in GenerateFrameEntry()
2085 __ cfi().RelOffsetForMany(DWARFReg(S0), 0, fpu_spill_mask_, kArmWordSize); in GenerateFrameEntry()
2090 __ mov(IP, ShifterOperand(0)); in GenerateFrameEntry()
2091 __ StoreToOffset(kStoreWord, IP, SP, -kShouldDeoptimizeFlagSize); in GenerateFrameEntry()
2095 __ AddConstant(SP, -adjust); in GenerateFrameEntry()
2096 __ cfi().AdjustCFAOffset(adjust); in GenerateFrameEntry()
2102 __ StoreToOffset(kStoreWord, kMethodRegisterArgument, SP, 0); in GenerateFrameEntry()
2108 __ bx(LR); in GenerateFrameExit()
2111 __ cfi().RememberState(); in GenerateFrameExit()
2113 __ AddConstant(SP, adjust); in GenerateFrameExit()
2114 __ cfi().AdjustCFAOffset(-adjust); in GenerateFrameExit()
2117 __ vpops(start_register, POPCOUNT(fpu_spill_mask_)); in GenerateFrameExit()
2118 __ cfi().AdjustCFAOffset(-static_cast<int>(kArmPointerSize) * POPCOUNT(fpu_spill_mask_)); in GenerateFrameExit()
2119 __ cfi().RestoreMany(DWARFReg(SRegister(0)), fpu_spill_mask_); in GenerateFrameExit()
2124 __ PopList(pop_mask); in GenerateFrameExit()
2125 __ cfi().RestoreState(); in GenerateFrameExit()
2126 __ cfi().DefCFAOffset(GetFrameSize()); in GenerateFrameExit()
2131 __ BindTrackedLabel(label); in Bind()
2250 __ Mov(destination.AsRegister<Register>(), source.AsRegister<Register>()); in Move32()
2252 __ vmovrs(destination.AsRegister<Register>(), source.AsFpuRegister<SRegister>()); in Move32()
2254 __ LoadFromOffset(kLoadWord, destination.AsRegister<Register>(), SP, source.GetStackIndex()); in Move32()
2258 __ vmovsr(destination.AsFpuRegister<SRegister>(), source.AsRegister<Register>()); in Move32()
2260 __ vmovs(destination.AsFpuRegister<SRegister>(), source.AsFpuRegister<SRegister>()); in Move32()
2262 __ LoadSFromOffset(destination.AsFpuRegister<SRegister>(), SP, source.GetStackIndex()); in Move32()
2267 __ StoreToOffset(kStoreWord, source.AsRegister<Register>(), SP, destination.GetStackIndex()); in Move32()
2269 __ StoreSToOffset(source.AsFpuRegister<SRegister>(), SP, destination.GetStackIndex()); in Move32()
2272 __ LoadFromOffset(kLoadWord, IP, SP, source.GetStackIndex()); in Move32()
2273 __ StoreToOffset(kStoreWord, IP, SP, destination.GetStackIndex()); in Move32()
2294 __ vmovrrd(destination.AsRegisterPairLow<Register>(), in Move64()
2300 __ LoadFromOffset(kLoadWordPair, destination.AsRegisterPairLow<Register>(), in Move64()
2305 __ LoadDFromOffset(FromLowSToD(destination.AsFpuRegisterPairLow<SRegister>()), in Move64()
2309 __ vmovdrr(FromLowSToD(destination.AsFpuRegisterPairLow<SRegister>()), in Move64()
2321 __ StoreToOffset(kStoreWord, R1, SP, destination.GetStackIndex()); in Move64()
2322 __ StoreToOffset(kStoreWord, R2, SP, destination.GetHighStackIndex(kArmWordSize)); in Move64()
2324 __ StoreToOffset(kStoreWordPair, source.AsRegisterPairLow<Register>(), in Move64()
2328 __ StoreDToOffset(FromLowSToD(source.AsFpuRegisterPairLow<SRegister>()), in Move64()
2346 __ LoadImmediate(location.AsRegister<Register>(), value); in MoveConstant()
2385 __ LoadFromOffset(kLoadWord, LR, TR, entry_point_offset); in GenerateInvokeRuntime()
2386 __ blx(LR); in GenerateInvokeRuntime()
2406 __ b(codegen_->GetLabelOf(successor)); in HandleGoto()
2487 __ CmpConstant(left_high, val_high); in GenerateLongComparesAndJumps()
2489 __ b(true_label, ARMCondition(true_high_cond)); in GenerateLongComparesAndJumps()
2491 __ b(false_label, ARMCondition(false_high_cond)); in GenerateLongComparesAndJumps()
2493 __ b(true_label, ARMCondition(true_high_cond)); in GenerateLongComparesAndJumps()
2494 __ b(false_label, ARMCondition(false_high_cond)); in GenerateLongComparesAndJumps()
2497 __ CmpConstant(left_low, val_low); in GenerateLongComparesAndJumps()
2502 __ cmp(left_high, ShifterOperand(right_high)); in GenerateLongComparesAndJumps()
2504 __ b(true_label, ARMCondition(true_high_cond)); in GenerateLongComparesAndJumps()
2506 __ b(false_label, ARMCondition(false_high_cond)); in GenerateLongComparesAndJumps()
2508 __ b(true_label, ARMCondition(true_high_cond)); in GenerateLongComparesAndJumps()
2509 __ b(false_label, ARMCondition(false_high_cond)); in GenerateLongComparesAndJumps()
2512 __ cmp(left_low, ShifterOperand(right_low)); in GenerateLongComparesAndJumps()
2516 __ b(true_label, final_condition); in GenerateLongComparesAndJumps()
2543 __ b(non_fallthrough_target, cond.first); in GenerateCompareTestAndBranch()
2547 __ b(false_target_in); in GenerateCompareTestAndBranch()
2563 __ b(false_target); in GenerateCompareTestAndBranch()
2567 __ Bind(&fallthrough_target); in GenerateCompareTestAndBranch()
2584 __ b(true_target); in GenerateTestAndBranch()
2589 __ b(false_target); in GenerateTestAndBranch()
2608 __ CompareAndBranchIfZero(cond_val.AsRegister<Register>(), false_target); in GenerateTestAndBranch()
2610 __ CompareAndBranchIfNonZero(cond_val.AsRegister<Register>(), true_target); in GenerateTestAndBranch()
2643 __ CompareAndBranchIfZero(left, non_fallthrough_target); in GenerateTestAndBranch()
2646 __ CompareAndBranchIfNonZero(left, non_fallthrough_target); in GenerateTestAndBranch()
2650 __ cmp(left, ShifterOperand(right.AsRegister<Register>())); in GenerateTestAndBranch()
2653 __ CmpConstant(left, CodeGenerator::GetInt32ValueOf(right.GetConstant())); in GenerateTestAndBranch()
2656 __ b(non_fallthrough_target, arm_cond); in GenerateTestAndBranch()
2663 __ b(false_target); in GenerateTestAndBranch()
2711 __ LoadFromOffset(kLoadWord, in VisitShouldDeoptimizeFlag()
2793 __ CmpConstant(locations->InAt(2).AsRegister<Register>(), 0); in VisitSelect()
2809 __ it(cond.first); in VisitSelect()
2810 __ mov(out.AsRegister<Register>(), operand, cond.first); in VisitSelect()
2828 __ it(cond.first); in VisitSelect()
2829 __ mov(out.AsRegisterPairLow<Register>(), operand_low, cond.first); in VisitSelect()
2830 __ it(cond.first); in VisitSelect()
2831 __ mov(out.AsRegisterPairHigh<Register>(), operand_high, cond.first); in VisitSelect()
2859 __ Bind(&select_end); in VisitSelect()
2872 __ nop(); in GenerateNop()
2916 __ it(condition.first); in HandleCondition()
2917 __ mov(out, ShifterOperand(1), condition.first); in HandleCondition()
2918 __ it(condition.second); in HandleCondition()
2919 __ mov(out, ShifterOperand(0), condition.second); in HandleCondition()
2933 __ Bind(&false_label); in HandleCondition()
2934 __ LoadImmediate(out, 0); in HandleCondition()
2935 __ b(final_label); in HandleCondition()
2938 __ Bind(&true_label); in HandleCondition()
2939 __ LoadImmediate(out, 1); in HandleCondition()
2945 __ mov(out, ShifterOperand(0), AL, kCcKeep); in HandleCondition()
2946 __ b(final_label, condition.second); in HandleCondition()
2947 __ LoadImmediate(out, 1); in HandleCondition()
2951 __ Bind(&done_label); in HandleCondition()
3208 __ LoadImmediate(hidden_reg, invoke->GetDexMethodIndex()); in VisitInvokeInterface()
3211 __ LoadFromOffset(kLoadWord, temp, SP, receiver.GetStackIndex()); in VisitInvokeInterface()
3213 __ LoadFromOffset(kLoadWord, temp, temp, class_offset); in VisitInvokeInterface()
3216 __ LoadFromOffset(kLoadWord, temp, receiver.AsRegister<Register>(), class_offset); in VisitInvokeInterface()
3226 __ MaybeUnpoisonHeapReference(temp); in VisitInvokeInterface()
3227 __ LoadFromOffset(kLoadWord, temp, temp, in VisitInvokeInterface()
3232 __ LoadFromOffset(kLoadWord, temp, temp, method_offset); in VisitInvokeInterface()
3236 __ LoadFromOffset(kLoadWord, LR, temp, entry_point); in VisitInvokeInterface()
3238 __ blx(LR); in VisitInvokeInterface()
3284 __ rsb(out.AsRegister<Register>(), in.AsRegister<Register>(), ShifterOperand(0)); in VisitNeg()
3290 __ rsbs(out.AsRegisterPairLow<Register>(), in VisitNeg()
3299 __ sbc(out.AsRegisterPairHigh<Register>(), in VisitNeg()
3303 __ sub(out.AsRegisterPairHigh<Register>(), in VisitNeg()
3310 __ vnegs(out.AsFpuRegister<SRegister>(), in.AsFpuRegister<SRegister>()); in VisitNeg()
3315 __ vnegd(FromLowSToD(out.AsFpuRegisterPairLow<SRegister>()), in VisitNeg()
3555 __ sbfx(out.AsRegister<Register>(), in.AsRegisterPairLow<Register>(), 0, 8); in VisitTypeConversion()
3563 __ sbfx(out.AsRegister<Register>(), in.AsRegister<Register>(), 0, 8); in VisitTypeConversion()
3576 __ sbfx(out.AsRegister<Register>(), in.AsRegisterPairLow<Register>(), 0, 16); in VisitTypeConversion()
3584 __ sbfx(out.AsRegister<Register>(), in.AsRegister<Register>(), 0, 16); in VisitTypeConversion()
3599 __ Mov(out.AsRegister<Register>(), in.AsRegisterPairLow<Register>()); in VisitTypeConversion()
3601 __ LoadFromOffset(kLoadWord, out.AsRegister<Register>(), SP, in.GetStackIndex()); in VisitTypeConversion()
3606 __ LoadImmediate(out.AsRegister<Register>(), static_cast<int32_t>(value)); in VisitTypeConversion()
3613 __ vcvtis(temp, in.AsFpuRegister<SRegister>()); in VisitTypeConversion()
3614 __ vmovrs(out.AsRegister<Register>(), temp); in VisitTypeConversion()
3621 __ vcvtid(temp_s, FromLowSToD(in.AsFpuRegisterPairLow<SRegister>())); in VisitTypeConversion()
3622 __ vmovrs(out.AsRegister<Register>(), temp_s); in VisitTypeConversion()
3643 __ Mov(out.AsRegisterPairLow<Register>(), in.AsRegister<Register>()); in VisitTypeConversion()
3645 __ Asr(out.AsRegisterPairHigh<Register>(), in VisitTypeConversion()
3672 __ ubfx(out.AsRegister<Register>(), in.AsRegisterPairLow<Register>(), 0, 16); in VisitTypeConversion()
3680 __ ubfx(out.AsRegister<Register>(), in.AsRegister<Register>(), 0, 16); in VisitTypeConversion()
3698 __ vmovsr(out.AsFpuRegister<SRegister>(), in.AsRegister<Register>()); in VisitTypeConversion()
3699 __ vcvtsi(out.AsFpuRegister<SRegister>(), out.AsFpuRegister<SRegister>()); in VisitTypeConversion()
3711 __ vcvtsd(out.AsFpuRegister<SRegister>(), in VisitTypeConversion()
3730 __ vmovsr(out.AsFpuRegisterPairLow<SRegister>(), in.AsRegister<Register>()); in VisitTypeConversion()
3731 __ vcvtdi(FromLowSToD(out.AsFpuRegisterPairLow<SRegister>()), in VisitTypeConversion()
3748 __ vmovsr(temp_s, high); in VisitTypeConversion()
3749 __ vcvtdi(temp_d, temp_s); in VisitTypeConversion()
3751 __ LoadDImmediate(constant_d, bit_cast<double, int64_t>(k2Pow32EncodingForDouble)); in VisitTypeConversion()
3753 __ vmovsr(out_s, low); in VisitTypeConversion()
3754 __ vcvtdu(out_d, out_s); in VisitTypeConversion()
3756 __ vmlad(out_d, temp_d, constant_d); in VisitTypeConversion()
3762 __ vcvtds(FromLowSToD(out.AsFpuRegisterPairLow<SRegister>()), in VisitTypeConversion()
3817 __ add(out.AsRegister<Register>(), in VisitAdd()
3821 __ AddConstant(out.AsRegister<Register>(), in VisitAdd()
3833 __ adds(out.AsRegisterPairLow<Register>(), in VisitAdd()
3836 __ adc(out.AsRegisterPairHigh<Register>(), in VisitAdd()
3844 __ vadds(out.AsFpuRegister<SRegister>(), in VisitAdd()
3850 __ vaddd(FromLowSToD(out.AsFpuRegisterPairLow<SRegister>()), in VisitAdd()
3897 __ sub(out.AsRegister<Register>(), in VisitSub()
3901 __ AddConstant(out.AsRegister<Register>(), in VisitSub()
3914 __ subs(out.AsRegisterPairLow<Register>(), in VisitSub()
3917 __ sbc(out.AsRegisterPairHigh<Register>(), in VisitSub()
3925 __ vsubs(out.AsFpuRegister<SRegister>(), in VisitSub()
3932 __ vsubd(FromLowSToD(out.AsFpuRegisterPairLow<SRegister>()), in VisitSub()
3976 __ mul(out.AsRegister<Register>(), in VisitMul()
4002 __ mul(IP, in1_lo, in2_hi); in VisitMul()
4004 __ mla(out_hi, in1_hi, in2_lo, IP); in VisitMul()
4006 __ umull(out_lo, IP, in1_lo, in2_lo); in VisitMul()
4008 __ add(out_hi, out_hi, ShifterOperand(IP)); in VisitMul()
4013 __ vmuls(out.AsFpuRegister<SRegister>(), in VisitMul()
4020 __ vmuld(FromLowSToD(out.AsFpuRegisterPairLow<SRegister>()), in VisitMul()
4045 __ LoadImmediate(out, 0); in DivRemOneOrMinusOne()
4048 __ Mov(out, dividend); in DivRemOneOrMinusOne()
4050 __ rsb(out, dividend, ShifterOperand(0)); in DivRemOneOrMinusOne()
4071 __ Lsr(temp, dividend, 32 - ctz_imm); in DivRemByPowerOfTwo()
4073 __ Asr(temp, dividend, 31); in DivRemByPowerOfTwo()
4074 __ Lsr(temp, temp, 32 - ctz_imm); in DivRemByPowerOfTwo()
4076 __ add(out, temp, ShifterOperand(dividend)); in DivRemByPowerOfTwo()
4079 __ Asr(out, out, ctz_imm); in DivRemByPowerOfTwo()
4081 __ rsb(out, out, ShifterOperand(0)); in DivRemByPowerOfTwo()
4084 __ ubfx(out, out, 0, ctz_imm); in DivRemByPowerOfTwo()
4085 __ sub(out, out, ShifterOperand(temp)); in DivRemByPowerOfTwo()
4107 __ LoadImmediate(temp1, magic); in GenerateDivRemWithAnyConstant()
4108 __ smull(temp2, temp1, dividend, temp1); in GenerateDivRemWithAnyConstant()
4111 __ add(temp1, temp1, ShifterOperand(dividend)); in GenerateDivRemWithAnyConstant()
4113 __ sub(temp1, temp1, ShifterOperand(dividend)); in GenerateDivRemWithAnyConstant()
4117 __ Asr(temp1, temp1, shift); in GenerateDivRemWithAnyConstant()
4121 __ sub(out, temp1, ShifterOperand(temp1, ASR, 31)); in GenerateDivRemWithAnyConstant()
4123 __ sub(temp1, temp1, ShifterOperand(temp1, ASR, 31)); in GenerateDivRemWithAnyConstant()
4125 __ LoadImmediate(temp2, imm); in GenerateDivRemWithAnyConstant()
4126 __ mls(out, temp1, temp2, dividend); in GenerateDivRemWithAnyConstant()
4228 __ sdiv(out.AsRegister<Register>(), in VisitDiv()
4258 __ vdivs(out.AsFpuRegister<SRegister>(), in VisitDiv()
4265 __ vdivd(FromLowSToD(out.AsFpuRegisterPairLow<SRegister>()), in VisitDiv()
4373 __ sdiv(temp, reg1, reg2); in VisitRem()
4374 __ mls(out.AsRegister<Register>(), temp, reg2, reg1); in VisitRem()
4429 __ CompareAndBranchIfZero(value.AsRegister<Register>(), slow_path->GetEntryLabel()); in VisitDivZeroCheck()
4433 __ b(slow_path->GetEntryLabel()); in VisitDivZeroCheck()
4440 __ orrs(IP, in VisitDivZeroCheck()
4443 __ b(slow_path->GetEntryLabel(), EQ); in VisitDivZeroCheck()
4447 __ b(slow_path->GetEntryLabel()); in VisitDivZeroCheck()
4470 __ Ror(out, in, rot); in HandleIntegerRotate()
4472 __ Mov(out, in); in HandleIntegerRotate()
4475 __ Ror(out, in, rhs.AsRegister<Register>()); in HandleIntegerRotate()
4504 __ Lsr(out_reg_hi, in_reg_hi, rot); in HandleLongRotate()
4505 __ orr(out_reg_hi, out_reg_hi, ShifterOperand(in_reg_lo, arm::LSL, kArmBitsPerWord - rot)); in HandleLongRotate()
4506 __ Lsr(out_reg_lo, in_reg_lo, rot); in HandleLongRotate()
4507 __ orr(out_reg_lo, out_reg_lo, ShifterOperand(in_reg_hi, arm::LSL, kArmBitsPerWord - rot)); in HandleLongRotate()
4509 __ Mov(out_reg_lo, in_reg_lo); in HandleLongRotate()
4510 __ Mov(out_reg_hi, in_reg_hi); in HandleLongRotate()
4519 __ and_(shift_right, rhs.AsRegister<Register>(), ShifterOperand(0x1F)); in HandleLongRotate()
4520 __ Lsrs(shift_left, rhs.AsRegister<Register>(), 6); in HandleLongRotate()
4521 __ rsb(shift_left, shift_right, ShifterOperand(kArmBitsPerWord), AL, kCcKeep); in HandleLongRotate()
4522 __ b(&shift_by_32_plus_shift_right, CC); in HandleLongRotate()
4526 __ Lsl(out_reg_hi, in_reg_hi, shift_left); in HandleLongRotate()
4527 __ Lsr(out_reg_lo, in_reg_lo, shift_right); in HandleLongRotate()
4528 __ add(out_reg_hi, out_reg_hi, ShifterOperand(out_reg_lo)); in HandleLongRotate()
4529 __ Lsl(out_reg_lo, in_reg_lo, shift_left); in HandleLongRotate()
4530 __ Lsr(shift_left, in_reg_hi, shift_right); in HandleLongRotate()
4531 __ add(out_reg_lo, out_reg_lo, ShifterOperand(shift_left)); in HandleLongRotate()
4532 __ b(final_label); in HandleLongRotate()
4534 __ Bind(&shift_by_32_plus_shift_right); // Shift by 32+shift_right. in HandleLongRotate()
4537 __ Lsr(out_reg_hi, in_reg_hi, shift_right); in HandleLongRotate()
4538 __ Lsl(out_reg_lo, in_reg_lo, shift_left); in HandleLongRotate()
4539 __ add(out_reg_hi, out_reg_hi, ShifterOperand(out_reg_lo)); in HandleLongRotate()
4540 __ Lsr(out_reg_lo, in_reg_lo, shift_right); in HandleLongRotate()
4541 __ Lsl(shift_right, in_reg_hi, shift_left); in HandleLongRotate()
4542 __ add(out_reg_lo, out_reg_lo, ShifterOperand(shift_right)); in HandleLongRotate()
4545 __ Bind(&end); in HandleLongRotate()
4650 __ and_(out_reg, second_reg, ShifterOperand(kMaxIntShiftDistance)); in HandleShift()
4652 __ Lsl(out_reg, first_reg, out_reg); in HandleShift()
4654 __ Asr(out_reg, first_reg, out_reg); in HandleShift()
4656 __ Lsr(out_reg, first_reg, out_reg); in HandleShift()
4662 __ Mov(out_reg, first_reg); in HandleShift()
4664 __ Lsl(out_reg, first_reg, shift_value); in HandleShift()
4666 __ Asr(out_reg, first_reg, shift_value); in HandleShift()
4668 __ Lsr(out_reg, first_reg, shift_value); in HandleShift()
4686 __ and_(o_l, second_reg, ShifterOperand(kMaxLongShiftDistance)); in HandleShift()
4688 __ Lsl(o_h, high, o_l); in HandleShift()
4690 __ rsb(temp, o_l, ShifterOperand(kArmBitsPerWord)); in HandleShift()
4691 __ Lsr(temp, low, temp); in HandleShift()
4692 __ orr(o_h, o_h, ShifterOperand(temp)); in HandleShift()
4694 __ subs(temp, o_l, ShifterOperand(kArmBitsPerWord)); in HandleShift()
4695 __ it(PL); in HandleShift()
4696 __ Lsl(o_h, low, temp, PL); in HandleShift()
4698 __ Lsl(o_l, low, o_l); in HandleShift()
4700 __ and_(o_h, second_reg, ShifterOperand(kMaxLongShiftDistance)); in HandleShift()
4702 __ Lsr(o_l, low, o_h); in HandleShift()
4704 __ rsb(temp, o_h, ShifterOperand(kArmBitsPerWord)); in HandleShift()
4705 __ Lsl(temp, high, temp); in HandleShift()
4706 __ orr(o_l, o_l, ShifterOperand(temp)); in HandleShift()
4708 __ subs(temp, o_h, ShifterOperand(kArmBitsPerWord)); in HandleShift()
4709 __ it(PL); in HandleShift()
4710 __ Asr(o_l, high, temp, PL); in HandleShift()
4712 __ Asr(o_h, high, o_h); in HandleShift()
4714 __ and_(o_h, second_reg, ShifterOperand(kMaxLongShiftDistance)); in HandleShift()
4716 __ Lsr(o_l, low, o_h); in HandleShift()
4717 __ rsb(temp, o_h, ShifterOperand(kArmBitsPerWord)); in HandleShift()
4718 __ Lsl(temp, high, temp); in HandleShift()
4719 __ orr(o_l, o_l, ShifterOperand(temp)); in HandleShift()
4720 __ subs(temp, o_h, ShifterOperand(kArmBitsPerWord)); in HandleShift()
4721 __ it(PL); in HandleShift()
4722 __ Lsr(o_l, high, temp, PL); in HandleShift()
4723 __ Lsr(o_h, high, o_h); in HandleShift()
4733 __ Lsl(o_h, low, shift_value - 32); in HandleShift()
4734 __ LoadImmediate(o_l, 0); in HandleShift()
4736 __ Asr(o_l, high, shift_value - 32); in HandleShift()
4737 __ Asr(o_h, high, 31); in HandleShift()
4739 __ Lsr(o_l, high, shift_value - 32); in HandleShift()
4740 __ LoadImmediate(o_h, 0); in HandleShift()
4744 __ mov(o_h, ShifterOperand(low)); in HandleShift()
4745 __ LoadImmediate(o_l, 0); in HandleShift()
4747 __ mov(o_l, ShifterOperand(high)); in HandleShift()
4748 __ Asr(o_h, high, 31); in HandleShift()
4750 __ mov(o_l, ShifterOperand(high)); in HandleShift()
4751 __ LoadImmediate(o_h, 0); in HandleShift()
4755 __ Lsls(o_l, low, 1); in HandleShift()
4756 __ adc(o_h, high, ShifterOperand(high)); in HandleShift()
4758 __ Asrs(o_h, high, 1); in HandleShift()
4759 __ Rrx(o_l, low); in HandleShift()
4761 __ Lsrs(o_h, high, 1); in HandleShift()
4762 __ Rrx(o_l, low); in HandleShift()
4767 __ Lsl(o_h, high, shift_value); in HandleShift()
4768 __ orr(o_h, o_h, ShifterOperand(low, LSR, 32 - shift_value)); in HandleShift()
4769 __ Lsl(o_l, low, shift_value); in HandleShift()
4771 __ Lsr(o_l, low, shift_value); in HandleShift()
4772 __ orr(o_l, o_l, ShifterOperand(high, LSL, 32 - shift_value)); in HandleShift()
4773 __ Asr(o_h, high, shift_value); in HandleShift()
4775 __ Lsr(o_l, low, shift_value); in HandleShift()
4776 __ orr(o_l, o_l, ShifterOperand(high, LSL, 32 - shift_value)); in HandleShift()
4777 __ Lsr(o_h, high, shift_value); in HandleShift()
4832 __ LoadFromOffset(kLoadWord, temp, TR, QUICK_ENTRY_POINT(pNewEmptyString)); in VisitNewInstance()
4833 __ LoadFromOffset(kLoadWord, LR, temp, code_offset.Int32Value()); in VisitNewInstance()
4834 __ blx(LR); in VisitNewInstance()
4901 __ mvn(out.AsRegister<Register>(), ShifterOperand(in.AsRegister<Register>())); in VisitNot()
4905 __ mvn(out.AsRegisterPairLow<Register>(), in VisitNot()
4907 __ mvn(out.AsRegisterPairHigh<Register>(), in VisitNot()
4927 __ eor(out.AsRegister<Register>(), in.AsRegister<Register>(), ShifterOperand(1)); in VisitBooleanNot()
4974 __ LoadImmediate(out, 0); in VisitCompare()
4975 __ cmp(left.AsRegister<Register>(), in VisitCompare()
4981 __ cmp(left.AsRegisterPairHigh<Register>(), in VisitCompare()
4983 __ b(&less, LT); in VisitCompare()
4984 __ b(&greater, GT); in VisitCompare()
4986 __ LoadImmediate(out, 0); in VisitCompare()
4987 __ cmp(left.AsRegisterPairLow<Register>(), in VisitCompare()
4994 __ LoadImmediate(out, 0); in VisitCompare()
4996 __ vmstat(); // transfer FP status register to ARM APSR. in VisitCompare()
5005 __ b(final_label, EQ); in VisitCompare()
5006 __ b(&less, less_cond); in VisitCompare()
5008 __ Bind(&greater); in VisitCompare()
5009 __ LoadImmediate(out, 1); in VisitCompare()
5010 __ b(final_label); in VisitCompare()
5012 __ Bind(&less); in VisitCompare()
5013 __ LoadImmediate(out, -1); in VisitCompare()
5016 __ Bind(&done); in VisitCompare()
5050 __ dmb(flavor); in GenerateMemoryBarrier()
5061 __ LoadImmediate(out_lo, offset); in GenerateWideAtomicLoad()
5062 __ add(IP, addr, ShifterOperand(out_lo)); in GenerateWideAtomicLoad()
5065 __ ldrexd(out_lo, out_hi, addr); in GenerateWideAtomicLoad()
5077 __ LoadImmediate(temp1, offset); in GenerateWideAtomicStore()
5078 __ add(IP, addr, ShifterOperand(temp1)); in GenerateWideAtomicStore()
5081 __ Bind(&fail); in GenerateWideAtomicStore()
5084 __ ldrexd(temp1, temp2, addr); in GenerateWideAtomicStore()
5086 __ strexd(temp1, value_lo, value_hi, addr); in GenerateWideAtomicStore()
5087 __ CompareAndBranchIfNonZero(temp1, &fail); in GenerateWideAtomicStore()
5156 __ StoreToOffset(kStoreByte, value.AsRegister<Register>(), base, offset); in HandleFieldSet()
5162 __ StoreToOffset(kStoreHalfword, value.AsRegister<Register>(), base, offset); in HandleFieldSet()
5174 __ Mov(temp, value.AsRegister<Register>()); in HandleFieldSet()
5175 __ PoisonHeapReference(temp); in HandleFieldSet()
5176 __ StoreToOffset(kStoreWord, temp, base, offset); in HandleFieldSet()
5178 __ StoreToOffset(kStoreWord, value.AsRegister<Register>(), base, offset); in HandleFieldSet()
5192 __ StoreToOffset(kStoreWordPair, value.AsRegisterPairLow<Register>(), base, offset); in HandleFieldSet()
5199 __ StoreSToOffset(value.AsFpuRegister<SRegister>(), base, offset); in HandleFieldSet()
5209 __ vmovrrd(value_reg_lo, value_reg_hi, value_reg); in HandleFieldSet()
5218 __ StoreDToOffset(value_reg, base, offset); in HandleFieldSet()
5393 __ LoadFromOffset(kLoadUnsignedByte, out.AsRegister<Register>(), base, offset); in HandleFieldGet()
5397 __ LoadFromOffset(kLoadSignedByte, out.AsRegister<Register>(), base, offset); in HandleFieldGet()
5401 __ LoadFromOffset(kLoadSignedHalfword, out.AsRegister<Register>(), base, offset); in HandleFieldGet()
5405 __ LoadFromOffset(kLoadUnsignedHalfword, out.AsRegister<Register>(), base, offset); in HandleFieldGet()
5409 __ LoadFromOffset(kLoadWord, out.AsRegister<Register>(), base, offset); in HandleFieldGet()
5424 __ LoadFromOffset(kLoadWord, out.AsRegister<Register>(), base, offset); in HandleFieldGet()
5443 __ LoadFromOffset(kLoadWordPair, out.AsRegisterPairLow<Register>(), base, offset); in HandleFieldGet()
5448 __ LoadSFromOffset(out.AsFpuRegister<SRegister>(), base, offset); in HandleFieldGet()
5458 __ vmovdrr(out_reg, lo, hi); in HandleFieldGet()
5460 __ LoadDFromOffset(out_reg, base, offset); in HandleFieldGet()
5599 __ LoadFromOffset(kLoadWord, IP, obj.AsRegister<Register>(), 0); in GenerateImplicitNullCheck()
5610 __ CompareAndBranchIfZero(obj.AsRegister<Register>(), slow_path->GetEntryLabel()); in GenerateExplicitNullCheck()
5677 __ ldrsb(out_loc.AsRegister<Register>(), mem_address, cond); in LoadFromShiftedRegOffset()
5680 __ ldrb(out_loc.AsRegister<Register>(), mem_address, cond); in LoadFromShiftedRegOffset()
5683 __ ldrsh(out_loc.AsRegister<Register>(), mem_address, cond); in LoadFromShiftedRegOffset()
5686 __ ldrh(out_loc.AsRegister<Register>(), mem_address, cond); in LoadFromShiftedRegOffset()
5690 __ ldr(out_loc.AsRegister<Register>(), mem_address, cond); in LoadFromShiftedRegOffset()
5713 __ strb(loc.AsRegister<Register>(), mem_address, cond); in StoreToShiftedRegOffset()
5717 __ strh(loc.AsRegister<Register>(), mem_address, cond); in StoreToShiftedRegOffset()
5721 __ str(loc.AsRegister<Register>(), mem_address, cond); in StoreToShiftedRegOffset()
5788 __ LoadFromOffset(kLoadWord, length, obj, count_offset); in VisitArrayGet()
5796 __ Lsrs(length, length, 1u); // LSRS has a 16-bit encoding, TST (immediate) does not. in VisitArrayGet()
5799 __ b(&uncompressed_load, CS); in VisitArrayGet()
5800 __ LoadFromOffset(kLoadUnsignedByte, in VisitArrayGet()
5804 __ b(final_label); in VisitArrayGet()
5805 __ Bind(&uncompressed_load); in VisitArrayGet()
5806 __ LoadFromOffset(GetLoadOperandType(Primitive::kPrimChar), in VisitArrayGet()
5811 __ Bind(&done); in VisitArrayGet()
5817 __ LoadFromOffset(load_type, out_loc.AsRegister<Register>(), obj, full_offset); in VisitArrayGet()
5832 __ add(temp, obj, ShifterOperand(data_offset)); in VisitArrayGet()
5837 __ Lsrs(length, length, 1u); // LSRS has a 16-bit encoding, TST (immediate) does not. in VisitArrayGet()
5840 __ b(&uncompressed_load, CS); in VisitArrayGet()
5841 __ ldrb(out_loc.AsRegister<Register>(), in VisitArrayGet()
5843 __ b(final_label); in VisitArrayGet()
5844 __ Bind(&uncompressed_load); in VisitArrayGet()
5845 __ ldrh(out_loc.AsRegister<Register>(), in VisitArrayGet()
5848 __ Bind(&done); in VisitArrayGet()
5879 __ LoadFromOffset(kLoadWord, out, obj, offset); in VisitArrayGet()
5898 __ add(temp, obj, ShifterOperand(data_offset)); in VisitArrayGet()
5917 __ LoadFromOffset(kLoadWordPair, out_loc.AsRegisterPairLow<Register>(), obj, offset); in VisitArrayGet()
5919 __ add(IP, obj, ShifterOperand(index.AsRegister<Register>(), LSL, TIMES_8)); in VisitArrayGet()
5920 __ LoadFromOffset(kLoadWordPair, out_loc.AsRegisterPairLow<Register>(), IP, data_offset); in VisitArrayGet()
5929 __ LoadSFromOffset(out, obj, offset); in VisitArrayGet()
5931 __ add(IP, obj, ShifterOperand(index.AsRegister<Register>(), LSL, TIMES_4)); in VisitArrayGet()
5932 __ LoadSFromOffset(out, IP, data_offset); in VisitArrayGet()
5941 __ LoadDFromOffset(FromLowSToD(out), obj, offset); in VisitArrayGet()
5943 __ add(IP, obj, ShifterOperand(index.AsRegister<Register>(), LSL, TIMES_8)); in VisitArrayGet()
5944 __ LoadDFromOffset(FromLowSToD(out), IP, data_offset); in VisitArrayGet()
6015 __ StoreToOffset(store_type, value_loc.AsRegister<Register>(), array, full_offset); in VisitArraySet()
6029 __ add(temp, array, ShifterOperand(data_offset)); in VisitArraySet()
6050 __ StoreToOffset(kStoreWord, value, array, offset); in VisitArraySet()
6053 __ add(IP, array, ShifterOperand(data_offset)); in VisitArraySet()
6082 __ CompareAndBranchIfNonZero(value, &non_zero); in VisitArraySet()
6086 __ StoreToOffset(kStoreWord, value, array, offset); in VisitArraySet()
6089 __ add(IP, array, ShifterOperand(data_offset)); in VisitArraySet()
6096 __ b(final_label); in VisitArraySet()
6097 __ Bind(&non_zero); in VisitArraySet()
6109 __ LoadFromOffset(kLoadWord, temp1, array, class_offset); in VisitArraySet()
6111 __ MaybeUnpoisonHeapReference(temp1); in VisitArraySet()
6114 __ LoadFromOffset(kLoadWord, temp1, temp1, component_offset); in VisitArraySet()
6116 __ LoadFromOffset(kLoadWord, temp2, value, class_offset); in VisitArraySet()
6119 __ cmp(temp1, ShifterOperand(temp2)); in VisitArraySet()
6123 __ b(&do_put, EQ); in VisitArraySet()
6126 __ MaybeUnpoisonHeapReference(temp1); in VisitArraySet()
6129 __ LoadFromOffset(kLoadWord, temp1, temp1, super_offset); in VisitArraySet()
6132 __ CompareAndBranchIfNonZero(temp1, slow_path->GetEntryLabel()); in VisitArraySet()
6133 __ Bind(&do_put); in VisitArraySet()
6135 __ b(slow_path->GetEntryLabel(), NE); in VisitArraySet()
6145 __ Mov(temp1, value); in VisitArraySet()
6146 __ PoisonHeapReference(temp1); in VisitArraySet()
6153 __ StoreToOffset(kStoreWord, source, array, offset); in VisitArraySet()
6157 __ add(IP, array, ShifterOperand(data_offset)); in VisitArraySet()
6171 __ Bind(&done); in VisitArraySet()
6175 __ Bind(slow_path->GetExitLabel()); in VisitArraySet()
6186 __ StoreToOffset(kStoreWordPair, value.AsRegisterPairLow<Register>(), array, offset); in VisitArraySet()
6188 __ add(IP, array, ShifterOperand(index.AsRegister<Register>(), LSL, TIMES_8)); in VisitArraySet()
6189 __ StoreToOffset(kStoreWordPair, value.AsRegisterPairLow<Register>(), IP, data_offset); in VisitArraySet()
6199 __ StoreSToOffset(value.AsFpuRegister<SRegister>(), array, offset); in VisitArraySet()
6201 __ add(IP, array, ShifterOperand(index.AsRegister<Register>(), LSL, TIMES_4)); in VisitArraySet()
6202 __ StoreSToOffset(value.AsFpuRegister<SRegister>(), IP, data_offset); in VisitArraySet()
6212 __ StoreDToOffset(FromLowSToD(value.AsFpuRegisterPairLow<SRegister>()), array, offset); in VisitArraySet()
6214 __ add(IP, array, ShifterOperand(index.AsRegister<Register>(), LSL, TIMES_8)); in VisitArraySet()
6215 __ StoreDToOffset(FromLowSToD(value.AsFpuRegisterPairLow<SRegister>()), IP, data_offset); in VisitArraySet()
6244 __ LoadFromOffset(kLoadWord, out, obj, offset); in VisitArrayLength()
6248 __ Lsr(out, out, 1u); in VisitArrayLength()
6268 __ add(out.AsRegister<Register>(), in VisitIntermediateAddress()
6272 __ AddConstant(out.AsRegister<Register>(), in VisitIntermediateAddress()
6314 __ b(slow_path->GetEntryLabel()); in VisitBoundsCheck()
6323 __ cmp(index_loc.AsRegister<Register>(), ShifterOperand(length)); in VisitBoundsCheck()
6325 __ b(slow_path->GetEntryLabel(), HS); in VisitBoundsCheck()
6330 __ cmp(length_loc.AsRegister<Register>(), ShifterOperand(index)); in VisitBoundsCheck()
6332 __ cmp(length_loc.AsRegister<Register>(), ShifterOperand(index_loc.AsRegister<Register>())); in VisitBoundsCheck()
6335 __ b(slow_path->GetEntryLabel(), LS); in VisitBoundsCheck()
6346 __ CompareAndBranchIfZero(value, &is_null); in MarkGCCard()
6348 __ LoadFromOffset(kLoadWord, card, TR, Thread::CardTableOffset<kArmPointerSize>().Int32Value()); in MarkGCCard()
6349 __ Lsr(temp, object, gc::accounting::CardTable::kCardShift); in MarkGCCard()
6350 __ strb(card, Address(card, temp)); in MarkGCCard()
6352 __ Bind(&is_null); in MarkGCCard()
6400 __ LoadFromOffset( in GenerateSuspendCheck()
6403 __ CompareAndBranchIfNonZero(IP, slow_path->GetEntryLabel()); in GenerateSuspendCheck()
6404 __ Bind(slow_path->GetReturnLabel()); in GenerateSuspendCheck()
6406 __ CompareAndBranchIfZero(IP, codegen_->GetLabelOf(successor)); in GenerateSuspendCheck()
6407 __ b(slow_path->GetEntryLabel()); in GenerateSuspendCheck()
6422 __ Mov(destination.AsRegister<Register>(), source.AsRegister<Register>()); in EmitMove()
6424 __ vmovsr(destination.AsFpuRegister<SRegister>(), source.AsRegister<Register>()); in EmitMove()
6427 __ StoreToOffset(kStoreWord, source.AsRegister<Register>(), in EmitMove()
6432 __ LoadFromOffset(kLoadWord, destination.AsRegister<Register>(), in EmitMove()
6435 __ LoadSFromOffset(destination.AsFpuRegister<SRegister>(), SP, source.GetStackIndex()); in EmitMove()
6438 __ LoadFromOffset(kLoadWord, IP, SP, source.GetStackIndex()); in EmitMove()
6439 __ StoreToOffset(kStoreWord, IP, SP, destination.GetStackIndex()); in EmitMove()
6443 __ vmovrs(destination.AsRegister<Register>(), source.AsFpuRegister<SRegister>()); in EmitMove()
6445 __ vmovs(destination.AsFpuRegister<SRegister>(), source.AsFpuRegister<SRegister>()); in EmitMove()
6448 __ StoreSToOffset(source.AsFpuRegister<SRegister>(), SP, destination.GetStackIndex()); in EmitMove()
6452 __ LoadDFromOffset(DTMP, SP, source.GetStackIndex()); in EmitMove()
6453 __ StoreDToOffset(DTMP, SP, destination.GetStackIndex()); in EmitMove()
6456 __ LoadFromOffset( in EmitMove()
6460 __ LoadDFromOffset(FromLowSToD(destination.AsFpuRegisterPairLow<SRegister>()), in EmitMove()
6466 __ Mov(destination.AsRegisterPairLow<Register>(), source.AsRegisterPairLow<Register>()); in EmitMove()
6467 __ Mov(destination.AsRegisterPairHigh<Register>(), source.AsRegisterPairHigh<Register>()); in EmitMove()
6469 __ vmovdrr(FromLowSToD(destination.AsFpuRegisterPairLow<SRegister>()), in EmitMove()
6475 __ StoreToOffset( in EmitMove()
6480 __ vmovrrd(destination.AsRegisterPairLow<Register>(), in EmitMove()
6484 __ vmovd(FromLowSToD(destination.AsFpuRegisterPairLow<SRegister>()), in EmitMove()
6488 __ StoreDToOffset(FromLowSToD(source.AsFpuRegisterPairLow<SRegister>()), in EmitMove()
6498 __ LoadImmediate(destination.AsRegister<Register>(), value); in EmitMove()
6501 __ LoadImmediate(IP, value); in EmitMove()
6502 __ StoreToOffset(kStoreWord, IP, SP, destination.GetStackIndex()); in EmitMove()
6507 __ LoadImmediate(destination.AsRegisterPairLow<Register>(), Low32Bits(value)); in EmitMove()
6508 __ LoadImmediate(destination.AsRegisterPairHigh<Register>(), High32Bits(value)); in EmitMove()
6511 __ LoadImmediate(IP, Low32Bits(value)); in EmitMove()
6512 __ StoreToOffset(kStoreWord, IP, SP, destination.GetStackIndex()); in EmitMove()
6513 __ LoadImmediate(IP, High32Bits(value)); in EmitMove()
6514 __ StoreToOffset(kStoreWord, IP, SP, destination.GetHighStackIndex(kArmWordSize)); in EmitMove()
6519 __ LoadDImmediate(FromLowSToD(destination.AsFpuRegisterPairLow<SRegister>()), value); in EmitMove()
6523 __ LoadImmediate(IP, Low32Bits(int_value)); in EmitMove()
6524 __ StoreToOffset(kStoreWord, IP, SP, destination.GetStackIndex()); in EmitMove()
6525 __ LoadImmediate(IP, High32Bits(int_value)); in EmitMove()
6526 __ StoreToOffset(kStoreWord, IP, SP, destination.GetHighStackIndex(kArmWordSize)); in EmitMove()
6532 __ LoadSImmediate(destination.AsFpuRegister<SRegister>(), value); in EmitMove()
6535 __ LoadImmediate(IP, bit_cast<int32_t, float>(value)); in EmitMove()
6536 __ StoreToOffset(kStoreWord, IP, SP, destination.GetStackIndex()); in EmitMove()
6543 __ Mov(IP, reg); in Exchange()
6544 __ LoadFromOffset(kLoadWord, reg, SP, mem); in Exchange()
6545 __ StoreToOffset(kStoreWord, IP, SP, mem); in Exchange()
6551 __ LoadFromOffset(kLoadWord, static_cast<Register>(ensure_scratch.GetRegister()), in Exchange()
6553 __ LoadFromOffset(kLoadWord, IP, SP, mem2 + stack_offset); in Exchange()
6554 __ StoreToOffset(kStoreWord, static_cast<Register>(ensure_scratch.GetRegister()), in Exchange()
6556 __ StoreToOffset(kStoreWord, IP, SP, mem1 + stack_offset); in Exchange()
6567 __ Mov(IP, source.AsRegister<Register>()); in EmitSwap()
6568 __ Mov(source.AsRegister<Register>(), destination.AsRegister<Register>()); in EmitSwap()
6569 __ Mov(destination.AsRegister<Register>(), IP); in EmitSwap()
6577 __ vmovrs(IP, source.AsFpuRegister<SRegister>()); in EmitSwap()
6578 __ vmovs(source.AsFpuRegister<SRegister>(), destination.AsFpuRegister<SRegister>()); in EmitSwap()
6579 __ vmovsr(destination.AsFpuRegister<SRegister>(), IP); in EmitSwap()
6581 __ vmovdrr(DTMP, source.AsRegisterPairLow<Register>(), source.AsRegisterPairHigh<Register>()); in EmitSwap()
6582 __ Mov(source.AsRegisterPairLow<Register>(), destination.AsRegisterPairLow<Register>()); in EmitSwap()
6583 __ Mov(source.AsRegisterPairHigh<Register>(), destination.AsRegisterPairHigh<Register>()); in EmitSwap()
6584 __ vmovrrd(destination.AsRegisterPairLow<Register>(), in EmitSwap()
6595 __ vmovdrr(DTMP, low_reg, static_cast<Register>(low_reg + 1)); in EmitSwap()
6596 __ LoadFromOffset(kLoadWordPair, low_reg, SP, mem); in EmitSwap()
6597 __ StoreDToOffset(DTMP, SP, mem); in EmitSwap()
6601 __ vmovd(DTMP, first); in EmitSwap()
6602 __ vmovd(first, second); in EmitSwap()
6603 __ vmovd(second, DTMP); in EmitSwap()
6611 __ vmovd(DTMP, reg); in EmitSwap()
6612 __ LoadDFromOffset(reg, SP, mem); in EmitSwap()
6613 __ StoreDToOffset(DTMP, SP, mem); in EmitSwap()
6621 __ vmovrs(IP, reg); in EmitSwap()
6622 __ LoadSFromOffset(reg, SP, mem); in EmitSwap()
6623 __ StoreToOffset(kStoreWord, IP, SP, mem); in EmitSwap()
6633 __ Push(static_cast<Register>(reg)); in SpillScratch()
6637 __ Pop(static_cast<Register>(reg)); in RestoreScratch()
6746 __ LoadLiteral(out, codegen_->DeduplicateBootImageTypeLiteral(cls->GetDexFile(), in VisitLoadClass()
6755 __ BindTrackedLabel(&labels->movw_label); in VisitLoadClass()
6756 __ movw(out, /* placeholder */ 0u); in VisitLoadClass()
6757 __ BindTrackedLabel(&labels->movt_label); in VisitLoadClass()
6758 __ movt(out, /* placeholder */ 0u); in VisitLoadClass()
6759 __ BindTrackedLabel(&labels->add_pc_label); in VisitLoadClass()
6760 __ add(out, out, ShifterOperand(PC)); in VisitLoadClass()
6768 __ LoadLiteral(out, codegen_->DeduplicateBootImageAddressLiteral(address)); in VisitLoadClass()
6777 __ BindTrackedLabel(&labels->movw_label); in VisitLoadClass()
6778 __ movw(temp, /* placeholder */ 0u); in VisitLoadClass()
6779 __ BindTrackedLabel(&labels->movt_label); in VisitLoadClass()
6780 __ movt(temp, /* placeholder */ 0u); in VisitLoadClass()
6781 __ BindTrackedLabel(&labels->add_pc_label); in VisitLoadClass()
6782 __ add(temp, temp, ShifterOperand(PC)); in VisitLoadClass()
6788 __ LoadLiteral(out, codegen_->DeduplicateJitClassLiteral(cls->GetDexFile(), in VisitLoadClass()
6807 __ CompareAndBranchIfZero(out, slow_path->GetEntryLabel()); in VisitLoadClass()
6812 __ Bind(slow_path->GetExitLabel()); in VisitLoadClass()
6837 __ LoadFromOffset(kLoadWord, IP, class_reg, mirror::Class::StatusOffset().Int32Value()); in GenerateClassInitializationCheck()
6838 __ cmp(IP, ShifterOperand(mirror::Class::kStatusInitialized)); in GenerateClassInitializationCheck()
6839 __ b(slow_path->GetEntryLabel(), LT); in GenerateClassInitializationCheck()
6842 __ dmb(ISH); in GenerateClassInitializationCheck()
6843 __ Bind(slow_path->GetExitLabel()); in GenerateClassInitializationCheck()
6907 __ LoadLiteral(out, codegen_->DeduplicateBootImageStringLiteral(load->GetDexFile(), in VisitLoadString()
6915 __ BindTrackedLabel(&labels->movw_label); in VisitLoadString()
6916 __ movw(out, /* placeholder */ 0u); in VisitLoadString()
6917 __ BindTrackedLabel(&labels->movt_label); in VisitLoadString()
6918 __ movt(out, /* placeholder */ 0u); in VisitLoadString()
6919 __ BindTrackedLabel(&labels->add_pc_label); in VisitLoadString()
6920 __ add(out, out, ShifterOperand(PC)); in VisitLoadString()
6927 __ LoadLiteral(out, codegen_->DeduplicateBootImageAddressLiteral(address)); in VisitLoadString()
6937 __ BindTrackedLabel(&labels->movw_label); in VisitLoadString()
6938 __ movw(temp, /* placeholder */ 0u); in VisitLoadString()
6939 __ BindTrackedLabel(&labels->movt_label); in VisitLoadString()
6940 __ movt(temp, /* placeholder */ 0u); in VisitLoadString()
6941 __ BindTrackedLabel(&labels->add_pc_label); in VisitLoadString()
6942 __ add(temp, temp, ShifterOperand(PC)); in VisitLoadString()
6946 __ CompareAndBranchIfZero(out, slow_path->GetEntryLabel()); in VisitLoadString()
6947 __ Bind(slow_path->GetExitLabel()); in VisitLoadString()
6951 __ LoadLiteral(out, codegen_->DeduplicateJitStringLiteral(load->GetDexFile(), in VisitLoadString()
6966 __ LoadImmediate(calling_convention.GetRegisterAt(0), load->GetStringIndex().index_); in VisitLoadString()
6983 __ LoadFromOffset(kLoadWord, out, TR, GetExceptionTlsOffset()); in VisitLoadException()
6991 __ LoadImmediate(IP, 0); in VisitClearException()
6992 __ StoreToOffset(kStoreWord, IP, TR, GetExceptionTlsOffset()); in VisitClearException()
7084 __ LoadImmediate(out, 0); in VisitInstanceOf()
7085 __ CompareAndBranchIfZero(obj, final_label); in VisitInstanceOf()
7098 __ cmp(out, ShifterOperand(cls)); in VisitInstanceOf()
7101 __ mov(out, ShifterOperand(0), AL, kCcKeep); in VisitInstanceOf()
7107 __ it(EQ); in VisitInstanceOf()
7108 __ mov(out, ShifterOperand(1), EQ); in VisitInstanceOf()
7110 __ b(final_label, NE); in VisitInstanceOf()
7111 __ LoadImmediate(out, 1); in VisitInstanceOf()
7128 __ Bind(&loop); in VisitInstanceOf()
7136 __ CompareAndBranchIfZero(out, final_label); in VisitInstanceOf()
7137 __ cmp(out, ShifterOperand(cls)); in VisitInstanceOf()
7138 __ b(&loop, NE); in VisitInstanceOf()
7139 __ LoadImmediate(out, 1); in VisitInstanceOf()
7153 __ Bind(&loop); in VisitInstanceOf()
7154 __ cmp(out, ShifterOperand(cls)); in VisitInstanceOf()
7155 __ b(&success, EQ); in VisitInstanceOf()
7164 __ cmp(out, ShifterOperand(1)); in VisitInstanceOf()
7165 __ b(&loop, HS); in VisitInstanceOf()
7175 __ Bind(&success); in VisitInstanceOf()
7179 __ it(EQ); in VisitInstanceOf()
7180 __ mov(out, ShifterOperand(1), EQ); in VisitInstanceOf()
7183 __ b(final_label); in VisitInstanceOf()
7184 __ Bind(&success); in VisitInstanceOf()
7185 __ LoadImmediate(out, 1); in VisitInstanceOf()
7201 __ cmp(out, ShifterOperand(cls)); in VisitInstanceOf()
7202 __ b(&exact_check, EQ); in VisitInstanceOf()
7211 __ CompareAndBranchIfZero(out, final_label); in VisitInstanceOf()
7212 __ LoadFromOffset(kLoadUnsignedHalfword, out, out, primitive_offset); in VisitInstanceOf()
7214 __ cmp(out, ShifterOperand(0)); in VisitInstanceOf()
7217 __ mov(out, ShifterOperand(0), AL, kCcKeep); in VisitInstanceOf()
7223 __ Bind(&exact_check); in VisitInstanceOf()
7224 __ it(EQ); in VisitInstanceOf()
7225 __ mov(out, ShifterOperand(1), EQ); in VisitInstanceOf()
7227 __ b(final_label, NE); in VisitInstanceOf()
7228 __ Bind(&exact_check); in VisitInstanceOf()
7229 __ LoadImmediate(out, 1); in VisitInstanceOf()
7244 __ cmp(out, ShifterOperand(cls)); in VisitInstanceOf()
7249 __ b(slow_path->GetEntryLabel(), NE); in VisitInstanceOf()
7250 __ LoadImmediate(out, 1); in VisitInstanceOf()
7278 __ b(slow_path->GetEntryLabel()); in VisitInstanceOf()
7284 __ Bind(&done); in VisitInstanceOf()
7288 __ Bind(slow_path->GetExitLabel()); in VisitInstanceOf()
7361 __ CompareAndBranchIfZero(obj, final_label); in VisitCheckCast()
7375 __ cmp(temp, ShifterOperand(cls)); in VisitCheckCast()
7378 __ b(type_check_slow_path->GetEntryLabel(), NE); in VisitCheckCast()
7394 __ Bind(&loop); in VisitCheckCast()
7404 __ CompareAndBranchIfZero(temp, type_check_slow_path->GetEntryLabel()); in VisitCheckCast()
7407 __ cmp(temp, ShifterOperand(cls)); in VisitCheckCast()
7408 __ b(&loop, NE); in VisitCheckCast()
7423 __ Bind(&loop); in VisitCheckCast()
7424 __ cmp(temp, ShifterOperand(cls)); in VisitCheckCast()
7425 __ b(final_label, EQ); in VisitCheckCast()
7436 __ CompareAndBranchIfZero(temp, type_check_slow_path->GetEntryLabel()); in VisitCheckCast()
7438 __ b(&loop); in VisitCheckCast()
7452 __ cmp(temp, ShifterOperand(cls)); in VisitCheckCast()
7453 __ b(final_label, EQ); in VisitCheckCast()
7463 __ CompareAndBranchIfZero(temp, type_check_slow_path->GetEntryLabel()); in VisitCheckCast()
7466 __ LoadFromOffset(kLoadUnsignedHalfword, temp, temp, primitive_offset); in VisitCheckCast()
7468 __ CompareAndBranchIfNonZero(temp, type_check_slow_path->GetEntryLabel()); in VisitCheckCast()
7482 __ b(type_check_slow_path->GetEntryLabel()); in VisitCheckCast()
7504 __ ldr(maybe_temp2_loc.AsRegister<Register>(), Address(temp, array_length_offset)); in VisitCheckCast()
7507 __ Bind(&start_loop); in VisitCheckCast()
7508 __ CompareAndBranchIfZero(maybe_temp2_loc.AsRegister<Register>(), in VisitCheckCast()
7510 __ ldr(maybe_temp3_loc.AsRegister<Register>(), Address(temp, object_array_data_offset)); in VisitCheckCast()
7511 __ MaybeUnpoisonHeapReference(maybe_temp3_loc.AsRegister<Register>()); in VisitCheckCast()
7513 __ add(temp, temp, ShifterOperand(2 * kHeapReferenceSize)); in VisitCheckCast()
7514 __ sub(maybe_temp2_loc.AsRegister<Register>(), in VisitCheckCast()
7518 __ cmp(cls, ShifterOperand(maybe_temp3_loc.AsRegister<Register>())); in VisitCheckCast()
7519 __ b(&start_loop, NE); in VisitCheckCast()
7525 __ Bind(&done); in VisitCheckCast()
7528 __ Bind(type_check_slow_path->GetExitLabel()); in VisitCheckCast()
7601 __ bic(out_reg, first_reg, second_reg); in VisitBitwiseNegatedRight()
7604 __ orn(out_reg, first_reg, second_reg); in VisitBitwiseNegatedRight()
7625 __ bic(out_low, first_low, second_low); in VisitBitwiseNegatedRight()
7626 __ bic(out_high, first_high, second_high); in VisitBitwiseNegatedRight()
7629 __ orn(out_low, first_low, second_low); in VisitBitwiseNegatedRight()
7630 __ orn(out_high, first_high, second_high); in VisitBitwiseNegatedRight()
7702 __ mov(out, ShifterOperand(first)); in GenerateAndConst()
7707 __ mov(out, ShifterOperand(0)); in GenerateAndConst()
7711 if (__ ShifterOperandCanHold(kNoRegister, kNoRegister, AND, value, &so)) { in GenerateAndConst()
7712 __ and_(out, first, so); in GenerateAndConst()
7713 } else if (__ ShifterOperandCanHold(kNoRegister, kNoRegister, BIC, ~value, &so)) { in GenerateAndConst()
7714 __ bic(out, first, ShifterOperand(~value)); in GenerateAndConst()
7717 __ ubfx(out, first, 0, WhichPowerOf2(value + 1)); in GenerateAndConst()
7725 __ mov(out, ShifterOperand(first)); in GenerateOrrConst()
7730 __ mvn(out, ShifterOperand(0)); in GenerateOrrConst()
7734 if (__ ShifterOperandCanHold(kNoRegister, kNoRegister, ORR, value, &so)) { in GenerateOrrConst()
7735 __ orr(out, first, so); in GenerateOrrConst()
7737 DCHECK(__ ShifterOperandCanHold(kNoRegister, kNoRegister, ORN, ~value, &so)); in GenerateOrrConst()
7738 __ orn(out, first, ShifterOperand(~value)); in GenerateOrrConst()
7746 __ mov(out, ShifterOperand(first)); in GenerateEorConst()
7750 __ eor(out, first, ShifterOperand(value)); in GenerateEorConst()
7764 __ mov(out_low, ShifterOperand(first_low)); in GenerateAddLongConst()
7766 __ AddConstant(out_high, first_high, value_high); in GenerateAddLongConst()
7769 __ AddConstantSetFlags(out_low, first_low, value_low); in GenerateAddLongConst()
7771 if (__ ShifterOperandCanHold(out_high, first_high, ADC, value_high, kCcDontCare, &so)) { in GenerateAddLongConst()
7772 __ adc(out_high, first_high, so); in GenerateAddLongConst()
7773 } else if (__ ShifterOperandCanHold(out_low, first_low, SBC, ~value_high, kCcDontCare, &so)) { in GenerateAddLongConst()
7774 __ sbc(out_high, first_high, so); in GenerateAddLongConst()
7828 __ and_(out_reg, first_reg, second_reg); in HandleBitwiseOperation()
7830 __ orr(out_reg, first_reg, second_reg); in HandleBitwiseOperation()
7833 __ eor(out_reg, first_reg, second_reg); in HandleBitwiseOperation()
7844 __ and_(out_low, first_low, second_low); in HandleBitwiseOperation()
7845 __ and_(out_high, first_high, second_high); in HandleBitwiseOperation()
7847 __ orr(out_low, first_low, second_low); in HandleBitwiseOperation()
7848 __ orr(out_high, first_high, second_high); in HandleBitwiseOperation()
7851 __ eor(out_low, first_low, second_low); in HandleBitwiseOperation()
7852 __ eor(out_high, first_high, second_high); in HandleBitwiseOperation()
7877 __ Mov(maybe_temp.AsRegister<Register>(), out_reg); in GenerateReferenceLoadOneRegister()
7879 __ LoadFromOffset(kLoadWord, out_reg, out_reg, offset); in GenerateReferenceLoadOneRegister()
7885 __ LoadFromOffset(kLoadWord, out_reg, out_reg, offset); in GenerateReferenceLoadOneRegister()
7886 __ MaybeUnpoisonHeapReference(out_reg); in GenerateReferenceLoadOneRegister()
7910 __ LoadFromOffset(kLoadWord, out_reg, obj_reg, offset); in GenerateReferenceLoadTwoRegisters()
7916 __ LoadFromOffset(kLoadWord, out_reg, obj_reg, offset); in GenerateReferenceLoadTwoRegisters()
7917 __ MaybeUnpoisonHeapReference(out_reg); in GenerateReferenceLoadTwoRegisters()
7958 __ LoadFromOffset(kLoadWord, temp.AsRegister<Register>(), TR, entry_point_offset); in GenerateGcRootFieldLoad()
7961 __ LoadFromOffset(kLoadWord, root_reg, obj, offset); in GenerateGcRootFieldLoad()
7972 __ CompareAndBranchIfNonZero(temp.AsRegister<Register>(), slow_path->GetEntryLabel()); in GenerateGcRootFieldLoad()
7973 __ Bind(slow_path->GetExitLabel()); in GenerateGcRootFieldLoad()
7978 __ AddConstant(root_reg, obj, offset); in GenerateGcRootFieldLoad()
7985 __ LoadFromOffset(kLoadWord, root_reg, obj, offset); in GenerateGcRootFieldLoad()
8112 __ LoadFromOffset(kLoadWord, temp3.AsRegister<Register>(), TR, entry_point_offset); in GenerateReferenceLoadWithBakerReadBarrier()
8115 __ CompareAndBranchIfNonZero(temp3.AsRegister<Register>(), slow_path->GetEntryLabel()); in GenerateReferenceLoadWithBakerReadBarrier()
8118 __ Bind(slow_path->GetExitLabel()); in GenerateReferenceLoadWithBakerReadBarrier()
8138 __ LoadFromOffset(kLoadWord, ref_reg, obj, computed_offset); in GenerateRawReferenceLoad()
8147 __ add(IP, obj, ShifterOperand(index_reg, LSL, scale_factor)); in GenerateRawReferenceLoad()
8148 __ LoadFromOffset(kLoadWord, ref_reg, IP, offset); in GenerateRawReferenceLoad()
8152 __ LoadFromOffset(kLoadWord, ref_reg, obj, offset); in GenerateRawReferenceLoad()
8160 __ MaybeUnpoisonHeapReference(ref_reg); in GenerateRawReferenceLoad()
8186 __ b(slow_path->GetEntryLabel()); in GenerateReadBarrierSlow()
8187 __ Bind(slow_path->GetExitLabel()); in GenerateReadBarrierSlow()
8204 __ UnpoisonHeapReference(out.AsRegister<Register>()); in MaybeGenerateReadBarrierSlow()
8221 __ b(slow_path->GetEntryLabel()); in GenerateReadBarrierForRootSlow()
8222 __ Bind(slow_path->GetExitLabel()); in GenerateReadBarrierForRootSlow()
8240 __ LoadFromOffset(kLoadWord, temp, SP, location.GetStackIndex()); in GetInvokeStaticOrDirectExtraParameter()
8250 __ LoadFromOffset(kLoadWord, temp, SP, stack_offset); in GetInvokeStaticOrDirectExtraParameter()
8264 __ LoadFromOffset(kLoadWord, temp.AsRegister<Register>(), TR, offset); in GenerateCalleeMethodStaticOrDirectCall()
8271 __ LoadImmediate(temp.AsRegister<Register>(), invoke->GetMethodAddress()); in GenerateCalleeMethodStaticOrDirectCall()
8279 __ LoadFromOffset(kLoadWord, temp.AsRegister<Register>(), base_reg, offset); in GenerateCalleeMethodStaticOrDirectCall()
8292 __ LoadFromOffset(kLoadWord, reg, SP, kCurrentMethodStackOffset); in GenerateCalleeMethodStaticOrDirectCall()
8295 __ LoadFromOffset(kLoadWord, in GenerateCalleeMethodStaticOrDirectCall()
8302 __ LoadFromOffset(kLoadWord, reg, reg, CodeGenerator::GetCachePointerOffset(index_in_cache)); in GenerateCalleeMethodStaticOrDirectCall()
8314 __ bl(GetFrameEntryLabel()); in GenerateStaticOrDirectCall()
8318 __ LoadFromOffset( in GenerateStaticOrDirectCall()
8322 __ blx(LR); in GenerateStaticOrDirectCall()
8342 __ LoadFromOffset(kLoadWord, temp, receiver, class_offset); in GenerateVirtualCall()
8351 __ MaybeUnpoisonHeapReference(temp); in GenerateVirtualCall()
8355 __ LoadFromOffset(kLoadWord, temp, temp, method_offset); in GenerateVirtualCall()
8357 __ LoadFromOffset(kLoadWord, LR, temp, entry_point); in GenerateVirtualCall()
8359 __ blx(LR); in GenerateVirtualCall()
8392 [this]() { return __ NewLiteral<uint32_t>(/* placeholder */ 0u); }); in DeduplicateBootImageStringLiteral()
8399 [this]() { return __ NewLiteral<uint32_t>(/* placeholder */ 0u); }); in DeduplicateBootImageTypeLiteral()
8413 [this]() { return __ NewLiteral<uint32_t>(/* placeholder */ 0u); }); in DeduplicateJitStringLiteral()
8423 [this]() { return __ NewLiteral<uint32_t>(/* placeholder */ 0u); }); in DeduplicateJitClassLiteral()
8494 [this, value]() { return __ NewLiteral<uint32_t>(value); }); in DeduplicateUint32Literal()
8501 [this]() { return __ NewLiteral<uint32_t>(/* placeholder */ 0u); }); in DeduplicateMethodLiteral()
8525 __ mla(res, mul_left, mul_right, accumulator); in VisitMultiplyAccumulate()
8527 __ mls(res, mul_left, mul_right, accumulator); in VisitMultiplyAccumulate()
8569 __ AddConstantSetFlags(temp_reg, value_reg, -lower_bound); in VisitPackedSwitch()
8573 __ b(codegen_->GetLabelOf(successors[0]), EQ); in VisitPackedSwitch()
8576 __ AddConstantSetFlags(temp_reg, temp_reg, -2); in VisitPackedSwitch()
8578 __ b(codegen_->GetLabelOf(successors[last_index + 1]), LO); in VisitPackedSwitch()
8580 __ b(codegen_->GetLabelOf(successors[last_index + 2]), EQ); in VisitPackedSwitch()
8584 __ CmpConstant(temp_reg, 1); in VisitPackedSwitch()
8585 __ b(codegen_->GetLabelOf(successors[last_index + 1]), EQ); in VisitPackedSwitch()
8590 __ b(codegen_->GetLabelOf(default_block)); in VisitPackedSwitch()
8602 JumpTable* table = __ CreateJumpTable(std::move(labels), temp_reg); in VisitPackedSwitch()
8608 __ AddConstant(key_reg, value_reg, -lower_bound); in VisitPackedSwitch()
8614 __ CmpConstant(key_reg, num_entries - 1); in VisitPackedSwitch()
8615 __ b(codegen_->GetLabelOf(default_block), Condition::HI); in VisitPackedSwitch()
8618 __ ldr(temp_reg, Address(temp_reg, key_reg, Shift::LSL, 2)); in VisitPackedSwitch()
8621 __ EmitJumpTableDispatch(table, temp_reg); in VisitPackedSwitch()
8634 __ BindTrackedLabel(&labels->movw_label); in VisitArmDexCacheArraysBase()
8635 __ movw(base_reg, /* placeholder */ 0u); in VisitArmDexCacheArraysBase()
8636 __ BindTrackedLabel(&labels->movt_label); in VisitArmDexCacheArraysBase()
8637 __ movt(base_reg, /* placeholder */ 0u); in VisitArmDexCacheArraysBase()
8638 __ BindTrackedLabel(&labels->add_pc_label); in VisitArmDexCacheArraysBase()
8639 __ add(base_reg, base_reg, ShifterOperand(PC)); in VisitArmDexCacheArraysBase()
8687 __ LoadFromOffset(kLoadWord, in VisitClassTableGet()
8694 __ LoadFromOffset(kLoadWord, in VisitClassTableGet()
8698 __ LoadFromOffset(kLoadWord, in VisitClassTableGet()
8730 #undef __