Lines Matching refs:rl_src

44 void Mir2Lir::LoadValueDirect(RegLocation rl_src, RegStorage r_dest) {  in LoadValueDirect()  argument
45 rl_src = rl_src.wide ? UpdateLocWide(rl_src) : UpdateLoc(rl_src); in LoadValueDirect()
46 if (rl_src.location == kLocPhysReg) { in LoadValueDirect()
47 OpRegCopy(r_dest, rl_src.reg); in LoadValueDirect()
48 } else if (IsInexpensiveConstant(rl_src)) { in LoadValueDirect()
50 DCHECK(!rl_src.ref || (mir_graph_->ConstantValue(rl_src) == 0)); in LoadValueDirect()
51 LoadConstantNoClobber(r_dest, mir_graph_->ConstantValue(rl_src)); in LoadValueDirect()
53 DCHECK((rl_src.location == kLocDalvikFrame) || in LoadValueDirect()
54 (rl_src.location == kLocCompilerTemp)); in LoadValueDirect()
57 if (rl_src.ref) { in LoadValueDirect()
59 } else if (rl_src.wide) { in LoadValueDirect()
64 LoadBaseDisp(TargetPtrReg(kSp), SRegOffset(rl_src.s_reg_low), r_dest, op_size, kNotVolatile); in LoadValueDirect()
73 void Mir2Lir::LoadValueDirectFixed(RegLocation rl_src, RegStorage r_dest) { in LoadValueDirectFixed() argument
76 LoadValueDirect(rl_src, r_dest); in LoadValueDirectFixed()
84 void Mir2Lir::LoadValueDirectWide(RegLocation rl_src, RegStorage r_dest) { in LoadValueDirectWide() argument
85 rl_src = UpdateLocWide(rl_src); in LoadValueDirectWide()
86 if (rl_src.location == kLocPhysReg) { in LoadValueDirectWide()
87 OpRegCopyWide(r_dest, rl_src.reg); in LoadValueDirectWide()
88 } else if (IsInexpensiveConstant(rl_src)) { in LoadValueDirectWide()
89 LoadConstantWide(r_dest, mir_graph_->ConstantValueWide(rl_src)); in LoadValueDirectWide()
91 DCHECK((rl_src.location == kLocDalvikFrame) || in LoadValueDirectWide()
92 (rl_src.location == kLocCompilerTemp)); in LoadValueDirectWide()
94 LoadBaseDisp(TargetPtrReg(kSp), SRegOffset(rl_src.s_reg_low), r_dest, k64, kNotVolatile); in LoadValueDirectWide()
103 void Mir2Lir::LoadValueDirectWideFixed(RegLocation rl_src, RegStorage r_dest) { in LoadValueDirectWideFixed() argument
106 LoadValueDirectWide(rl_src, r_dest); in LoadValueDirectWideFixed()
109 RegLocation Mir2Lir::LoadValue(RegLocation rl_src, RegisterClass op_kind) { in LoadValue() argument
110 DCHECK(!rl_src.ref || op_kind == kRefReg); in LoadValue()
111 rl_src = UpdateLoc(rl_src); in LoadValue()
112 if (rl_src.location == kLocPhysReg) { in LoadValue()
113 if (!RegClassMatches(op_kind, rl_src.reg)) { in LoadValue()
115 RegStorage new_reg = AllocTypedTemp(rl_src.fp, op_kind); in LoadValue()
116 OpRegCopy(new_reg, rl_src.reg); in LoadValue()
118 Clobber(rl_src.reg); in LoadValue()
119 FreeTemp(rl_src.reg); in LoadValue()
121 rl_src.reg = new_reg; in LoadValue()
122 MarkLive(rl_src); in LoadValue()
124 return rl_src; in LoadValue()
127 DCHECK_NE(rl_src.s_reg_low, INVALID_SREG); in LoadValue()
128 rl_src.reg = AllocTypedTemp(rl_src.fp, op_kind); in LoadValue()
129 LoadValueDirect(rl_src, rl_src.reg); in LoadValue()
130 rl_src.location = kLocPhysReg; in LoadValue()
131 MarkLive(rl_src); in LoadValue()
132 return rl_src; in LoadValue()
135 void Mir2Lir::StoreValue(RegLocation rl_dest, RegLocation rl_src) { in StoreValue() argument
149 DCHECK(!rl_src.wide); in StoreValue()
150 rl_src = UpdateLoc(rl_src); in StoreValue()
152 if (rl_src.location == kLocPhysReg) { in StoreValue()
153 if (IsLive(rl_src.reg) || in StoreValue()
154 IsPromoted(rl_src.reg) || in StoreValue()
157 rl_dest = EvalLoc(rl_dest, rl_dest.ref || rl_src.ref ? kRefReg : kAnyReg, false); in StoreValue()
158 OpRegCopy(rl_dest.reg, rl_src.reg); in StoreValue()
161 rl_dest.reg = rl_src.reg; in StoreValue()
162 Clobber(rl_src.reg); in StoreValue()
167 LoadValueDirect(rl_src, rl_dest.reg); in StoreValue()
193 RegLocation Mir2Lir::LoadValueWide(RegLocation rl_src, RegisterClass op_kind) { in LoadValueWide() argument
194 DCHECK(rl_src.wide); in LoadValueWide()
195 rl_src = UpdateLocWide(rl_src); in LoadValueWide()
196 if (rl_src.location == kLocPhysReg) { in LoadValueWide()
197 if (!RegClassMatches(op_kind, rl_src.reg)) { in LoadValueWide()
199 RegStorage new_regs = AllocTypedTempWide(rl_src.fp, op_kind); in LoadValueWide()
200 OpRegCopyWide(new_regs, rl_src.reg); in LoadValueWide()
202 Clobber(rl_src.reg); in LoadValueWide()
203 FreeTemp(rl_src.reg); in LoadValueWide()
205 rl_src.reg = new_regs; in LoadValueWide()
206 MarkLive(rl_src); in LoadValueWide()
208 return rl_src; in LoadValueWide()
211 DCHECK_NE(rl_src.s_reg_low, INVALID_SREG); in LoadValueWide()
212 DCHECK_NE(GetSRegHi(rl_src.s_reg_low), INVALID_SREG); in LoadValueWide()
213 rl_src.reg = AllocTypedTempWide(rl_src.fp, op_kind); in LoadValueWide()
214 LoadValueDirectWide(rl_src, rl_src.reg); in LoadValueWide()
215 rl_src.location = kLocPhysReg; in LoadValueWide()
216 MarkLive(rl_src); in LoadValueWide()
217 return rl_src; in LoadValueWide()
220 void Mir2Lir::StoreValueWide(RegLocation rl_dest, RegLocation rl_src) { in StoreValueWide() argument
234 DCHECK(rl_src.wide); in StoreValueWide()
235 rl_src = UpdateLocWide(rl_src); in StoreValueWide()
237 if (rl_src.location == kLocPhysReg) { in StoreValueWide()
238 if (IsLive(rl_src.reg) || in StoreValueWide()
239 IsPromoted(rl_src.reg) || in StoreValueWide()
247 OpRegCopyWide(rl_dest.reg, rl_src.reg); in StoreValueWide()
250 rl_dest.reg = rl_src.reg; in StoreValueWide()
251 Clobber(rl_src.reg); in StoreValueWide()
256 LoadValueDirectWide(rl_src, rl_dest.reg); in StoreValueWide()
278 void Mir2Lir::StoreFinalValue(RegLocation rl_dest, RegLocation rl_src) { in StoreFinalValue() argument
279 DCHECK_EQ(rl_src.location, kLocPhysReg); in StoreFinalValue()
282 OpRegCopy(rl_dest.reg, rl_src.reg); in StoreFinalValue()
286 rl_dest.reg = rl_src.reg; in StoreFinalValue()
287 Clobber(rl_src.reg); in StoreFinalValue()
309 void Mir2Lir::StoreFinalValueWide(RegLocation rl_dest, RegLocation rl_src) { in StoreFinalValueWide() argument
311 DCHECK(rl_src.wide); in StoreFinalValueWide()
312 DCHECK_EQ(rl_src.location, kLocPhysReg); in StoreFinalValueWide()
315 OpRegCopyWide(rl_dest.reg, rl_src.reg); in StoreFinalValueWide()
319 rl_dest.reg = rl_src.reg; in StoreFinalValueWide()
320 Clobber(rl_src.reg); in StoreFinalValueWide()