Lines Matching refs:rl_src

92 void Mir2Lir::LoadValueDirect(RegLocation rl_src, int r_dest) {
93 rl_src = UpdateLoc(rl_src);
94 if (rl_src.location == kLocPhysReg) {
95 OpRegCopy(r_dest, rl_src.low_reg);
96 } else if (IsInexpensiveConstant(rl_src)) {
97 LoadConstantNoClobber(r_dest, mir_graph_->ConstantValue(rl_src));
99 DCHECK((rl_src.location == kLocDalvikFrame) ||
100 (rl_src.location == kLocCompilerTemp));
101 LoadWordDisp(TargetReg(kSp), SRegOffset(rl_src.s_reg_low), r_dest);
110 void Mir2Lir::LoadValueDirectFixed(RegLocation rl_src, int r_dest) {
113 LoadValueDirect(rl_src, r_dest);
121 void Mir2Lir::LoadValueDirectWide(RegLocation rl_src, int reg_lo,
123 rl_src = UpdateLocWide(rl_src);
124 if (rl_src.location == kLocPhysReg) {
125 OpRegCopyWide(reg_lo, reg_hi, rl_src.low_reg, rl_src.high_reg);
126 } else if (IsInexpensiveConstant(rl_src)) {
127 LoadConstantWide(reg_lo, reg_hi, mir_graph_->ConstantValueWide(rl_src));
129 DCHECK((rl_src.location == kLocDalvikFrame) ||
130 (rl_src.location == kLocCompilerTemp));
131 LoadBaseDispWide(TargetReg(kSp), SRegOffset(rl_src.s_reg_low),
141 void Mir2Lir::LoadValueDirectWideFixed(RegLocation rl_src, int reg_lo,
147 LoadValueDirectWide(rl_src, reg_lo, reg_hi);
150 RegLocation Mir2Lir::LoadValue(RegLocation rl_src, RegisterClass op_kind) {
151 rl_src = EvalLoc(rl_src, op_kind, false);
152 if (IsInexpensiveConstant(rl_src) || rl_src.location != kLocPhysReg) {
153 LoadValueDirect(rl_src, rl_src.low_reg);
154 rl_src.location = kLocPhysReg;
155 MarkLive(rl_src.low_reg, rl_src.s_reg_low);
157 return rl_src;
160 void Mir2Lir::StoreValue(RegLocation rl_dest, RegLocation rl_src) {
174 DCHECK(!rl_src.wide);
175 rl_src = UpdateLoc(rl_src);
177 if (rl_src.location == kLocPhysReg) {
178 if (IsLive(rl_src.low_reg) ||
179 IsPromoted(rl_src.low_reg) ||
183 OpRegCopy(rl_dest.low_reg, rl_src.low_reg);
186 rl_dest.low_reg = rl_src.low_reg;
187 Clobber(rl_src.low_reg);
192 LoadValueDirect(rl_src, rl_dest.low_reg);
215 RegLocation Mir2Lir::LoadValueWide(RegLocation rl_src, RegisterClass op_kind) {
216 DCHECK(rl_src.wide);
217 rl_src = EvalLoc(rl_src, op_kind, false);
218 if (IsInexpensiveConstant(rl_src) || rl_src.location != kLocPhysReg) {
219 LoadValueDirectWide(rl_src, rl_src.low_reg, rl_src.high_reg);
220 rl_src.location = kLocPhysReg;
221 MarkLive(rl_src.low_reg, rl_src.s_reg_low);
222 MarkLive(rl_src.high_reg, GetSRegHi(rl_src.s_reg_low));
224 return rl_src;
227 void Mir2Lir::StoreValueWide(RegLocation rl_dest, RegLocation rl_src) {
240 DCHECK_EQ(IsFpReg(rl_src.low_reg), IsFpReg(rl_src.high_reg));
242 DCHECK(rl_src.wide);
243 if (rl_src.location == kLocPhysReg) {
244 if (IsLive(rl_src.low_reg) ||
245 IsLive(rl_src.high_reg) ||
246 IsPromoted(rl_src.low_reg) ||
247 IsPromoted(rl_src.high_reg) ||
252 rl_src.low_reg, rl_src.high_reg);
255 rl_dest.low_reg = rl_src.low_reg;
256 rl_dest.high_reg = rl_src.high_reg;
257 Clobber(rl_src.low_reg);
258 Clobber(rl_src.high_reg);
263 LoadValueDirectWide(rl_src, rl_dest.low_reg, rl_dest.high_reg);