Lines Matching refs:reg
62 regs[i].reg = regNums[i];
77 p[i].reg, p[i].inUse, p[i].pair, p[i].partner, p[i].live,
83 static RegisterInfo *getRegInfo(CompilationUnit *cUnit, int reg)
89 if (p[i].reg == reg) {
96 if (p[i].reg == reg) {
100 ALOGE("Tried to get info on a non-existant temp: r%d",reg);
110 (info1->partner == info2->reg) &&
111 (info2->partner == info1->reg));
120 info1->reg, info1->partner);
124 void dvmCompilerFlushReg(CompilationUnit *cUnit, int reg)
126 RegisterInfo *info = getRegInfo(cUnit, reg);
131 reg, kWord);
135 /* return true if found reg to clobber */
137 int numTemps, int reg)
141 if (p[i].reg == reg) {
144 dvmCompilerFlushRegWide(cUnit, p[i].reg, p[i].partner);
146 dvmCompilerFlushReg(cUnit, p[i].reg);
165 void dvmCompilerClobber(CompilationUnit *cUnit, int reg)
168 cUnit->regPool->numCoreTemps, reg)) {
170 cUnit->regPool->numFPTemps, reg);
204 dvmCompilerClobber(cUnit, p[next].reg);
208 return p[next].reg;
217 dvmCompilerClobber(cUnit, p[next].reg);
221 return p[next].reg;
248 dvmCompilerClobber(cUnit, p[next].reg);
249 dvmCompilerClobber(cUnit, p[next+1].reg);
252 assert((p[next].reg+1) == p[next+1].reg);
253 assert((p[next].reg & 0x1) == 0);
255 return p[next].reg;
264 dvmCompilerClobber(cUnit, p[next].reg);
265 dvmCompilerClobber(cUnit, p[next+1].reg);
268 assert((p[next].reg+1) == p[next+1].reg);
269 assert((p[next].reg & 0x1) == 0);
271 return p[next].reg;
342 extern void dvmCompilerFreeTemp(CompilationUnit *cUnit, int reg)
348 if (p[i].reg == reg) {
357 if (p[i].reg == reg) {
363 ALOGE("Tried to free a non-existant temp: r%d",reg);
367 extern RegisterInfo *dvmCompilerIsLive(CompilationUnit *cUnit, int reg)
373 if (p[i].reg == reg) {
380 if (p[i].reg == reg) {
387 extern RegisterInfo *dvmCompilerIsTemp(CompilationUnit *cUnit, int reg)
393 if (p[i].reg == reg) {
400 if (p[i].reg == reg) {
412 extern void dvmCompilerLockTemp(CompilationUnit *cUnit, int reg)
418 if (p[i].reg == reg) {
427 if (p[i].reg == reg) {
433 ALOGE("Tried to lock a non-existant temp: r%d",reg);
437 extern void dvmCompilerResetDef(CompilationUnit *cUnit, int reg)
439 RegisterInfo *p = getRegInfo(cUnit, reg);
510 assert(infoLo->partner == infoHi->reg);
511 assert(infoHi->partner == infoLo->reg);
552 dvmCompilerResetDef(cUnit, cUnit->regPool->coreTemps[i].reg);
555 dvmCompilerResetDef(cUnit, cUnit->regPool->FPTemps[i].reg);
563 dvmCompilerClobber(cUnit, cUnit->regPool->coreTemps[i].reg);
566 dvmCompilerClobber(cUnit, cUnit->regPool->FPTemps[i].reg);
575 dvmCompilerLockTemp(cUnit, cUnit->regPool->coreTemps[i].reg);
587 dvmCompilerFlushRegWide(cUnit, info[i].reg, info[i].partner);
589 dvmCompilerFlushReg(cUnit, info[i].reg);
605 //TUNING: rewrite all of this reg stuff. Probably use an attribute table
606 static bool regClassMatches(int regClass, int reg)
611 return !FPREG(reg);
613 return FPREG(reg);
617 extern void dvmCompilerMarkLive(CompilationUnit *cUnit, int reg, int sReg)
619 RegisterInfo *info = getRegInfo(cUnit, reg);
620 if ((info->reg == reg) && (info->sReg == sReg) && info->live) {
641 extern void dvmCompilerMarkClean(CompilationUnit *cUnit, int reg)
643 RegisterInfo *info = getRegInfo(cUnit, reg);
647 extern void dvmCompilerMarkDirty(CompilationUnit *cUnit, int reg)
649 RegisterInfo *info = getRegInfo(cUnit, reg);
653 extern void dvmCompilerMarkInUse(CompilationUnit *cUnit, int reg)
655 RegisterInfo *info = getRegInfo(cUnit, reg);
664 newInfo->reg = newReg;
683 dvmCompilerClobber(cUnit, infoLo->reg);
686 loc.lowReg = infoLo->reg;
709 match = match && (FPREG(infoLo->reg) == FPREG(infoHi->reg));
711 if (match && FPREG(infoLo->reg)) {
712 match &= ((infoLo->reg & 0x1) == 0);
713 match &= ((infoHi->reg - infoLo->reg) == 1);
718 match &= ((infoLo->reg == infoHi->partner) &&
719 (infoHi->reg == infoLo->partner));
723 loc.lowReg = infoLo->reg;
724 loc.highReg = infoHi->reg;
732 dvmCompilerClobber(cUnit, infoLo->reg);
737 dvmCompilerClobber(cUnit, infoHi->reg);
756 /* If already in registers, we can assume proper form. Right reg class? */