Lines Matching refs:rl_src
413 void Mir2Lir::GenCompareZeroAndBranch(Instruction::Code opcode, RegLocation rl_src, LIR* taken) { in GenCompareZeroAndBranch() argument
415 RegisterClass reg_class = rl_src.ref ? kRefReg : kCoreReg; in GenCompareZeroAndBranch()
416 rl_src = LoadValue(rl_src, reg_class); in GenCompareZeroAndBranch()
440 OpCmpImmBranch(cond, rl_src.reg, 0, taken); in GenCompareZeroAndBranch()
443 void Mir2Lir::GenIntToLong(RegLocation rl_dest, RegLocation rl_src) { in GenIntToLong() argument
445 if (rl_src.location == kLocPhysReg) { in GenIntToLong()
446 OpRegCopy(rl_result.reg, rl_src.reg); in GenIntToLong()
448 LoadValueDirect(rl_src, rl_result.reg.GetLow()); in GenIntToLong()
454 void Mir2Lir::GenLongToInt(RegLocation rl_dest, RegLocation rl_src) { in GenLongToInt() argument
455 rl_src = UpdateLocWide(rl_src); in GenLongToInt()
456 rl_src = NarrowRegLoc(rl_src); in GenLongToInt()
457 StoreValue(rl_dest, rl_src); in GenLongToInt()
461 RegLocation rl_src) { in GenIntNarrowing() argument
462 rl_src = LoadValue(rl_src, kCoreReg); in GenIntNarrowing()
478 OpRegReg(op, rl_result.reg, rl_src.reg); in GenIntNarrowing()
488 RegLocation rl_src) { in GenNewArray() argument
504 rl_src, true); in GenNewArray()
507 CallRuntimeHelperImmRegLocationMethod(kQuickAllocArrayResolved, direct_type_ptr, rl_src, in GenNewArray()
512 CallRuntimeHelperImmRegLocationMethod(kQuickAllocArray, type_idx, rl_src, true); in GenNewArray()
515 CallRuntimeHelperImmRegLocationMethod(kQuickAllocArrayWithAccessCheck, type_idx, rl_src, true); in GenNewArray()
674 void Mir2Lir::GenFillArrayData(MIR* mir, DexOffset table_offset, RegLocation rl_src) { in GenFillArrayData() argument
682 CallRuntimeHelperImmRegLocation(kQuickHandleFillArrayData, table_offset_from_start, rl_src, true); in GenFillArrayData()
685 void Mir2Lir::GenSput(MIR* mir, RegLocation rl_src, OpSize size) { in GenSput() argument
715 rl_src = LoadValueWide(rl_src, reg_class); in GenSput()
717 rl_src = LoadValue(rl_src, reg_class); in GenSput()
720 StoreRefDisp(r_base, field_info.FieldOffset().Int32Value(), rl_src.reg, in GenSput()
723 StoreBaseDisp(r_base, field_info.FieldOffset().Int32Value(), rl_src.reg, size, in GenSput()
726 if (IsRef(size) && !mir_graph_->IsConstantNullRef(rl_src)) { in GenSput()
727 MarkGCCard(mir->optimization_flags, rl_src.reg, r_base); in GenSput()
758 CallRuntimeHelperImmRegLocation(target, field_info.FieldIndex(), rl_src, true); in GenSput()
942 RegLocation rl_src, RegLocation rl_obj) { in GenIPut() argument
958 rl_src = LoadValueWide(rl_src, reg_class); in GenIPut()
960 rl_src = LoadValue(rl_src, reg_class); in GenIPut()
966 null_ck_insn = StoreRefDisp(rl_obj.reg, field_offset, rl_src.reg, field_info.IsVolatile() ? in GenIPut()
969 null_ck_insn = StoreBaseDisp(rl_obj.reg, field_offset, rl_src.reg, size, in GenIPut()
973 if (IsRef(size) && !mir_graph_->IsConstantNullRef(rl_src)) { in GenIPut()
974 MarkGCCard(opt_flags, rl_src.reg, rl_obj.reg); in GenIPut()
1003 CallRuntimeHelperImmRegLocationRegLocation(target, field_info.FieldIndex(), rl_obj, rl_src, in GenIPut()
1009 RegLocation rl_src) { in GenArrayObjPut() argument
1017 CallRuntimeHelperRegLocationRegLocationRegLocation(target, rl_array, rl_index, rl_src, true); in GenArrayObjPut()
1148 void Mir2Lir::GenThrow(RegLocation rl_src) { in GenThrow() argument
1150 CallRuntimeHelperRegLocation(kQuickDeliverException, rl_src, true); in GenThrow()
1156 RegLocation rl_src) { in GenInstanceofFinal() argument
1160 RegLocation object = LoadValue(rl_src, kRefReg); in GenInstanceofFinal()
1218 RegLocation rl_src) { in GenInstanceofCallingHelper() argument
1230 LoadValueDirectFixed(rl_src, ref_reg); // kArg0 <= ref in GenInstanceofCallingHelper()
1233 LoadValueDirectFixed(rl_src, ref_reg); // kArg0 <= ref in GenInstanceofCallingHelper()
1239 LoadValueDirectFixed(rl_src, ref_reg); // kArg0 <= ref in GenInstanceofCallingHelper()
1257 LoadValueDirectFixed(rl_src, ref_reg); // kArg0 <= ref in GenInstanceofCallingHelper()
1317 void Mir2Lir::GenInstanceof(uint32_t type_idx, RegLocation rl_dest, RegLocation rl_src) { in GenInstanceof() argument
1329 GenInstanceofFinal(use_declaring_class, type_idx, rl_dest, rl_src); in GenInstanceof()
1333 type_idx, rl_dest, rl_src); in GenInstanceof()
1338 RegLocation rl_src) { in GenCheckCast() argument
1390 LoadValueDirectFixed(rl_src, TargetReg(kArg0, kRef)); // kArg0 <= ref in GenCheckCast()
1672 RegLocation rl_src, RegLocation rl_dest, int lit) { in HandleEasyDivRem() argument
1681 rl_src = LoadValue(rl_src, kCoreReg); in HandleEasyDivRem()
1687 OpRegRegImm(kOpLsr, t_reg, rl_src.reg, 32 - k); in HandleEasyDivRem()
1688 OpRegRegReg(kOpAdd, t_reg, t_reg, rl_src.reg); in HandleEasyDivRem()
1691 OpRegRegImm(kOpAsr, t_reg, rl_src.reg, 31); in HandleEasyDivRem()
1693 OpRegRegReg(kOpAdd, t_reg, t_reg, rl_src.reg); in HandleEasyDivRem()
1700 OpRegRegImm(kOpLsr, t_reg1, rl_src.reg, 32 - k); in HandleEasyDivRem()
1701 OpRegRegReg(kOpAdd, t_reg2, t_reg1, rl_src.reg); in HandleEasyDivRem()
1705 OpRegRegImm(kOpAsr, t_reg1, rl_src.reg, 31); in HandleEasyDivRem()
1707 OpRegRegReg(kOpAdd, t_reg2, t_reg1, rl_src.reg); in HandleEasyDivRem()
1718 bool Mir2Lir::HandleEasyMultiply(RegLocation rl_src, RegLocation rl_dest, int lit) { in HandleEasyMultiply() argument
1729 rl_src = LoadValue(rl_src, kCoreReg); in HandleEasyMultiply()
1731 OpRegCopy(rl_result.reg, rl_src.reg); in HandleEasyMultiply()
1737 return EasyMultiply(rl_src, rl_dest, lit); in HandleEasyMultiply()
1752 rl_src = LoadValue(rl_src, kCoreReg); in HandleEasyMultiply()
1756 OpRegRegImm(kOpLsl, rl_result.reg, rl_src.reg, CTZ(lit)); in HandleEasyMultiply()
1761 GenMultiplyByTwoBitMultiplier(rl_src, rl_result, lit, first_bit, second_bit); in HandleEasyMultiply()
1767 OpRegRegImm(kOpLsl, t_reg, rl_src.reg, CTZ(lit + 1)); in HandleEasyMultiply()
1768 OpRegRegReg(kOpSub, rl_result.reg, t_reg, rl_src.reg); in HandleEasyMultiply()
1802 void Mir2Lir::GenArithOpIntLit(Instruction::Code opcode, RegLocation rl_dest, RegLocation rl_src, in GenArithOpIntLit() argument
1812 rl_src = LoadValue(rl_src, kCoreReg); in GenArithOpIntLit()
1815 OpRegRegImm(kOpRsub, rl_result.reg, rl_src.reg, lit); in GenArithOpIntLit()
1817 OpRegReg(kOpNeg, rl_result.reg, rl_src.reg); in GenArithOpIntLit()
1838 if (HandleEasyMultiply(rl_src, rl_dest, lit)) { in GenArithOpIntLit()
1904 if (HandleEasyDivRem(opcode, is_div, rl_src, rl_dest, lit)) { in GenArithOpIntLit()
1911 rl_src = LoadValue(rl_src, kCoreReg); in GenArithOpIntLit()
1912 rl_result = GenDivRemLit(rl_dest, rl_src.reg, lit, is_div); in GenArithOpIntLit()
1915 rl_result = GenDivRemLit(rl_dest, rl_src, lit, is_div); in GenArithOpIntLit()
1922 rl_src = LoadValue(rl_src, kCoreReg); in GenArithOpIntLit()
1923 rl_result = GenDivRemLit(rl_dest, rl_src.reg, lit, is_div); in GenArithOpIntLit()
1930 LoadValueDirectFixed(rl_src, TargetReg(kArg0, kNotWide)); in GenArithOpIntLit()
1944 rl_src = LoadValue(rl_src, kCoreReg); in GenArithOpIntLit()
1948 OpRegCopy(rl_result.reg, rl_src.reg); in GenArithOpIntLit()
1950 OpRegRegImm(op, rl_result.reg, rl_src.reg, lit); in GenArithOpIntLit()
2066 RegLocation rl_src, RegisterClass return_reg_class) { in GenConversionCall() argument
2073 CallRuntimeHelperRegLocation(trampoline, rl_src, false); in GenConversionCall()
2139 void Mir2Lir::GenMonitorEnter(int opt_flags, RegLocation rl_src) { in GenMonitorEnter() argument
2142 CallRuntimeHelperRegLocation(kQuickLockObject, rl_src, true); in GenMonitorEnter()
2146 void Mir2Lir::GenMonitorExit(int opt_flags, RegLocation rl_src) { in GenMonitorExit() argument
2149 CallRuntimeHelperRegLocation(kQuickUnlockObject, rl_src, true); in GenMonitorExit()
2159 void Mir2Lir::GenSmallPackedSwitch(MIR* mir, DexOffset table_offset, RegLocation rl_src) { in GenSmallPackedSwitch() argument
2168 rl_src = LoadValue(rl_src, kCoreReg); in GenSmallPackedSwitch()
2179 OpCmpImmBranch(kCondEq, rl_src.reg, starting_key + i, &block_label_list_[case_block_id]); in GenSmallPackedSwitch()
2191 OpCmpBranch(kCondEq, rl_src.reg, key_temp, &block_label_list_[case_block_id]); in GenSmallPackedSwitch()
2198 OpCmpBranch(kCondEq, rl_src.reg, key_temp, &block_label_list_[case_block_id]); in GenSmallPackedSwitch()
2206 OpCmpImmBranch(kCondEq, rl_src.reg, starting_key + i, &block_label_list_[case_block_id]); in GenSmallPackedSwitch()
2212 void Mir2Lir::GenPackedSwitch(MIR* mir, DexOffset table_offset, RegLocation rl_src) { in GenPackedSwitch() argument
2220 GenSmallPackedSwitch(mir, table_offset, rl_src); in GenPackedSwitch()
2223 GenLargePackedSwitch(mir, table_offset, rl_src); in GenPackedSwitch()
2227 void Mir2Lir::GenSmallSparseSwitch(MIR* mir, DexOffset table_offset, RegLocation rl_src) { in GenSmallSparseSwitch() argument
2233 rl_src = LoadValue(rl_src, kCoreReg); in GenSmallSparseSwitch()
2238 OpCmpImmBranch(kCondEq, rl_src.reg, key, &block_label_list_[case_block_id]); in GenSmallSparseSwitch()
2244 void Mir2Lir::GenSparseSwitch(MIR* mir, DexOffset table_offset, RegLocation rl_src) { in GenSparseSwitch() argument
2252 GenSmallSparseSwitch(mir, table_offset, rl_src); in GenSparseSwitch()
2255 GenLargeSparseSwitch(mir, table_offset, rl_src); in GenSparseSwitch()