@@ -4682,7 +4682,7 @@ void LinearScan::processBlockStartLocations(BasicBlock* currentBlock)
46824682 for (regNumber reg = REG_FIRST; reg < AVAILABLE_REG_COUNT; reg = REG_NEXT(reg))
46834683 {
46844684 RegRecord* physRegRecord = getRegisterRecord(reg);
4685- if (( liveRegs & genRegMask (reg)) == 0 )
4685+ if (liveRegs.IsRegNumInMask (reg))
46864686 {
46874687 makeRegAvailable(reg, physRegRecord->registerType);
46884688 Interval* assignedInterval = physRegRecord->assignedInterval;
@@ -9167,14 +9167,15 @@ void LinearScan::handleOutgoingCriticalEdges(BasicBlock* block)
91679167 // We only need to check for these cases if sameToReg is an actual register (not REG_STK).
91689168 if (sameToReg != REG_NA && sameToReg != REG_STK)
91699169 {
9170+ var_types outVarRegType = getIntervalForLocalVar(outResolutionSetVarIndex)->registerType;
9171+
91709172 // If there's a path on which this var isn't live, it may use the original value in sameToReg.
91719173 // In this case, sameToReg will be in the liveOutRegs of this block.
91729174 // Similarly, if sameToReg is in sameWriteRegs, it has already been used (i.e. for a lclVar that's
91739175 // live only at another target), and we can't copy another lclVar into that reg in this block.
91749176 regMaskTP sameToRegMask =
91759177 genRegMask(sameToReg, getIntervalForLocalVar(outResolutionSetVarIndex)->registerType);
9176- if (maybeSameLivePaths &&
9177- (((sameToRegMask & liveOutRegs).IsNonEmpty()) || ((sameToRegMask & sameWriteRegs).IsNonEmpty())))
9178+ if (maybeSameLivePaths && (liveOutRegs.IsRegNumInMask(sameToReg ARM_ARG(outVarRegType)) || sameWriteRegs.IsRegNumInMask(sameToReg ARM_ARG(outVarRegType))))
91789179 {
91799180 sameToReg = REG_NA;
91809181 }
@@ -9796,14 +9797,13 @@ void LinearScan::resolveEdge(BasicBlock* fromBlock,
97969797 fromReg DEBUG_ARG(fromBlock) DEBUG_ARG(toBlock) DEBUG_ARG(resolveTypeName[resolveType]));
97979798 sourceIntervals[sourceReg] = nullptr;
97989799 location[sourceReg] = REG_NA;
9799- regMaskTP fromRegMask = genRegMask(fromReg);
98009800
98019801 // Do we have a free targetReg?
98029802 if (fromReg == sourceReg)
98039803 {
9804- if (source[fromReg] != REG_NA && (( targetRegsFromStack & fromRegMask) != fromRegMask ))
9804+ if (source[fromReg] != REG_NA && (targetRegsFromStack.IsRegNumInMask(fromReg) ))
98059805 {
9806- targetRegsReady |= fromRegMask ;
9806+ targetRegsReady |= fromReg ;
98079807#ifdef TARGET_ARM
98089808 if (genIsValidDoubleReg(fromReg))
98099809 {
@@ -9836,13 +9836,13 @@ void LinearScan::resolveEdge(BasicBlock* fromBlock,
98369836 // lowerHalfRegMask)
98379837 if ((lowerHalfSrcReg != REG_NA) && (lowerHalfSrcLoc == REG_NA) &&
98389838 (sourceIntervals[lowerHalfSrcReg] != nullptr) &&
9839- (( targetRegsReady & lowerHalfRegMask) == RBM_NONE ) &&
9840- ((targetRegsFromStack & lowerHalfRegMask) != lowerHalfRegMask ))
9839+ ! targetRegsReady.IsRegNumInMask(lowerHalfReg ) &&
9840+ !targetRegsFromStack.IsRegNumInMask(lowerHalfReg ))
98419841 {
98429842 // This must be a double interval, otherwise it would be in targetRegsReady, or already
98439843 // completed.
98449844 assert(sourceIntervals[lowerHalfSrcReg]->registerType == TYP_DOUBLE);
9845- targetRegsReady |= lowerHalfRegMask ;
9845+ targetRegsReady |= lowerHalfReg ;
98469846 }
98479847#endif // TARGET_ARM
98489848 }
@@ -11445,7 +11445,7 @@ void LinearScan::dumpRegRecordTitleIfNeeded()
1144511445 int lastRegNumIndex = compiler->compFloatingPointUsed ? REG_FP_LAST : REG_INT_LAST;
1144611446 for (int regNumIndex = 0; regNumIndex <= lastRegNumIndex; regNumIndex++)
1144711447 {
11448- if (( registersToDump & genRegMask ((regNumber)regNumIndex)) != 0 )
11448+ if (registersToDump.IsRegNumInMask ((regNumber)regNumIndex))
1144911449 {
1145011450 lastUsedRegNumIndex = regNumIndex;
1145111451 }
@@ -11525,7 +11525,7 @@ void LinearScan::dumpRegRecords()
1152511525#endif // FEATURE_PARTIAL_SIMD_CALLEE_SAVE
1152611526 printf("%c", activeChar);
1152711527 }
11528- else if ((genRegMask(regNum) & regsBusyUntilKill).IsNonEmpty( ))
11528+ else if (regsBusyUntilKill.IsRegNumInMask(regNum ))
1152911529 {
1153011530 printf(columnFormatArray, "Busy");
1153111531 }
0 commit comments