Skip to content

Commit

Permalink
Remove unused Machine class functionality
Browse files Browse the repository at this point in the history
* on X86 and Power: cloneRegisterFile
* on Power: cloneRegisterFileByType

Signed-off-by: Daryl Maier <maier@ca.ibm.com>
  • Loading branch information
0xdaryl committed Oct 15, 2020
1 parent d2cc022 commit 5fa4d6d
Show file tree
Hide file tree
Showing 4 changed files with 3 additions and 78 deletions.
32 changes: 0 additions & 32 deletions compiler/p/codegen/OMRMachine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1735,38 +1735,6 @@ void OMR::Power::Machine::initializeRegisterFile()
0, TR::RealRegister::Free, TR::RealRegister::vr31, TR::RealRegister::vr31Mask, self()->cg());
}

TR::RealRegister **
OMR::Power::Machine::cloneRegisterFileByType(TR::RealRegister **registerFileClone, TR::RealRegister **registerFile, int32_t start, int32_t end, TR_RegisterKinds kind, TR_AllocationKind allocKind)
{
TR_LiveRegisters *liveRegs = self()->cg()->getLiveRegisters(kind);
if(liveRegs && liveRegs->getNumberOfLiveRegisters() > 0)
{
for (int32_t i = start; i <= end; i++)
{
registerFileClone[i] = (TR::RealRegister *)self()->cg()->trMemory()->allocateMemory(sizeof(TR::RealRegister), allocKind);
memcpy(registerFileClone[i], registerFile[i], sizeof(TR::RealRegister));
}
}
else
{
for (int32_t j = start; j <= end; j++)
registerFileClone[j] = registerFile[j];
}
return registerFileClone;
}

TR::RealRegister **
OMR::Power::Machine::cloneRegisterFile(TR::RealRegister **registerFile, TR_AllocationKind allocKind)
{
int32_t arraySize = sizeof(TR::RealRegister *)*TR::RealRegister::NumRegisters;
TR::RealRegister **registerFileClone = (TR::RealRegister **)self()->cg()->trMemory()->allocateMemory(arraySize, allocKind);
registerFileClone = self()->cloneRegisterFileByType(registerFileClone, registerFile, TR::RealRegister::FirstGPR, TR::RealRegister::LastGPR, TR_GPR, allocKind);
registerFileClone = self()->cloneRegisterFileByType(registerFileClone, registerFile, TR::RealRegister::FirstFPR, TR::RealRegister::LastFPR, TR_FPR, allocKind);
registerFileClone = self()->cloneRegisterFileByType(registerFileClone, registerFile, TR::RealRegister::FirstCCR, TR::RealRegister::LastCCR, TR_CCR, allocKind);
registerFileClone = self()->cloneRegisterFileByType(registerFileClone, registerFile, TR::RealRegister::FirstVRF, TR::RealRegister::LastVRF, TR_VRF, allocKind);

return registerFileClone;
}

static void registerCopy(TR::Instruction *precedingInstruction,
TR_RegisterKinds rk,
Expand Down
5 changes: 1 addition & 4 deletions compiler/p/codegen/OMRMachine.hpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2000, 2018 IBM Corp. and others
* Copyright (c) 2000, 2020 IBM Corp. and others
*
* This program and the accompanying materials are made available under
* the terms of the Eclipse Public License 2.0 which accompanies this
Expand Down Expand Up @@ -130,9 +130,6 @@ class OMR_EXTENSIBLE Machine : public OMR::Machine
void takeRegisterStateSnapShot();
void restoreRegisterStateFromSnapShot();

TR::RealRegister **cloneRegisterFile(TR::RealRegister **registerFile, TR_AllocationKind allocKind = heapAlloc);
TR::RealRegister **cloneRegisterFileByType(TR::RealRegister **registerFileClone, TR::RealRegister **registerFile,
int32_t start, int32_t end, TR_RegisterKinds kind, TR_AllocationKind allocKind);
TR::RegisterDependencyConditions *createCondForLiveAndSpilledGPRs(bool cleanRegState, TR::list<TR::Register*> *spilledRegisterList = NULL);

void decFutureUseCountAndUnlatch(TR::Register *virtualRegister);
Expand Down
40 changes: 1 addition & 39 deletions compiler/x/codegen/OMRMachine.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2000, 2019 IBM Corp. and others
* Copyright (c) 2000, 2020 IBM Corp. and others
*
* This program and the accompanying materials are made available under
* the terms of the Eclipse Public License 2.0 which accompanies this
Expand Down Expand Up @@ -1693,42 +1693,6 @@ OMR::X86::Machine::getGlobalRegisterTable(const struct TR::X86LinkageProperties&
return _globalRegisterNumberToRealRegisterMap;
}

TR::RealRegister **
OMR::X86::Machine::cloneRegisterFile(TR::RealRegister **registerFile, TR_AllocationKind allocKind)
{
int32_t arraySize = sizeof(TR::RealRegister *) * TR::RealRegister::NumRegisters;
TR::RealRegister **registerFileClone = (TR::RealRegister **)self()->cg()->trMemory()->allocateMemory(arraySize, allocKind);
int32_t i = 0;
int32_t endReg = TR::RealRegister::LastAssignableGPR;

TR_LiveRegisters *liveFPRs = self()->cg()->getLiveRegisters(TR_FPR);
TR_LiveRegisters *liveVRFs = self()->cg()->getLiveRegisters(TR_VRF);

if ((liveFPRs && liveFPRs->getNumberOfLiveRegisters() > 0) || (liveVRFs && liveVRFs->getNumberOfLiveRegisters() > 0))
endReg = TR::RealRegister::LastXMMR;

for (i = TR::RealRegister::FirstGPR; i <= endReg; i = ((i==TR::RealRegister::LastAssignableGPR) ? TR::RealRegister::FirstXMMR : i+1))
{
registerFileClone[i] = (TR::RealRegister *)self()->cg()->trMemory()->allocateMemory(sizeof(TR::RealRegister), allocKind);
*registerFileClone[i] = *registerFile[i];
}

// the vfp entry is a real register and it must always point to the same _frameRegister pointer so the memRef assignRegisters check
// if (_baseRegister == cg()->machine()->getRealRegister(TR::RealRegister::vfp)
// works correctly
registerFileClone[TR::RealRegister::vfp] = self()->cg()->getFrameRegister();

// if there are no live FPRs then initialize the clone with the incoming registerFile values for the XMMRegs so
// these pointers are not garbage values
if (endReg == TR::RealRegister::LastAssignableGPR)
{
for (i = TR::RealRegister::FirstXMMR; i <= TR::RealRegister::LastXMMR; i++)
registerFileClone[i] = registerFile[i];
}

return registerFileClone;
}


TR::RegisterDependencyConditions * OMR::X86::Machine::createDepCondForLiveGPRs()
{
Expand Down Expand Up @@ -1845,8 +1809,6 @@ TR::RegisterDependencyConditions * OMR::X86::Machine::createCondForLiveAndSpille
}


// Shares many similarities with 'cloneRegisterFile'. Consider merging.
//
TR::RealRegister **OMR::X86::Machine::captureRegisterFile()
{
int32_t arraySize = sizeof(TR::RealRegister *) * TR::RealRegister::NumRegisters;
Expand Down
4 changes: 1 addition & 3 deletions compiler/x/codegen/OMRMachine.hpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2000, 2018 IBM Corp. and others
* Copyright (c) 2000, 2020 IBM Corp. and others
*
* This program and the accompanying materials are made available under
* the terms of the Eclipse Public License 2.0 which accompanies this
Expand Down Expand Up @@ -138,8 +138,6 @@ class OMR_EXTENSIBLE Machine : public OMR::Machine

uint8_t getNumberOfGPRs() { return _numGPRs; }

TR::RealRegister **cloneRegisterFile(TR::RealRegister **registerFile, TR_AllocationKind allocKind = heapAlloc);

TR::RealRegister **captureRegisterFile();
void installRegisterFile(TR::RealRegister **registerFileCopy);
TR::Register **captureRegisterAssociations();
Expand Down

0 comments on commit 5fa4d6d

Please sign in to comment.