Lines Matching refs:vixl32

56 namespace vixl32 = vixl::aarch32;
57 using namespace vixl32; // NOLINT(build/namespaces)
85 using RegisterList = vixl32::RegisterList;
116 static inline bool CanEmitNarrowLdr(vixl32::Register rt, vixl32::Register rn, uint32_t offset) { in CanEmitNarrowLdr()
122 EmitAdrCode(ArmVIXLMacroAssembler* assembler, vixl32::Register rd, vixl32::Label* label) in EmitAdrCode()
145 vixl32::Register rd_;
146 vixl32::Label* const label_;
187 __ Vstr(vixl32::SRegister(first), MemOperand(sp, stack_offset)); in SaveContiguousSRegisterList()
191 __ Vstr(vixl32::SRegister(first++), MemOperand(sp, stack_offset)); in SaveContiguousSRegisterList()
202 vixl32::DRegister d_reg = vixl32::DRegister(first / 2); in SaveContiguousSRegisterList()
210 vixl32::Register base = sp; in SaveContiguousSRegisterList()
221 __ Vstr(vixl32::SRegister(last + 1), MemOperand(sp, stack_offset)); in SaveContiguousSRegisterList()
236 __ Vldr(vixl32::SRegister(first), MemOperand(sp, stack_offset)); in RestoreContiguousSRegisterList()
240 __ Vldr(vixl32::SRegister(first++), MemOperand(sp, stack_offset)); in RestoreContiguousSRegisterList()
251 vixl32::DRegister d_reg = vixl32::DRegister(first / 2); in RestoreContiguousSRegisterList()
258 vixl32::Register base = sp; in RestoreContiguousSRegisterList()
269 __ Vldr(vixl32::SRegister(last + 1), MemOperand(sp, stack_offset)); in RestoreContiguousSRegisterList()
430 vixl32::Label* GetReturnLabel() { in GetReturnLabel()
446 vixl32::Label return_label_;
743 vixl32::Register reg_out = RegisterFrom(out_); in EmitNativeCode()
771 vixl32::Register index_reg = RegisterFrom(index_); in EmitNativeCode()
796 vixl32::Register free_reg = FindAvailableCallerSaveRegister(codegen); in EmitNativeCode()
871 vixl32::Register FindAvailableCallerSaveRegister(CodeGenerator* codegen) { in FindAvailableCallerSaveRegister()
876 return vixl32::Register(i); in FindAvailableCallerSaveRegister()
910 vixl32::Register reg_out = RegisterFrom(out_); in EmitNativeCode()
977 vixl32::Register profiling_info) in CompileOptimizedSlowPathARMVIXL()
987 vixl32::Register tmp = temps.Acquire(); in EmitNativeCode()
1003 vixl32::Register profiling_info_;
1008 inline vixl32::Condition ARMCondition(IfCondition cond) { in ARMCondition()
1026 inline vixl32::Condition ARMUnsignedCondition(IfCondition cond) { in ARMUnsignedCondition()
1045 inline vixl32::Condition ARMFPCondition(IfCondition cond, bool gt_bias) { in ARMFPCondition()
1075 stream << vixl32::Register(reg); in DumpCoreRegister()
1079 stream << vixl32::SRegister(reg); in DumpFloatingPointRegister()
1123 vixl32::Register out, in GenerateDataProcInstruction()
1124 vixl32::Register first, in GenerateDataProcInstruction()
1163 const vixl32::Register first_hi = HighRegisterFrom(first); in GenerateDataProc()
1164 const vixl32::Register first_lo = LowRegisterFrom(first); in GenerateDataProc()
1165 const vixl32::Register out_hi = HighRegisterFrom(out); in GenerateDataProc()
1166 const vixl32::Register out_lo = LowRegisterFrom(out); in GenerateDataProc()
1180 static Operand GetShifterOperand(vixl32::Register rm, ShiftType shift, uint32_t shift_imm) { in GetShifterOperand()
1195 const vixl32::Register first_hi = HighRegisterFrom(first); in GenerateLongDataProc()
1196 const vixl32::Register first_lo = LowRegisterFrom(first); in GenerateLongDataProc()
1197 const vixl32::Register out_hi = HighRegisterFrom(out); in GenerateLongDataProc()
1198 const vixl32::Register out_lo = LowRegisterFrom(out); in GenerateLongDataProc()
1199 const vixl32::Register second_hi = HighRegisterFrom(second); in GenerateLongDataProc()
1200 const vixl32::Register second_lo = LowRegisterFrom(second); in GenerateLongDataProc()
1253 const vixl32::Register temp = temps.Acquire(); in GenerateLongDataProc()
1286 const vixl32::Register temp = temps.Acquire(); in GenerateLongDataProc()
1362 static std::pair<vixl32::Condition, vixl32::Condition> GenerateLongTestConstant( in GenerateLongTestConstant()
1376 std::pair<vixl32::Condition, vixl32::Condition> ret(eq, ne); in GenerateLongTestConstant()
1382 const vixl32::Register left_high = HighRegisterFrom(left); in GenerateLongTestConstant()
1383 const vixl32::Register left_low = LowRegisterFrom(left); in GenerateLongTestConstant()
1438 2 * vixl32::k16BitT32InstructionSizeInBytes, in GenerateLongTestConstant()
1483 static std::pair<vixl32::Condition, vixl32::Condition> GenerateLongTest( in GenerateLongTest()
1497 std::pair<vixl32::Condition, vixl32::Condition> ret(eq, ne); in GenerateLongTest()
1514 2 * vixl32::k16BitT32InstructionSizeInBytes, in GenerateLongTest()
1554 static std::pair<vixl32::Condition, vixl32::Condition> GenerateTest(HCondition* condition, in GenerateTest()
1560 std::pair<vixl32::Condition, vixl32::Condition> ret(eq, ne); in GenerateTest()
1585 const vixl32::Register out = OutputRegister(cond); in GenerateConditionGeneric()
1593 2 * vixl32::k16BitT32InstructionSizeInBytes, in GenerateConditionGeneric()
1599 vixl32::Label done_label; in GenerateConditionGeneric()
1600 vixl32::Label* const final_label = codegen->GetFinalLabel(cond, &done_label); in GenerateConditionGeneric()
1616 const vixl32::Register out = OutputRegister(cond); in GenerateEqualLong()
1619 vixl32::Register left_high = HighRegisterFrom(left); in GenerateEqualLong()
1620 vixl32::Register left_low = LowRegisterFrom(left); in GenerateEqualLong()
1621 vixl32::Register temp; in GenerateEqualLong()
1656 2 * vixl32::k16BitT32InstructionSizeInBytes, in GenerateEqualLong()
1672 const vixl32::Register out = OutputRegister(cond); in GenerateConditionLong()
1690 2 * vixl32::k16BitT32InstructionSizeInBytes, in GenerateConditionLong()
1743 vixl32::Register in = InputRegisterAt(cond, 0); in GenerateConditionIntegralOrNonPrimitive()
1744 const vixl32::Register out = OutputRegister(cond); in GenerateConditionIntegralOrNonPrimitive()
1763 2 * vixl32::k16BitT32InstructionSizeInBytes, in GenerateConditionIntegralOrNonPrimitive()
1806 2 * vixl32::k16BitT32InstructionSizeInBytes, in GenerateConditionIntegralOrNonPrimitive()
1883 vixl32::Label* CodeGeneratorARMVIXL::GetFinalLabel(HInstruction* instruction, in GetFinalLabel()
1884 vixl32::Label* final_label) { in GetFinalLabel()
1997 vixl32::Label* target_label = codegen->GetLabelOf(successors[i]); in FixTable()
2190 vixl32::Register addr = RegisterFrom(locations->GetTemp(0)); in GenerateMethodEntryExitHook()
2191 vixl32::Register value = RegisterFrom(locations->GetTemp(1)); in GenerateMethodEntryExitHook()
2192 vixl32::Register tmp = RegisterFrom(locations->GetTemp(2)); in GenerateMethodEntryExitHook()
2225 vixl32::Register index = value; in GenerateMethodEntryExitHook()
2249 vixl32::Register tmp1 = index; in GenerateMethodEntryExitHook()
2286 vixl32::Register temp = temps.Acquire(); in MaybeIncrementHotness()
2289 __ Push(vixl32::Register(kMethodRegister)); in MaybeIncrementHotness()
2302 __ Pop(vixl32::Register(kMethodRegister)); in MaybeIncrementHotness()
2315 vixl32::Register tmp = temps.Acquire(); in MaybeIncrementHotness()
2340 vixl32::Label resolution; in GenerateFrameEntry()
2341 vixl32::Label memory_barrier; in GenerateFrameEntry()
2345 vixl32::Register temp1 = temps.Acquire(); in GenerateFrameEntry()
2349 vixl32::Register temp2 = r4; in GenerateFrameEntry()
2350 for (vixl32::Register reg : kParameterCoreRegistersVIXL) { in GenerateFrameEntry()
2402 vixl32::Register temp; in GenerateFrameEntry()
2409 for (vixl32::Register reg : kParameterCoreRegistersVIXL) { in GenerateFrameEntry()
2420 vixl32::kMaxInstructionSizeInBytes, in GenerateFrameEntry()
2464 __ Vpush(SRegisterList(vixl32::SRegister(first), POPCOUNT(fpu_spill_mask_))); in GenerateFrameEntry()
2489 vixl32::Register temp = temps.Acquire(); in GenerateFrameEntry()
2543 __ Vpop(SRegisterList(vixl32::SRegister(first), POPCOUNT(fpu_spill_mask_))); in GenerateFrameExit()
2546 GetAssembler()->cfi().RestoreMany(DWARFReg(vixl32::SRegister(0)), fpu_spill_mask_); in GenerateFrameExit()
2757 vixl32::Register temp = temps.Acquire(); in Move32()
2803 vixl32::k16BitT32InstructionSizeInBytes, in InvokeRuntime()
2812 vixl32::k32BitT32InstructionSizeInBytes, in InvokeRuntime()
2879 vixl32::Label* true_target, in GenerateCompareTestAndBranch()
2880 vixl32::Label* false_target, in GenerateCompareTestAndBranch()
2888 vixl32::Label* non_fallthrough_target; in GenerateCompareTestAndBranch()
2918 vixl32::Label* true_target, in GenerateTestAndBranch()
2919 vixl32::Label* false_target, in GenerateTestAndBranch()
2977 vixl32::Label* non_fallthrough_target; in GenerateTestAndBranch()
2978 vixl32::Condition arm_cond = vixl32::Condition::None(); in GenerateTestAndBranch()
2979 const vixl32::Register left = InputRegisterAt(cond, 0); in GenerateTestAndBranch()
3025 vixl32::Label* true_target = codegen_->GoesToNextBlock(if_instr->GetBlock(), true_successor) ? in VisitIf()
3027 vixl32::Label* false_target = codegen_->GoesToNextBlock(if_instr->GetBlock(), false_successor) ? in VisitIf()
3044 vixl32::Label done; in VisitIf()
3046 vixl32::Register temp = temps.Acquire(); in VisitIf()
3047 vixl32::Register counter = RegisterFrom(if_instr->GetLocations()->GetTemp(0)); in VisitIf()
3048 vixl32::Register condition = InputRegisterAt(if_instr, 0); in VisitIf()
3179 std::pair<vixl32::Condition, vixl32::Condition> cond(eq, ne); in VisitSelect()
3191 instr_count * vixl32::k16BitT32InstructionSizeInBytes, in VisitSelect()
3224 vixl32::Label* false_target = nullptr; in VisitSelect()
3225 vixl32::Label* true_target = nullptr; in VisitSelect()
3226 vixl32::Label select_end; in VisitSelect()
3227 vixl32::Label other_case; in VisitSelect()
3228 vixl32::Label* const target = codegen_->GetFinalLabel(select, &select_end); in VisitSelect()
3285 vixl32::Register out, in GenerateConditionWithZero()
3286 vixl32::Register in, in GenerateConditionWithZero()
3287 vixl32::Register temp) { in GenerateConditionWithZero()
3396 vixl32::Register left = InputRegisterAt(cond, 0); in HandleCondition()
3397 const vixl32::Register out = OutputRegister(cond); in HandleCondition()
3403 vixl32::Register right = RegisterFrom(right_loc); in HandleCondition()
3696 vixl32::Register klass) { in MaybeGenerateInlineCacheCheck()
3704 vixl32::Label done; in MaybeGenerateInlineCacheCheck()
3726 vixl32::Register temp = RegisterFrom(locations->GetTemp(0)); in VisitInvokeInterface()
3735 vixl32::kMaxInstructionSizeInBytes, in VisitInvokeInterface()
3802 vixl32::k16BitT32InstructionSizeInBytes, in VisitInvokeInterface()
4148 vixl32::SRegister temp = LowSRegisterFrom(locations->GetTemp(0)); in VisitTypeConversion()
4155 vixl32::SRegister temp_s = LowSRegisterFrom(locations->GetTemp(0)); in VisitTypeConversion()
4238 vixl32::Register low = LowRegisterFrom(in); in VisitTypeConversion()
4239 vixl32::Register high = HighRegisterFrom(in); in VisitTypeConversion()
4240 vixl32::SRegister out_s = LowSRegisterFrom(out); in VisitTypeConversion()
4241 vixl32::DRegister out_d = DRegisterFrom(out); in VisitTypeConversion()
4242 vixl32::SRegister temp_s = LowSRegisterFrom(locations->GetTemp(0)); in VisitTypeConversion()
4243 vixl32::DRegister temp_d = DRegisterFrom(locations->GetTemp(0)); in VisitTypeConversion()
4244 vixl32::DRegister constant_d = DRegisterFrom(locations->GetTemp(1)); in VisitTypeConversion()
4438 vixl32::Register out_hi = HighRegisterFrom(out); in VisitMul()
4439 vixl32::Register out_lo = LowRegisterFrom(out); in VisitMul()
4440 vixl32::Register in1_hi = HighRegisterFrom(first); in VisitMul()
4441 vixl32::Register in1_lo = LowRegisterFrom(first); in VisitMul()
4442 vixl32::Register in2_hi = HighRegisterFrom(second); in VisitMul()
4443 vixl32::Register in2_lo = LowRegisterFrom(second); in VisitMul()
4458 vixl32::Register temp = temps.Acquire(); in VisitMul()
4487 vixl32::Register out = OutputRegister(instruction); in DivRemOneOrMinusOne()
4488 vixl32::Register dividend = InputRegisterAt(instruction, 0); in DivRemOneOrMinusOne()
4511 vixl32::Register out = OutputRegister(instruction); in DivRemByPowerOfTwo()
4512 vixl32::Register dividend = InputRegisterAt(instruction, 0); in DivRemByPowerOfTwo()
4517 auto generate_div_code = [this, imm, ctz_imm](vixl32::Register out, vixl32::Register in) { in DivRemByPowerOfTwo()
4567 vixl32::Register add_right_input = dividend; in DivRemByPowerOfTwo()
4572 __ Add(out, dividend, Operand(add_right_input, vixl32::LSR, 32 - ctz_imm)); in DivRemByPowerOfTwo()
4591 vixl32::Register out = OutputRegister(instruction); in GenerateDivRemWithAnyConstant()
4592 vixl32::Register dividend = InputRegisterAt(instruction, 0); in GenerateDivRemWithAnyConstant()
4593 vixl32::Register temp1 = RegisterFrom(locations->GetTemp(0)); in GenerateDivRemWithAnyConstant()
4594 vixl32::Register temp2 = RegisterFrom(locations->GetTemp(1)); in GenerateDivRemWithAnyConstant()
4601 auto generate_unsigned_div_code =[this, magic, shift](vixl32::Register out, in GenerateDivRemWithAnyConstant()
4602 vixl32::Register dividend, in GenerateDivRemWithAnyConstant()
4603 vixl32::Register temp1, in GenerateDivRemWithAnyConstant()
4604 vixl32::Register temp2) { in GenerateDivRemWithAnyConstant()
4658 __ Sub(out, temp1, Operand(temp1, vixl32::Shift(ASR), 31)); in GenerateDivRemWithAnyConstant()
4660 __ Sub(temp1, temp1, Operand(temp1, vixl32::Shift(ASR), 31)); in GenerateDivRemWithAnyConstant()
4894 vixl32::Register reg1 = InputRegisterAt(rem, 0); in VisitRem()
4895 vixl32::Register out_reg = OutputRegister(rem); in VisitRem()
4899 vixl32::Register reg2 = RegisterFrom(second); in VisitRem()
4900 vixl32::Register temp = RegisterFrom(locations->GetTemp(0)); in VisitRem()
4975 vixl32::Register op1 = RegisterFrom(op1_loc); in GenerateMinMaxInt()
4976 vixl32::Register op2 = RegisterFrom(op2_loc); in GenerateMinMaxInt()
4977 vixl32::Register out = RegisterFrom(out_loc); in GenerateMinMaxInt()
5003 vixl32::Register op1_lo = LowRegisterFrom(op1_loc); in GenerateMinMaxLong()
5004 vixl32::Register op1_hi = HighRegisterFrom(op1_loc); in GenerateMinMaxLong()
5005 vixl32::Register op2_lo = LowRegisterFrom(op2_loc); in GenerateMinMaxLong()
5006 vixl32::Register op2_hi = HighRegisterFrom(op2_loc); in GenerateMinMaxLong()
5007 vixl32::Register out_lo = LowRegisterFrom(out_loc); in GenerateMinMaxLong()
5008 vixl32::Register out_hi = HighRegisterFrom(out_loc); in GenerateMinMaxLong()
5010 const vixl32::Register temp = temps.Acquire(); in GenerateMinMaxLong()
5021 vixl32::ConditionType cond = is_min ? ge : lt; in GenerateMinMaxLong()
5043 vixl32::SRegister op1 = SRegisterFrom(op1_loc); in GenerateMinMaxFloat()
5044 vixl32::SRegister op2 = SRegisterFrom(op2_loc); in GenerateMinMaxFloat()
5045 vixl32::SRegister out = SRegisterFrom(out_loc); in GenerateMinMaxFloat()
5048 const vixl32::Register temp1 = temps.Acquire(); in GenerateMinMaxFloat()
5049 vixl32::Register temp2 = RegisterFrom(locations->GetTemp(0)); in GenerateMinMaxFloat()
5050 vixl32::Label nan, done; in GenerateMinMaxFloat()
5051 vixl32::Label* final_label = codegen_->GetFinalLabel(minmax, &done); in GenerateMinMaxFloat()
5060 vixl32::ConditionType cond = is_min ? gt : lt; in GenerateMinMaxFloat()
5104 vixl32::DRegister op1 = DRegisterFrom(op1_loc); in GenerateMinMaxDouble()
5105 vixl32::DRegister op2 = DRegisterFrom(op2_loc); in GenerateMinMaxDouble()
5106 vixl32::DRegister out = DRegisterFrom(out_loc); in GenerateMinMaxDouble()
5107 vixl32::Label handle_nan_eq, done; in GenerateMinMaxDouble()
5108 vixl32::Label* final_label = codegen_->GetFinalLabel(minmax, &done); in GenerateMinMaxDouble()
5117 vixl32::ConditionType cond = is_min ? gt : lt; in GenerateMinMaxDouble()
5202 vixl32::Register in_reg = RegisterFrom(locations->InAt(0)); in VisitAbs()
5203 vixl32::Register out_reg = RegisterFrom(locations->Out()); in VisitAbs()
5204 vixl32::Register mask = RegisterFrom(locations->GetTemp(0)); in VisitAbs()
5212 vixl32::Register in_reg_lo = LowRegisterFrom(in); in VisitAbs()
5213 vixl32::Register in_reg_hi = HighRegisterFrom(in); in VisitAbs()
5215 vixl32::Register out_reg_lo = LowRegisterFrom(output); in VisitAbs()
5216 vixl32::Register out_reg_hi = HighRegisterFrom(output); in VisitAbs()
5218 vixl32::Register mask = RegisterFrom(locations->GetTemp(0)); in VisitAbs()
5268 vixl32::Register temp = temps.Acquire(); in VisitDivZeroCheck()
5286 vixl32::Register in = InputRegisterAt(ror, 0); in HandleIntegerRotate()
5288 vixl32::Register out = OutputRegister(ror); in HandleIntegerRotate()
5313 vixl32::Register in_reg_lo = LowRegisterFrom(locations->InAt(0)); in HandleLongRotate()
5314 vixl32::Register in_reg_hi = HighRegisterFrom(locations->InAt(0)); in HandleLongRotate()
5316 vixl32::Register out_reg_lo = LowRegisterFrom(locations->Out()); in HandleLongRotate()
5317 vixl32::Register out_reg_hi = HighRegisterFrom(locations->Out()); in HandleLongRotate()
5341 vixl32::Register shift_right = RegisterFrom(locations->GetTemp(0)); in HandleLongRotate()
5342 vixl32::Register shift_left = RegisterFrom(locations->GetTemp(1)); in HandleLongRotate()
5343 vixl32::Label end; in HandleLongRotate()
5344 vixl32::Label shift_by_32_plus_shift_right; in HandleLongRotate()
5345 vixl32::Label* final_label = codegen_->GetFinalLabel(ror, &end); in HandleLongRotate()
5474 vixl32::Register out_reg = OutputRegister(op); in HandleShift()
5475 vixl32::Register first_reg = InputRegisterAt(op, 0); in HandleShift()
5477 vixl32::Register second_reg = RegisterFrom(second); in HandleShift()
5503 vixl32::Register o_h = HighRegisterFrom(out); in HandleShift()
5504 vixl32::Register o_l = LowRegisterFrom(out); in HandleShift()
5506 vixl32::Register high = HighRegisterFrom(first); in HandleShift()
5507 vixl32::Register low = LowRegisterFrom(first); in HandleShift()
5510 vixl32::Register temp = RegisterFrom(locations->GetTemp(0)); in HandleShift()
5512 vixl32::Register second_reg = RegisterFrom(second); in HandleShift()
5526 2 * vixl32::kMaxInstructionSizeInBytes, in HandleShift()
5545 2 * vixl32::kMaxInstructionSizeInBytes, in HandleShift()
5562 2 * vixl32::kMaxInstructionSizeInBytes, in HandleShift()
5788 vixl32::Register out = OutputRegister(compare); in VisitCompare()
5792 vixl32::Label less, greater, done; in VisitCompare()
5793 vixl32::Label* final_label = codegen_->GetFinalLabel(compare, &done); in VisitCompare()
5795 vixl32::Condition less_cond = vixl32::Condition::None(); in VisitCompare()
5881 void InstructionCodeGeneratorARMVIXL::GenerateWideAtomicLoad(vixl32::Register addr, in GenerateWideAtomicLoad()
5883 vixl32::Register out_lo, in GenerateWideAtomicLoad()
5884 vixl32::Register out_hi) { in GenerateWideAtomicLoad()
5887 vixl32::Register temp = temps.Acquire(); in GenerateWideAtomicLoad()
5894 void InstructionCodeGeneratorARMVIXL::GenerateWideAtomicStore(vixl32::Register addr, in GenerateWideAtomicStore()
5896 vixl32::Register value_lo, in GenerateWideAtomicStore()
5897 vixl32::Register value_hi, in GenerateWideAtomicStore()
5898 vixl32::Register temp1, in GenerateWideAtomicStore()
5899 vixl32::Register temp2, in GenerateWideAtomicStore()
5902 vixl32::Label fail; in GenerateWideAtomicStore()
5904 vixl32::Register temp = temps.Acquire(); in GenerateWideAtomicStore()
5912 vixl32::kMaxInstructionSizeInBytes, in GenerateWideAtomicStore()
5980 vixl32::Register base = InputRegisterAt(instruction, 0); in HandleFieldSet()
6010 vixl32::Register value_reg = RegisterFrom(value); in HandleFieldSet()
6051 vixl32::DRegister value_reg = DRegisterFrom(value); in HandleFieldSet()
6053 vixl32::Register value_reg_lo = RegisterFrom(locations->GetTemp(0)); in HandleFieldSet()
6054 vixl32::Register value_reg_hi = RegisterFrom(locations->GetTemp(1)); in HandleFieldSet()
6082 vixl32::Register temp = RegisterFrom(locations->GetTemp(0)); in HandleFieldSet()
6083 vixl32::Register card = RegisterFrom(locations->GetTemp(1)); in HandleFieldSet()
6091 vixl32::Register temp = RegisterFrom(locations->GetTemp(0)); in HandleFieldSet()
6092 vixl32::Register card = RegisterFrom(locations->GetTemp(1)); in HandleFieldSet()
6178 vixl32::FlagsUpdate flags_update = vixl32::FlagsUpdate::DontCare) { in CanEncode32BitConstantAsImmediate()
6208 vixl32::FlagsUpdate low_flags_update = vixl32::FlagsUpdate::DontCare; in CanEncodeConstantAsImmediate()
6220 low_flags_update = vixl32::FlagsUpdate::SetFlags; in CanEncodeConstantAsImmediate()
6238 vixl32::Register base = InputRegisterAt(instruction, receiver_input); in HandleFieldGet()
6314 vixl32::DRegister out_dreg = DRegisterFrom(out); in HandleFieldGet()
6316 vixl32::Register lo = RegisterFrom(locations->GetTemp(0)); in HandleFieldGet()
6317 vixl32::Register hi = RegisterFrom(locations->GetTemp(1)); in HandleFieldGet()
6473 vixl32::kMaxInstructionSizeInBytes, in GenerateImplicitNullCheck()
6492 vixl32::Register base, in LoadFromShiftedRegOffset()
6493 vixl32::Register reg_index, in LoadFromShiftedRegOffset()
6494 vixl32::Condition cond) { in LoadFromShiftedRegOffset()
6496 MemOperand mem_address(base, reg_index, vixl32::LSL, shift_count); in LoadFromShiftedRegOffset()
6528 vixl32::Register base, in StoreToShiftedRegOffset()
6529 vixl32::Register reg_index, in StoreToShiftedRegOffset()
6530 vixl32::Condition cond) { in StoreToShiftedRegOffset()
6532 MemOperand mem_address(base, reg_index, vixl32::LSL, shift_count); in StoreToShiftedRegOffset()
6607 vixl32::Register obj = InputRegisterAt(instruction, 0); in VisitArrayGet()
6624 vixl32::Register length; in VisitArrayGet()
6636 vixl32::Label uncompressed_load, done; in VisitArrayGet()
6637 vixl32::Label* final_label = codegen_->GetFinalLabel(instruction, &done); in VisitArrayGet()
6666 vixl32::Register temp = temps.Acquire(); in VisitArrayGet()
6681 vixl32::Label uncompressed_load, done; in VisitArrayGet()
6682 vixl32::Label* final_label = codegen_->GetFinalLabel(instruction, &done); in VisitArrayGet()
6687 __ Ldrb(RegisterFrom(out_loc), MemOperand(temp, RegisterFrom(index), vixl32::LSL, 0)); in VisitArrayGet()
6690 __ Ldrh(RegisterFrom(out_loc), MemOperand(temp, RegisterFrom(index), vixl32::LSL, 1)); in VisitArrayGet()
6736 vixl32::Register out = OutputRegister(instruction); in VisitArrayGet()
6751 vixl32::Register temp = temps.Acquire(); in VisitArrayGet()
6792 vixl32::Register temp = temps.Acquire(); in VisitArrayGet()
6793 __ Add(temp, obj, Operand(RegisterFrom(index), vixl32::LSL, TIMES_8)); in VisitArrayGet()
6804 vixl32::SRegister out = SRegisterFrom(out_loc); in VisitArrayGet()
6810 vixl32::Register temp = temps.Acquire(); in VisitArrayGet()
6811 __ Add(temp, obj, Operand(RegisterFrom(index), vixl32::LSL, TIMES_4)); in VisitArrayGet()
6827 vixl32::Register temp = temps.Acquire(); in VisitArrayGet()
6828 __ Add(temp, obj, Operand(RegisterFrom(index), vixl32::LSL, TIMES_8)); in VisitArrayGet()
6877 vixl32::Register array = InputRegisterAt(instruction, 0); in VisitArraySet()
6908 vixl32::Register temp = temps.Acquire(); in VisitArraySet()
6931 vixl32::Register value = RegisterFrom(value_loc); in VisitArraySet()
6947 vixl32::Register temp = temps.Acquire(); in VisitArraySet()
6956 vixl32::Register temp1 = RegisterFrom(locations->GetTemp(0)); in VisitArraySet()
6957 vixl32::Register temp2 = RegisterFrom(locations->GetTemp(1)); in VisitArraySet()
6970 vixl32::Label do_store; in VisitArraySet()
6971 vixl32::Label skip_writing_card; in VisitArraySet()
6997 vixl32::Register temp1 = RegisterFrom(locations->GetTemp(0)); in VisitArraySet()
6998 vixl32::Register temp2 = RegisterFrom(locations->GetTemp(1)); in VisitArraySet()
7003 vixl32::kMaxInstructionSizeInBytes, in VisitArraySet()
7020 vixl32::Label do_put; in VisitArraySet()
7043 vixl32::Register temp1 = RegisterFrom(locations->GetTemp(0)); in VisitArraySet()
7044 vixl32::Register temp2 = RegisterFrom(locations->GetTemp(1)); in VisitArraySet()
7048 vixl32::Register temp1 = RegisterFrom(locations->GetTemp(0)); in VisitArraySet()
7049 vixl32::Register temp2 = RegisterFrom(locations->GetTemp(1)); in VisitArraySet()
7059 vixl32::Register source = value; in VisitArraySet()
7061 vixl32::Register temp1 = RegisterFrom(locations->GetTemp(0)); in VisitArraySet()
7079 vixl32::Register temp = temps.Acquire(); in VisitArraySet()
7110 vixl32::Register temp = temps.Acquire(); in VisitArraySet()
7111 __ Add(temp, array, Operand(RegisterFrom(index), vixl32::LSL, TIMES_8)); in VisitArraySet()
7129 vixl32::Register temp = temps.Acquire(); in VisitArraySet()
7130 __ Add(temp, array, Operand(RegisterFrom(index), vixl32::LSL, TIMES_4)); in VisitArraySet()
7148 vixl32::Register temp = temps.Acquire(); in VisitArraySet()
7149 __ Add(temp, array, Operand(RegisterFrom(index), vixl32::LSL, TIMES_8)); in VisitArraySet()
7173 vixl32::Register obj = InputRegisterAt(instruction, 0); in VisitArrayLength()
7174 vixl32::Register out = OutputRegister(instruction); in VisitArrayLength()
7177 vixl32::kMaxInstructionSizeInBytes, in VisitArrayLength()
7198 vixl32::Register out = OutputRegister(instruction); in VisitIntermediateAddress()
7199 vixl32::Register first = InputRegisterAt(instruction, 0); in VisitIntermediateAddress()
7277 void CodeGeneratorARMVIXL::MaybeMarkGCCard(vixl32::Register temp, in MaybeMarkGCCard()
7278 vixl32::Register card, in MaybeMarkGCCard()
7279 vixl32::Register object, in MaybeMarkGCCard()
7280 vixl32::Register value, in MaybeMarkGCCard()
7282 vixl32::Label is_null; in MaybeMarkGCCard()
7292 void CodeGeneratorARMVIXL::MarkGCCard(vixl32::Register temp, in MarkGCCard()
7293 vixl32::Register card, in MarkGCCard()
7294 vixl32::Register object) { in MarkGCCard()
7316 void CodeGeneratorARMVIXL::CheckGCCardIsValid(vixl32::Register temp, in CheckGCCardIsValid()
7317 vixl32::Register card, in CheckGCCardIsValid()
7318 vixl32::Register object) { in CheckGCCardIsValid()
7319 vixl32::Label done; in CheckGCCardIsValid()
7387 vixl32::Register temp = temps.Acquire(); in GenerateSuspendCheck()
7432 vixl32::Register temp = temps.Acquire(); in EmitMove()
7447 vixl32::DRegister temp = temps.AcquireD(); in EmitMove()
7490 vixl32::Register temp = temps.Acquire(); in EmitMove()
7501 vixl32::Register temp = temps.Acquire(); in EmitMove()
7517 vixl32::Register temp = temps.Acquire(); in EmitMove()
7533 vixl32::Register temp = temps.Acquire(); in EmitMove()
7541 void ParallelMoveResolverARMVIXL::Exchange(vixl32::Register reg, int mem) { in Exchange()
7543 vixl32::Register temp = temps.Acquire(); in Exchange()
7552 vixl32::Register temp1 = temps.Acquire(); in Exchange()
7555 vixl32::Register temp2(ensure_scratch.GetRegister()); in Exchange()
7571 vixl32::Register temp = temps.Acquire(); in EmitSwap()
7584 vixl32::Register temp = temps.Acquire(); in EmitSwap()
7589 vixl32::DRegister temp = temps.AcquireD(); in EmitSwap()
7595 vixl32::Register low_reg = LowRegisterFrom(source.IsRegisterPair() ? source : destination); in EmitSwap()
7598 vixl32::DRegister temp = temps.AcquireD(); in EmitSwap()
7599 __ Vmov(temp, low_reg, vixl32::Register(low_reg.GetCode() + 1)); in EmitSwap()
7603 vixl32::DRegister first = DRegisterFrom(source); in EmitSwap()
7604 vixl32::DRegister second = DRegisterFrom(destination); in EmitSwap()
7605 vixl32::DRegister temp = temps.AcquireD(); in EmitSwap()
7610 vixl32::DRegister reg = source.IsFpuRegisterPair() in EmitSwap()
7616 vixl32::DRegister temp = temps.AcquireD(); in EmitSwap()
7621 vixl32::SRegister reg = source.IsFpuRegister() in EmitSwap()
7627 vixl32::Register temp = temps.Acquire(); in EmitSwap()
7632 vixl32::DRegister temp1 = temps.AcquireD(); in EmitSwap()
7633 vixl32::DRegister temp2 = temps.AcquireD(); in EmitSwap()
7644 __ Push(vixl32::Register(reg)); in SpillScratch()
7648 __ Pop(vixl32::Register(reg)); in RestoreScratch()
7732 vixl32::Register out = OutputRegister(cls); in VisitLoadClass()
7742 vixl32::Register current_method = InputRegisterAt(cls, 0); in VisitLoadClass()
7862 LoadClassSlowPathARMVIXL* slow_path, vixl32::Register class_reg) { in GenerateClassInitializationCheck()
7864 vixl32::Register temp = temps.Acquire(); in GenerateClassInitializationCheck()
7873 vixl32::Register temp, in GenerateBitstringTypeCheckCompare()
7874 vixl32::FlagsUpdate flags_update) { in GenerateBitstringTypeCheckCompare()
7974 vixl32::Register out = OutputRegister(load); in VisitLoadString()
8045 vixl32::Register out = OutputRegister(load); in VisitLoadException()
8056 vixl32::Register temp = temps.Acquire(); in VisitClearException()
8146 vixl32::Register obj = InputRegisterAt(instruction, 0); in VisitInstanceOf()
8147 vixl32::Register cls = (type_check_kind == TypeCheckKind::kBitstringCheck) in VisitInstanceOf()
8148 ? vixl32::Register() in VisitInstanceOf()
8151 vixl32::Register out = OutputRegister(instruction); in VisitInstanceOf()
8163 vixl32::Label done; in VisitInstanceOf()
8164 vixl32::Label* const final_label = codegen_->GetFinalLabel(instruction, &done); in VisitInstanceOf()
8198 2 * vixl32::k16BitT32InstructionSizeInBytes, in VisitInstanceOf()
8223 vixl32::Label loop; in VisitInstanceOf()
8250 vixl32::Label loop, success; in VisitInstanceOf()
8277 2 * vixl32::k16BitT32InstructionSizeInBytes, in VisitInstanceOf()
8306 vixl32::Label exact_check; in VisitInstanceOf()
8333 2 * vixl32::k16BitT32InstructionSizeInBytes, in VisitInstanceOf()
8382 vixl32::Register temp = RegisterFrom(maybe_temp_loc); in VisitInstanceOf()
8383 vixl32::Register temp2 = temps.Acquire(); in VisitInstanceOf()
8393 vixl32::Label loop; in VisitInstanceOf()
8486 vixl32::Register obj = InputRegisterAt(instruction, 0); in VisitCheckCast()
8487 vixl32::Register cls = (type_check_kind == TypeCheckKind::kBitstringCheck) in VisitCheckCast()
8488 ? vixl32::Register() in VisitCheckCast()
8491 vixl32::Register temp = RegisterFrom(temp_loc); in VisitCheckCast()
8511 vixl32::Label done; in VisitCheckCast()
8512 vixl32::Label* final_label = codegen_->GetFinalLabel(instruction, &done); in VisitCheckCast()
8547 vixl32::Label loop; in VisitCheckCast()
8576 vixl32::Label loop; in VisitCheckCast()
8659 vixl32::Label start_loop; in VisitCheckCast()
8767 vixl32::Register first_reg = RegisterFrom(first); in VisitBitwiseNegatedRight()
8768 vixl32::Register second_reg = RegisterFrom(second); in VisitBitwiseNegatedRight()
8769 vixl32::Register out_reg = RegisterFrom(out); in VisitBitwiseNegatedRight()
8788 vixl32::Register first_low = LowRegisterFrom(first); in VisitBitwiseNegatedRight()
8789 vixl32::Register first_high = HighRegisterFrom(first); in VisitBitwiseNegatedRight()
8790 vixl32::Register second_low = LowRegisterFrom(second); in VisitBitwiseNegatedRight()
8791 vixl32::Register second_high = HighRegisterFrom(second); in VisitBitwiseNegatedRight()
8792 vixl32::Register out_low = LowRegisterFrom(out); in VisitBitwiseNegatedRight()
8793 vixl32::Register out_high = HighRegisterFrom(out); in VisitBitwiseNegatedRight()
8835 const vixl32::Register first = InputRegisterAt(instruction, 0); in VisitDataProcWithShifterOp()
8836 const vixl32::Register output = OutputRegister(instruction); in VisitDataProcWithShifterOp()
8837 const vixl32::Register second = instruction->InputAt(1)->GetType() == DataType::Type::kInt64 in VisitDataProcWithShifterOp()
8874 const vixl32::Register second = InputRegisterAt(instruction, 1); in VisitDataProcWithShifterOp()
8890 void InstructionCodeGeneratorARMVIXL::GenerateAndConst(vixl32::Register out, in GenerateAndConst()
8891 vixl32::Register first, in GenerateAndConst()
8915 void InstructionCodeGeneratorARMVIXL::GenerateOrrConst(vixl32::Register out, in GenerateOrrConst()
8916 vixl32::Register first, in GenerateOrrConst()
8938 void InstructionCodeGeneratorARMVIXL::GenerateEorConst(vixl32::Register out, in GenerateEorConst()
8939 vixl32::Register first, in GenerateEorConst()
8954 vixl32::Register out_low = LowRegisterFrom(out); in GenerateAddLongConst()
8955 vixl32::Register out_high = HighRegisterFrom(out); in GenerateAddLongConst()
8956 vixl32::Register first_low = LowRegisterFrom(first); in GenerateAddLongConst()
8957 vixl32::Register first_high = HighRegisterFrom(first); in GenerateAddLongConst()
8986 vixl32::Register first_reg = InputRegisterAt(instruction, 0); in HandleBitwiseOperation()
8987 vixl32::Register out_reg = OutputRegister(instruction); in HandleBitwiseOperation()
8999 vixl32::Register first_low = LowRegisterFrom(first); in HandleBitwiseOperation()
9000 vixl32::Register first_high = HighRegisterFrom(first); in HandleBitwiseOperation()
9001 vixl32::Register out_low = LowRegisterFrom(out); in HandleBitwiseOperation()
9002 vixl32::Register out_high = HighRegisterFrom(out); in HandleBitwiseOperation()
9019 vixl32::Register first_reg = InputRegisterAt(instruction, 0); in HandleBitwiseOperation()
9020 vixl32::Register second_reg = InputRegisterAt(instruction, 1); in HandleBitwiseOperation()
9021 vixl32::Register out_reg = OutputRegister(instruction); in HandleBitwiseOperation()
9032 vixl32::Register first_low = LowRegisterFrom(first); in HandleBitwiseOperation()
9033 vixl32::Register first_high = HighRegisterFrom(first); in HandleBitwiseOperation()
9034 vixl32::Register second_low = LowRegisterFrom(second); in HandleBitwiseOperation()
9035 vixl32::Register second_high = HighRegisterFrom(second); in HandleBitwiseOperation()
9036 vixl32::Register out_low = LowRegisterFrom(out); in HandleBitwiseOperation()
9037 vixl32::Register out_high = HighRegisterFrom(out); in HandleBitwiseOperation()
9058 vixl32::Register out_reg = RegisterFrom(out); in GenerateReferenceLoadOneRegister()
9092 vixl32::Register out_reg = RegisterFrom(out); in GenerateReferenceLoadTwoRegisters()
9093 vixl32::Register obj_reg = RegisterFrom(obj); in GenerateReferenceLoadTwoRegisters()
9119 vixl32::Register obj, in GenerateGcRootFieldLoad()
9122 vixl32::Register root_reg = RegisterFrom(root); in GenerateGcRootFieldLoad()
9151 size_t exact_size = wide_instructions * vixl32::k32BitT32InstructionSizeInBytes + in GenerateGcRootFieldLoad()
9152 narrow_instructions * vixl32::k16BitT32InstructionSizeInBytes; in GenerateGcRootFieldLoad()
9154 vixl32::Label return_address; in GenerateGcRootFieldLoad()
9200 size_t exact_size = wide_instructions * vixl32::k32BitT32InstructionSizeInBytes + in GenerateIntrinsicMoveWithBakerReadBarrier()
9201 narrow_instructions * vixl32::k16BitT32InstructionSizeInBytes; in GenerateIntrinsicMoveWithBakerReadBarrier()
9203 vixl32::Label return_address; in GenerateIntrinsicMoveWithBakerReadBarrier()
9218 vixl32::Register obj, in GenerateFieldLoadWithBakerReadBarrier()
9219 const vixl32::MemOperand& src, in GenerateFieldLoadWithBakerReadBarrier()
9244 DCHECK(src.GetAddrMode() == vixl32::Offset); in GenerateFieldLoadWithBakerReadBarrier()
9246 vixl32::Register ref_reg = RegisterFrom(ref, DataType::Type::kReference); in GenerateFieldLoadWithBakerReadBarrier()
9260 size_t exact_size = wide_instructions * vixl32::k32BitT32InstructionSizeInBytes + in GenerateFieldLoadWithBakerReadBarrier()
9261 narrow_instructions * vixl32::k16BitT32InstructionSizeInBytes; in GenerateFieldLoadWithBakerReadBarrier()
9263 vixl32::Label return_address; in GenerateFieldLoadWithBakerReadBarrier()
9291 vixl32::Register obj, in GenerateFieldLoadWithBakerReadBarrier()
9296 vixl32::Register base = obj; in GenerateFieldLoadWithBakerReadBarrier()
9308 vixl32::Register obj, in GenerateArrayLoadWithBakerReadBarrier()
9342 vixl32::Register index_reg = RegisterFrom(index, DataType::Type::kInt32); in GenerateArrayLoadWithBakerReadBarrier()
9343 vixl32::Register ref_reg = RegisterFrom(ref, DataType::Type::kReference); in GenerateArrayLoadWithBakerReadBarrier()
9344 vixl32::Register data_reg = RegisterFrom(temp, DataType::Type::kInt32); // Raw pointer. in GenerateArrayLoadWithBakerReadBarrier()
9355 size_t exact_size = wide_instructions * vixl32::k32BitT32InstructionSizeInBytes + in GenerateArrayLoadWithBakerReadBarrier()
9356 narrow_instructions * vixl32::k16BitT32InstructionSizeInBytes; in GenerateArrayLoadWithBakerReadBarrier()
9358 vixl32::Label return_address; in GenerateArrayLoadWithBakerReadBarrier()
9363 __ ldr(ref_reg, MemOperand(data_reg, index_reg, vixl32::LSL, scale_factor)); in GenerateArrayLoadWithBakerReadBarrier()
9383 vixl32::Register temp = temp_loc.IsValid() ? RegisterFrom(temp_loc) : temps.Acquire(); in MaybeGenerateMarkingRegisterCheck()
9496 vixl32::Register temp_reg = RegisterFrom(temp); in LoadMethod()
9507 vixl32::Register temp_reg = RegisterFrom(temp); in LoadMethod()
9566 vixl32::k16BitT32InstructionSizeInBytes, in GenerateStaticOrDirectCall()
9579 vixl32::k32BitT32InstructionSizeInBytes, in GenerateStaticOrDirectCall()
9626 vixl32::Register temp = RegisterFrom(temp_location); in GenerateVirtualCall()
9635 vixl32::Register receiver = calling_convention.GetRegisterAt(0); in GenerateVirtualCall()
9640 vixl32::kMaxInstructionSizeInBytes, in GenerateVirtualCall()
9668 vixl32::k16BitT32InstructionSizeInBytes, in GenerateVirtualCall()
9754 vixl32::Label placeholder_label; in EmitEntrypointThunkCall()
9769 vixl32::Label placeholder_label; in EmitBakerReadBarrierBne()
9802 void CodeGeneratorARMVIXL::LoadBootImageRelRoEntry(vixl32::Register reg, in LoadBootImageRelRoEntry()
9809 void CodeGeneratorARMVIXL::LoadBootImageAddress(vixl32::Register reg, in LoadBootImageAddress()
9836 void CodeGeneratorARMVIXL::LoadIntrinsicDeclaringClass(vixl32::Register reg, HInvoke* invoke) { in LoadIntrinsicDeclaringClass()
9938 for (const PatchInfo<vixl32::Label>& info : call_entrypoint_patches_) { in EmitLinkerPatches()
9965 assembler.LoadFromOffset(arm::kLoadWord, vixl32::pc, vixl32::r0, offset.Int32Value()); in EmitThunkCode()
9973 assembler.LoadFromOffset(arm::kLoadWord, vixl32::pc, tr, patch.EntrypointOffset()); in EmitThunkCode()
10018 vixl32::Register res = OutputRegister(instr); in VisitMultiplyAccumulate()
10019 vixl32::Register accumulator = in VisitMultiplyAccumulate()
10021 vixl32::Register mul_left = in VisitMultiplyAccumulate()
10023 vixl32::Register mul_right = in VisitMultiplyAccumulate()
10062 vixl32::Register value_reg = InputRegisterAt(switch_instr, 0); in VisitPackedSwitch()
10069 vixl32::Register temp_reg = temps.Acquire(); in VisitPackedSwitch()
10099 vixl32::Register table_base = RegisterFrom(locations->GetTemp(0)); in VisitPackedSwitch()
10104 vixl32::Register key_reg; in VisitPackedSwitch()
10117 vixl32::Register jump_offset = temps.Acquire(); in VisitPackedSwitch()
10123 (vixl32::kMaxInstructionSizeInBytes * 4) + jump_size, in VisitPackedSwitch()
10126 __ ldr(jump_offset, MemOperand(table_base, key_reg, vixl32::LSL, 2)); in VisitPackedSwitch()
10129 vixl32::Register target_address = table_base; in VisitPackedSwitch()
10216 vixl32::Register out) { in EmitMovwMovtPlaceholder()
10218 3 * vixl32::kMaxInstructionSizeInBytes, in EmitMovwMovtPlaceholder()
10236 vixl32::Register base_reg, in EmitGrayCheckAndFastPath()
10237 vixl32::MemOperand& lock_word, in EmitGrayCheckAndFastPath()
10238 vixl32::Label* slow_path, in EmitGrayCheckAndFastPath()
10240 vixl32::Label* throw_npe = nullptr) { in EmitGrayCheckAndFastPath()
10262 static vixl32::Register LoadReadBarrierMarkIntrospectionEntrypoint(ArmVIXLAssembler& assembler) { in LoadReadBarrierMarkIntrospectionEntrypoint()
10265 vixl32::Register entrypoint = mr; in LoadReadBarrierMarkIntrospectionEntrypoint()
10280 vixl32::Register base_reg(BakerReadBarrierFirstRegField::Decode(encoded_data)); in CompileBakerReadBarrierThunk()
10282 vixl32::Register holder_reg(BakerReadBarrierSecondRegField::Decode(encoded_data)); in CompileBakerReadBarrierThunk()
10293 vixl32::Label throw_npe_label; in CompileBakerReadBarrierThunk()
10294 vixl32::Label* throw_npe = nullptr; in CompileBakerReadBarrierThunk()
10303 vixl32::Label slow_path; in CompileBakerReadBarrierThunk()
10313 vixl32::Register ep_reg = LoadReadBarrierMarkIntrospectionEntrypoint(assembler); in CompileBakerReadBarrierThunk()
10333 vixl32::Register base_reg(BakerReadBarrierFirstRegField::Decode(encoded_data)); in CompileBakerReadBarrierThunk()
10340 vixl32::Label slow_path; in CompileBakerReadBarrierThunk()
10353 vixl32::Register ep_reg = LoadReadBarrierMarkIntrospectionEntrypoint(assembler); in CompileBakerReadBarrierThunk()
10366 vixl32::Register root_reg(BakerReadBarrierFirstRegField::Decode(encoded_data)); in CompileBakerReadBarrierThunk()
10373 vixl32::Label return_label, not_marked, forwarding_address; in CompileBakerReadBarrierThunk()
10387 vixl32::Register ep_reg = LoadReadBarrierMarkIntrospectionEntrypoint(assembler); in CompileBakerReadBarrierThunk()