From 5de3494e4297c0d480409da3fecee39173f1d4e1 Mon Sep 17 00:00:00 2001 From: buzbee Date: Thu, 1 Mar 2012 14:51:57 -0800 Subject: Another step towards a Mips target Updating the MIPS target to use the now common codegen routines. Still much to do, but the general structure is sufficient to allow work to begin on the other target. Change-Id: I0d288fdfb59c8e76fad73185fdd56b345e87b604 --- src/compiler/codegen/mips/MipsRallocUtil.cc | 58 +++++++++++------------------ 1 file changed, 22 insertions(+), 36 deletions(-) (limited to 'src/compiler/codegen/mips/MipsRallocUtil.cc') diff --git a/src/compiler/codegen/mips/MipsRallocUtil.cc b/src/compiler/codegen/mips/MipsRallocUtil.cc index 0dfbfa5065..504375b572 100644 --- a/src/compiler/codegen/mips/MipsRallocUtil.cc +++ b/src/compiler/codegen/mips/MipsRallocUtil.cc @@ -48,20 +48,6 @@ void oatAdjustSpillMask(CompilationUnit* cUnit) void oatMarkPreservedSingle(CompilationUnit* cUnit, int sReg, int reg) { UNIMPLEMENTED(FATAL) << "No support yet for promoted FP regs"; -#if 0 - DCHECK_GE(reg, FP_REG_MASK + FP_CALLEE_SAVE_BASE); - reg = (reg & FP_REG_MASK) - FP_CALLEE_SAVE_BASE; - // Ensure fpVmapTable is large enough - int tableSize = cUnit->fpVmapTable.size(); - for (int i = tableSize; i < (reg + 1); i++) { - cUnit->fpVmapTable.push_back(INVALID_VREG); - } - // Add the current mapping - cUnit->fpVmapTable[reg] = sReg; - // Size of fpVmapTable is high-water mark, use to set mask - cUnit->numFPSpills = cUnit->fpVmapTable.size(); - cUnit->fpSpillMask = ((1 << cUnit->numFPSpills) - 1) << FP_CALLEE_SAVE_BASE; -#endif } void oatFlushRegWide(CompilationUnit* cUnit, int reg1, int reg2) @@ -159,10 +145,10 @@ extern void oatClobberCalleeSave(CompilationUnit *cUnit) extern RegLocation oatGetReturnWide(CompilationUnit* cUnit) { RegLocation res = LOC_C_RETURN_WIDE; - oatClobber(cUnit, r_V0); - oatClobber(cUnit, r_V1); - oatMarkInUse(cUnit, r_V0); - oatMarkInUse(cUnit, r_V1); + oatClobber(cUnit, res.lowReg); + oatClobber(cUnit, res.highReg); + oatMarkInUse(cUnit, res.lowReg); + oatMarkInUse(cUnit, res.highReg); oatMarkPair(cUnit, res.lowReg, res.highReg); return res; } @@ -170,10 +156,10 @@ extern RegLocation oatGetReturnWide(CompilationUnit* cUnit) extern RegLocation oatGetReturnWideAlt(CompilationUnit* cUnit) { RegLocation res = LOC_C_RETURN_WIDE_ALT; - oatClobber(cUnit, r_F0); - oatClobber(cUnit, r_F1); - oatMarkInUse(cUnit, r_F0); - oatMarkInUse(cUnit, r_F1); + oatClobber(cUnit, res.lowReg); + oatClobber(cUnit, res.highReg); + oatMarkInUse(cUnit, res.lowReg); + oatMarkInUse(cUnit, res.highReg); oatMarkPair(cUnit, res.lowReg, res.highReg); return res; } @@ -181,16 +167,16 @@ extern RegLocation oatGetReturnWideAlt(CompilationUnit* cUnit) extern RegLocation oatGetReturn(CompilationUnit* cUnit) { RegLocation res = LOC_C_RETURN; - oatClobber(cUnit, r_V0); - oatMarkInUse(cUnit, r_V0); + oatClobber(cUnit, res.lowReg); + oatMarkInUse(cUnit, res.lowReg); return res; } extern RegLocation oatGetReturnAlt(CompilationUnit* cUnit) { RegLocation res = LOC_C_RETURN_ALT; - oatClobber(cUnit, r_F0); - oatMarkInUse(cUnit, r_F0); + oatClobber(cUnit, res.lowReg); + oatMarkInUse(cUnit, res.lowReg); return res; } @@ -203,25 +189,25 @@ extern RegisterInfo* oatGetRegInfo(CompilationUnit* cUnit, int reg) /* To be used when explicitly managing register use */ extern void oatLockCallTemps(CompilationUnit* cUnit) { - oatLockTemp(cUnit, r_A0); - oatLockTemp(cUnit, r_A1); - oatLockTemp(cUnit, r_A2); - oatLockTemp(cUnit, r_A3); + oatLockTemp(cUnit, rARG0); + oatLockTemp(cUnit, rARG1); + oatLockTemp(cUnit, rARG2); + oatLockTemp(cUnit, rARG3); } /* To be used when explicitly managing register use */ extern void oatFreeCallTemps(CompilationUnit* cUnit) { - oatFreeTemp(cUnit, r_A0); - oatFreeTemp(cUnit, r_A1); - oatFreeTemp(cUnit, r_A2); - oatFreeTemp(cUnit, r_A3); + oatFreeTemp(cUnit, rARG0); + oatFreeTemp(cUnit, rARG1); + oatFreeTemp(cUnit, rARG2); + oatFreeTemp(cUnit, rARG3); } /* Convert an instruction to a NOP */ -STATIC void oatNopLIR( LIR* lir) +void oatNopLIR( LIR* lir) { - ((MipsLIR*)lir)->flags.isNop = true; + ((LIR*)lir)->flags.isNop = true; } } // namespace art -- cgit v1.2.3-59-g8ed1b