Skip to content

Commit

Permalink
AArch64: Add a method to kill placeholder registers in registrer depe…
Browse files Browse the repository at this point in the history
…ndency

Add a variant of `stopUsingDepRegs` method which takes an array of registers to keep alive.

Signed-off-by: Akira Saitoh <saiaki@jp.ibm.com>
  • Loading branch information
Akira1Saitoh committed Nov 5, 2021
1 parent 79e5193 commit 54a8a2d
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 0 deletions.
8 changes: 8 additions & 0 deletions compiler/aarch64/codegen/OMRRegisterDependency.cpp
Expand Up @@ -411,6 +411,14 @@ void OMR::ARM64::RegisterDependencyConditions::stopUsingDepRegs(TR::CodeGenerato
_postConditions->stopUsingDepRegs(getAddCursorForPost(), NULL, returnRegister, cg);
}

void OMR::ARM64::RegisterDependencyConditions::stopUsingDepRegs(TR::CodeGenerator *cg, int numRetReg, TR::Register **retReg)
{
if (_preConditions != NULL)
_preConditions->stopUsingDepRegs(getAddCursorForPre(), numRetReg, retReg, cg);
if (_postConditions != NULL)
_postConditions->stopUsingDepRegs(getAddCursorForPost(), numRetReg, retReg, cg);
}

void OMR::ARM64::RegisterDependencyGroup::assignRegisters(
TR::Instruction *currentInstruction,
TR_RegisterKinds kindToBeAssigned,
Expand Down
8 changes: 8 additions & 0 deletions compiler/aarch64/codegen/OMRRegisterDependency.hpp
Expand Up @@ -296,6 +296,14 @@ class RegisterDependencyConditions: public OMR::RegisterDependencyConditions
void stopUsingDepRegs(TR::CodeGenerator *cg, TR::Register *returnRegister = NULL);

void stopUsingDepRegs(TR::CodeGenerator *cg, TR::Register * ret1, TR::Register *ret2);

/**
* @brief Kills placeholder registers held by the RegisterDependencyConditions
* @param[in] cg : CodeGenerator
* @param[in] numRetReg : number of regisgters in retReg
* @param[in] retReg : an array of return registers
*/
void stopUsingDepRegs(TR::CodeGenerator *cg, int numRetReg, TR::Register **retReg);
};

} // ARM64
Expand Down

0 comments on commit 54a8a2d

Please sign in to comment.