Lines Matching refs:rl_src

83 void Mir2Lir::LoadValueDirect(RegLocation rl_src, RegStorage r_dest) {  in LoadValueDirect()  argument
84 rl_src = UpdateLoc(rl_src); in LoadValueDirect()
85 if (rl_src.location == kLocPhysReg) { in LoadValueDirect()
86 OpRegCopy(r_dest, rl_src.reg); in LoadValueDirect()
87 } else if (IsInexpensiveConstant(rl_src)) { in LoadValueDirect()
89 DCHECK(!rl_src.ref || (mir_graph_->ConstantValue(rl_src) == 0)); in LoadValueDirect()
90 LoadConstantNoClobber(r_dest, mir_graph_->ConstantValue(rl_src)); in LoadValueDirect()
92 DCHECK((rl_src.location == kLocDalvikFrame) || in LoadValueDirect()
93 (rl_src.location == kLocCompilerTemp)); in LoadValueDirect()
95 if (rl_src.ref) { in LoadValueDirect()
96 LoadRefDisp(TargetPtrReg(kSp), SRegOffset(rl_src.s_reg_low), r_dest, kNotVolatile); in LoadValueDirect()
98 Load32Disp(TargetPtrReg(kSp), SRegOffset(rl_src.s_reg_low), r_dest); in LoadValueDirect()
108 void Mir2Lir::LoadValueDirectFixed(RegLocation rl_src, RegStorage r_dest) { in LoadValueDirectFixed() argument
111 LoadValueDirect(rl_src, r_dest); in LoadValueDirectFixed()
119 void Mir2Lir::LoadValueDirectWide(RegLocation rl_src, RegStorage r_dest) { in LoadValueDirectWide() argument
120 rl_src = UpdateLocWide(rl_src); in LoadValueDirectWide()
121 if (rl_src.location == kLocPhysReg) { in LoadValueDirectWide()
122 OpRegCopyWide(r_dest, rl_src.reg); in LoadValueDirectWide()
123 } else if (IsInexpensiveConstant(rl_src)) { in LoadValueDirectWide()
124 LoadConstantWide(r_dest, mir_graph_->ConstantValueWide(rl_src)); in LoadValueDirectWide()
126 DCHECK((rl_src.location == kLocDalvikFrame) || in LoadValueDirectWide()
127 (rl_src.location == kLocCompilerTemp)); in LoadValueDirectWide()
129 LoadBaseDisp(TargetPtrReg(kSp), SRegOffset(rl_src.s_reg_low), r_dest, k64, kNotVolatile); in LoadValueDirectWide()
138 void Mir2Lir::LoadValueDirectWideFixed(RegLocation rl_src, RegStorage r_dest) { in LoadValueDirectWideFixed() argument
141 LoadValueDirectWide(rl_src, r_dest); in LoadValueDirectWideFixed()
144 RegLocation Mir2Lir::LoadValue(RegLocation rl_src, RegisterClass op_kind) { in LoadValue() argument
145 DCHECK(!rl_src.ref || op_kind == kRefReg); in LoadValue()
146 rl_src = UpdateLoc(rl_src); in LoadValue()
147 if (rl_src.location == kLocPhysReg) { in LoadValue()
148 if (!RegClassMatches(op_kind, rl_src.reg)) { in LoadValue()
150 RegStorage new_reg = AllocTypedTemp(rl_src.fp, op_kind); in LoadValue()
151 OpRegCopy(new_reg, rl_src.reg); in LoadValue()
153 Clobber(rl_src.reg); in LoadValue()
155 rl_src.reg = new_reg; in LoadValue()
156 MarkLive(rl_src); in LoadValue()
158 return rl_src; in LoadValue()
161 DCHECK_NE(rl_src.s_reg_low, INVALID_SREG); in LoadValue()
162 rl_src.reg = AllocTypedTemp(rl_src.fp, op_kind); in LoadValue()
163 LoadValueDirect(rl_src, rl_src.reg); in LoadValue()
164 rl_src.location = kLocPhysReg; in LoadValue()
165 MarkLive(rl_src); in LoadValue()
166 return rl_src; in LoadValue()
169 RegLocation Mir2Lir::LoadValue(RegLocation rl_src) { in LoadValue() argument
170 return LoadValue(rl_src, LocToRegClass(rl_src)); in LoadValue()
173 void Mir2Lir::StoreValue(RegLocation rl_dest, RegLocation rl_src) { in StoreValue() argument
187 DCHECK(!rl_src.wide); in StoreValue()
188 rl_src = UpdateLoc(rl_src); in StoreValue()
190 if (rl_src.location == kLocPhysReg) { in StoreValue()
191 if (IsLive(rl_src.reg) || in StoreValue()
192 IsPromoted(rl_src.reg) || in StoreValue()
195 rl_dest = EvalLoc(rl_dest, rl_dest.ref || rl_src.ref ? kRefReg : kAnyReg, false); in StoreValue()
196 OpRegCopy(rl_dest.reg, rl_src.reg); in StoreValue()
199 rl_dest.reg = rl_src.reg; in StoreValue()
200 Clobber(rl_src.reg); in StoreValue()
205 LoadValueDirect(rl_src, rl_dest.reg); in StoreValue()
231 RegLocation Mir2Lir::LoadValueWide(RegLocation rl_src, RegisterClass op_kind) { in LoadValueWide() argument
232 DCHECK(rl_src.wide); in LoadValueWide()
233 rl_src = UpdateLocWide(rl_src); in LoadValueWide()
234 if (rl_src.location == kLocPhysReg) { in LoadValueWide()
235 if (!RegClassMatches(op_kind, rl_src.reg)) { in LoadValueWide()
237 RegStorage new_regs = AllocTypedTempWide(rl_src.fp, op_kind); in LoadValueWide()
238 OpRegCopyWide(new_regs, rl_src.reg); in LoadValueWide()
240 Clobber(rl_src.reg); in LoadValueWide()
242 rl_src.reg = new_regs; in LoadValueWide()
243 MarkLive(rl_src); in LoadValueWide()
245 return rl_src; in LoadValueWide()
248 DCHECK_NE(rl_src.s_reg_low, INVALID_SREG); in LoadValueWide()
249 DCHECK_NE(GetSRegHi(rl_src.s_reg_low), INVALID_SREG); in LoadValueWide()
250 rl_src.reg = AllocTypedTempWide(rl_src.fp, op_kind); in LoadValueWide()
251 LoadValueDirectWide(rl_src, rl_src.reg); in LoadValueWide()
252 rl_src.location = kLocPhysReg; in LoadValueWide()
253 MarkLive(rl_src); in LoadValueWide()
254 return rl_src; in LoadValueWide()
257 void Mir2Lir::StoreValueWide(RegLocation rl_dest, RegLocation rl_src) { in StoreValueWide() argument
271 DCHECK(rl_src.wide); in StoreValueWide()
272 rl_src = UpdateLocWide(rl_src); in StoreValueWide()
274 if (rl_src.location == kLocPhysReg) { in StoreValueWide()
275 if (IsLive(rl_src.reg) || in StoreValueWide()
276 IsPromoted(rl_src.reg) || in StoreValueWide()
284 OpRegCopyWide(rl_dest.reg, rl_src.reg); in StoreValueWide()
287 rl_dest.reg = rl_src.reg; in StoreValueWide()
288 Clobber(rl_src.reg); in StoreValueWide()
293 LoadValueDirectWide(rl_src, rl_dest.reg); in StoreValueWide()
315 void Mir2Lir::StoreFinalValue(RegLocation rl_dest, RegLocation rl_src) { in StoreFinalValue() argument
316 DCHECK_EQ(rl_src.location, kLocPhysReg); in StoreFinalValue()
319 OpRegCopy(rl_dest.reg, rl_src.reg); in StoreFinalValue()
323 rl_dest.reg = rl_src.reg; in StoreFinalValue()
324 Clobber(rl_src.reg); in StoreFinalValue()
346 void Mir2Lir::StoreFinalValueWide(RegLocation rl_dest, RegLocation rl_src) { in StoreFinalValueWide() argument
348 DCHECK(rl_src.wide); in StoreFinalValueWide()
349 DCHECK_EQ(rl_src.location, kLocPhysReg); in StoreFinalValueWide()
352 OpRegCopyWide(rl_dest.reg, rl_src.reg); in StoreFinalValueWide()
356 rl_dest.reg = rl_src.reg; in StoreFinalValueWide()
357 Clobber(rl_src.reg); in StoreFinalValueWide()