Lines Matching refs:rl_dest
135 void Mir2Lir::StoreValue(RegLocation rl_dest, RegLocation rl_src) {
143 (rl_dest.s_reg_low != live_sreg_));
144 live_sreg_ = rl_dest.s_reg_low;
148 DCHECK(!rl_dest.wide);
151 rl_dest = UpdateLoc(rl_dest);
155 (rl_dest.location == kLocPhysReg)) {
157 rl_dest = EvalLoc(rl_dest, rl_dest.ref || rl_src.ref ? kRefReg : kAnyReg, false);
158 OpRegCopy(rl_dest.reg, rl_src.reg);
161 rl_dest.reg = rl_src.reg;
166 rl_dest = EvalLoc(rl_dest, rl_dest.ref ? kRefReg : kAnyReg, false);
167 LoadValueDirect(rl_src, rl_dest.reg);
171 MarkLive(rl_dest);
172 MarkDirty(rl_dest);
175 ResetDefLoc(rl_dest);
176 if (IsDirty(rl_dest.reg) && LiveOut(rl_dest.s_reg_low)) {
179 if (rl_dest.ref) {
180 StoreRefDisp(TargetPtrReg(kSp), SRegOffset(rl_dest.s_reg_low), rl_dest.reg, kNotVolatile);
182 Store32Disp(TargetPtrReg(kSp), SRegOffset(rl_dest.s_reg_low), rl_dest.reg);
184 MarkClean(rl_dest);
186 if (!rl_dest.ref) {
188 MarkDef(rl_dest, def_start, def_end);
220 void Mir2Lir::StoreValueWide(RegLocation rl_dest, RegLocation rl_src) {
228 (rl_dest.s_reg_low != live_sreg_));
229 live_sreg_ = rl_dest.s_reg_low;
233 DCHECK(rl_dest.wide);
236 rl_dest = UpdateLocWide(rl_dest);
240 (rl_dest.location == kLocPhysReg)) {
246 rl_dest = EvalLoc(rl_dest, kAnyReg, false);
247 OpRegCopyWide(rl_dest.reg, rl_src.reg);
250 rl_dest.reg = rl_src.reg;
255 rl_dest = EvalLoc(rl_dest, kAnyReg, false);
256 LoadValueDirectWide(rl_src, rl_dest.reg);
260 MarkLive(rl_dest);
261 MarkWide(rl_dest.reg);
262 MarkDirty(rl_dest);
264 ResetDefLocWide(rl_dest);
265 if (IsDirty(rl_dest.reg) && (LiveOut(rl_dest.s_reg_low) ||
266 LiveOut(GetSRegHi(rl_dest.s_reg_low)))) {
268 DCHECK_EQ((mir_graph_->SRegToVReg(rl_dest.s_reg_low)+1),
269 mir_graph_->SRegToVReg(GetSRegHi(rl_dest.s_reg_low)));
271 StoreBaseDisp(TargetPtrReg(kSp), SRegOffset(rl_dest.s_reg_low), rl_dest.reg, k64, kNotVolatile);
272 MarkClean(rl_dest);
274 MarkDefWide(rl_dest, def_start, def_end);
278 void Mir2Lir::StoreFinalValue(RegLocation rl_dest, RegLocation rl_src) {
281 if (rl_dest.location == kLocPhysReg) {
282 OpRegCopy(rl_dest.reg, rl_src.reg);
285 rl_dest.location = kLocPhysReg;
286 rl_dest.reg = rl_src.reg;
291 MarkLive(rl_dest);
292 MarkDirty(rl_dest);
295 ResetDefLoc(rl_dest);
296 if (IsDirty(rl_dest.reg) && LiveOut(rl_dest.s_reg_low)) {
299 Store32Disp(TargetPtrReg(kSp), SRegOffset(rl_dest.s_reg_low), rl_dest.reg);
300 MarkClean(rl_dest);
302 if (!rl_dest.ref) {
304 MarkDef(rl_dest, def_start, def_end);
309 void Mir2Lir::StoreFinalValueWide(RegLocation rl_dest, RegLocation rl_src) {
310 DCHECK(rl_dest.wide);
314 if (rl_dest.location == kLocPhysReg) {
315 OpRegCopyWide(rl_dest.reg, rl_src.reg);
318 rl_dest.location = kLocPhysReg;
319 rl_dest.reg = rl_src.reg;
324 MarkLive(rl_dest);
325 MarkWide(rl_dest.reg);
326 MarkDirty(rl_dest);
328 ResetDefLocWide(rl_dest);
329 if (IsDirty(rl_dest.reg) && (LiveOut(rl_dest.s_reg_low) ||
330 LiveOut(GetSRegHi(rl_dest.s_reg_low)))) {
332 DCHECK_EQ((mir_graph_->SRegToVReg(rl_dest.s_reg_low)+1),
333 mir_graph_->SRegToVReg(GetSRegHi(rl_dest.s_reg_low)));
335 StoreBaseDisp(TargetPtrReg(kSp), SRegOffset(rl_dest.s_reg_low), rl_dest.reg, k64, kNotVolatile);
336 MarkClean(rl_dest);
338 MarkDefWide(rl_dest, def_start, def_end);