Skip to content

Commit ed203f3

Browse files
committed
Use AddRegNumInMask() and AddRegNum()
1 parent c192d95 commit ed203f3

File tree

3 files changed

+19
-20
lines changed

3 files changed

+19
-20
lines changed

src/coreclr/jit/lsra.cpp

+13-14
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ void LinearScan::updateNextFixedRef(RegRecord* regRecord, RefPosition* nextRefPo
293293
}
294294
else
295295
{
296-
fixedRegs |= genRegMask(regRecord->regNum);
296+
fixedRegs.AddRegNumInMask(regRecord->regNum);
297297
}
298298

299299
nextFixedRef[regRecord->regNum] = nextLocation;
@@ -4081,7 +4081,7 @@ void LinearScan::spillGCRefs(RefPosition* killRefPosition)
40814081
{
40824082
// For each physical register that can hold a GC type,
40834083
// if it is occupied by an interval of a GC type, spill that interval.
4084-
regMaskTP candidateRegs = killRefPosition->registerAssignment;
4084+
SingleTypeRegSet candidateRegs = killRefPosition->registerAssignment;
40854085
INDEBUG(bool killedRegs = false);
40864086
while (candidateRegs != RBM_NONE)
40874087
{
@@ -4576,7 +4576,7 @@ void LinearScan::processBlockStartLocations(BasicBlock* currentBlock)
45764576
assert(targetReg != REG_STK);
45774577
assert(interval->assignedReg != nullptr && interval->assignedReg->regNum == targetReg &&
45784578
interval->assignedReg->assignedInterval == interval);
4579-
liveRegs |= getRegMask(targetReg, interval->registerType);
4579+
liveRegs.AddRegNum(targetReg, interval->registerType);
45804580
continue;
45814581
}
45824582
}
@@ -4606,7 +4606,7 @@ void LinearScan::processBlockStartLocations(BasicBlock* currentBlock)
46064606
// likely to match other assignments this way.
46074607
targetReg = interval->physReg;
46084608
interval->isActive = true;
4609-
liveRegs |= getRegMask(targetReg, interval->registerType);
4609+
liveRegs.AddRegNum(targetReg, interval->registerType);
46104610
INDEBUG(inactiveRegs |= genRegMask(targetReg));
46114611
setVarReg(inVarToRegMap, varIndex, targetReg);
46124612
}
@@ -4618,7 +4618,7 @@ void LinearScan::processBlockStartLocations(BasicBlock* currentBlock)
46184618
if (targetReg != REG_STK)
46194619
{
46204620
RegRecord* targetRegRecord = getRegisterRecord(targetReg);
4621-
liveRegs |= getRegMask(targetReg, interval->registerType);
4621+
liveRegs.AddRegNum(targetReg, interval->registerType);
46224622
if (!allocationPassComplete)
46234623
{
46244624
updateNextIntervalRef(targetReg, interval);
@@ -5371,7 +5371,7 @@ void LinearScan::allocateRegistersMinimal()
53715371
else
53725372
{
53735373
INDEBUG(dumpLsraAllocationEvent(LSRA_EVENT_NEEDS_NEW_REG, nullptr, assignedRegister));
5374-
regsToFree |= getRegMask(assignedRegister, currentInterval->registerType);
5374+
regsToFree.AddRegNum(assignedRegister, currentInterval->registerType);
53755375
// We want a new register, but we don't want this to be considered a spill.
53765376
assignedRegister = REG_NA;
53775377
if (physRegRecord->assignedInterval == currentInterval)
@@ -5657,7 +5657,7 @@ void LinearScan::allocateRegisters()
56575657
updateNextIntervalRef(reg, interval);
56585658
updateSpillCost(reg, interval);
56595659
setRegInUse(reg, interval->registerType);
5660-
INDEBUG(registersToDump |= getRegMask(reg, interval->registerType));
5660+
INDEBUG(registersToDump.AddRegNum(reg, interval->registerType));
56615661
}
56625662
}
56635663
else
@@ -6075,7 +6075,7 @@ void LinearScan::allocateRegisters()
60756075
updateSpillCost(assignedRegister, currentInterval);
60766076
}
60776077

6078-
regsToFree |= getRegMask(assignedRegister, currentInterval->registerType);
6078+
regsToFree.AddRegNum(assignedRegister, currentInterval->registerType);
60796079
}
60806080
INDEBUG(dumpLsraAllocationEvent(LSRA_EVENT_NO_REG_ALLOCATED, nullptr, assignedRegister));
60816081
currentRefPosition.registerAssignment = RBM_NONE;
@@ -6520,7 +6520,7 @@ void LinearScan::allocateRegisters()
65206520
else
65216521
{
65226522
INDEBUG(dumpLsraAllocationEvent(LSRA_EVENT_NEEDS_NEW_REG, nullptr, assignedRegister));
6523-
regsToFree |= getRegMask(assignedRegister, currentInterval->registerType);
6523+
regsToFree.AddRegNum(assignedRegister, currentInterval->registerType);
65246524
// We want a new register, but we don't want this to be considered a spill.
65256525
assignedRegister = REG_NA;
65266526
if (physRegRecord->assignedInterval == currentInterval)
@@ -9008,8 +9008,7 @@ void LinearScan::handleOutgoingCriticalEdges(BasicBlock* block)
90089008
regNumber fromReg = getVarReg(outVarToRegMap, liveOutVarIndex);
90099009
if (fromReg != REG_STK)
90109010
{
9011-
regMaskTP fromRegMask = genRegMask(fromReg, getIntervalForLocalVar(liveOutVarIndex)->registerType);
9012-
liveOutRegs |= fromRegMask;
9011+
liveOutRegs.AddRegNumInMask(fromReg ARM_ARG(getIntervalForLocalVar(liveOutVarIndex)->registerType));
90139012
}
90149013
}
90159014

@@ -9217,7 +9216,7 @@ void LinearScan::handleOutgoingCriticalEdges(BasicBlock* block)
92179216
VarSetOps::AddElemD(compiler, diffResolutionSet, outResolutionSetVarIndex);
92189217
if (fromReg != REG_STK)
92199218
{
9220-
diffReadRegs |= genRegMask(fromReg, getIntervalForLocalVar(outResolutionSetVarIndex)->registerType);
9219+
diffReadRegs.AddRegNumInMask(fromReg ARM_ARG(getIntervalForLocalVar(outResolutionSetVarIndex)->registerType));
92219220
}
92229221
}
92239222
else if (sameToReg != fromReg)
@@ -9226,7 +9225,7 @@ void LinearScan::handleOutgoingCriticalEdges(BasicBlock* block)
92269225
setVarReg(sameVarToRegMap, outResolutionSetVarIndex, sameToReg);
92279226
if (sameToReg != REG_STK)
92289227
{
9229-
sameWriteRegs |= genRegMask(sameToReg, getIntervalForLocalVar(outResolutionSetVarIndex)->registerType);
9228+
sameWriteRegs.AddRegNumInMask(sameToReg ARM_ARG(getIntervalForLocalVar(outResolutionSetVarIndex)->registerType));
92309229
}
92319230
}
92329231
}
@@ -11088,7 +11087,7 @@ void LinearScan::dumpLsraAllocationEvent(LsraDumpEvent event,
1108811087
}
1108911088
if ((interval != nullptr) && (reg != REG_NA) && (reg != REG_STK))
1109011089
{
11091-
registersToDump |= getRegMask(reg, interval->registerType);
11090+
registersToDump.AddRegNum(reg, interval->registerType);
1109211091
dumpRegRecordTitleIfNeeded();
1109311092
}
1109411093

src/coreclr/jit/lsra.h

+3-4
Original file line numberDiff line numberDiff line change
@@ -1833,8 +1833,7 @@ class LinearScan : public LinearScanInterface
18331833
}
18341834
void makeRegAvailable(regNumber reg, var_types regType)
18351835
{
1836-
regMaskTP regMask = getRegMask(reg, regType);
1837-
makeRegsAvailable(regMask);
1836+
m_AvailableRegs.AddRegNum(reg, regType);
18381837
}
18391838

18401839
void clearAllNextIntervalRef();
@@ -1858,7 +1857,7 @@ class LinearScan : public LinearScanInterface
18581857
}
18591858
void setConstantReg(regNumber reg, var_types regType)
18601859
{
1861-
m_RegistersWithConstants |= getRegMask(reg, regType);
1860+
m_RegistersWithConstants.AddRegNum(reg, regType);
18621861
}
18631862
bool isRegConstant(regNumber reg, var_types regType)
18641863
{
@@ -1910,7 +1909,7 @@ class LinearScan : public LinearScanInterface
19101909
}
19111910
void setRegBusyUntilKill(regNumber reg, var_types regType)
19121911
{
1913-
regsBusyUntilKill |= getRegMask(reg, regType);
1912+
regsBusyUntilKill.AddRegNum(reg, regType);
19141913
}
19151914
void clearRegBusyUntilKill(regNumber reg)
19161915
{

src/coreclr/jit/lsrabuild.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -2543,7 +2543,8 @@ void LinearScan::buildIntervals()
25432543
killed = RBM_EDI | RBM_ECX | RBM_EAX;
25442544
#else
25452545
// Poisoning uses REG_SCRATCH for small vars and memset helper for big vars.
2546-
killed = genRegMask(REG_SCRATCH) | compiler->compHelperCallKillSet(CORINFO_HELP_NATIVE_MEMSET);
2546+
killed = compiler->compHelperCallKillSet(CORINFO_HELP_NATIVE_MEMSET);
2547+
killed.AddRegNumInMask(REG_SCRATCH);
25472548
#endif
25482549
addKillForRegs(killed, currentLoc + 1);
25492550
currentLoc += 2;
@@ -2887,7 +2888,7 @@ void LinearScan::buildInitialParamDef(const LclVarDsc* varDsc, regNumber paramRe
28872888
assert(paramReg < REG_COUNT);
28882889
mask = genSingleTypeRegMask(paramReg);
28892890
assignPhysReg(paramReg, interval);
2890-
INDEBUG(registersToDump |= getRegMask(paramReg, interval->registerType));
2891+
INDEBUG(registersToDump.AddRegNum(paramReg, interval->registerType));
28912892
}
28922893
RefPosition* pos = newRefPosition(interval, MinLocation, RefTypeParamDef, nullptr, mask);
28932894
pos->setRegOptional(true);

0 commit comments

Comments
 (0)