Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
cec9ad9
Add `high` in regMaskTP
kunalspathak May 15, 2024
5fa863e
Introduce SingleTypeRegSet
kunalspathak May 15, 2024
7dba61b
Use SingleTypeRegSet in few places
kunalspathak May 15, 2024
f68cf05
Delete some methods in regMaskTP
kunalspathak May 15, 2024
7f8a9b6
Delete some more methods of regMaskTP
kunalspathak May 15, 2024
2ede666
Fix actualRegistersMask
kunalspathak May 15, 2024
4b873d4
Use SingleTypeRegSet in consecutive register code
kunalspathak May 15, 2024
98caccf
Use SingleTypeRegSet in consecutive registers codebase
kunalspathak May 15, 2024
dbb72eb
Change genRegMask*() method to return SingleTypeRegSet
kunalspathak May 15, 2024
36d5919
wip
kunalspathak May 15, 2024
a647a65
another wip
kunalspathak May 16, 2024
9a15670
Everything except newRefPosition/killMask
kunalspathak May 16, 2024
5e739a4
refactor code around buildkill
kunalspathak May 20, 2024
e93f528
fix build errors
kunalspathak May 20, 2024
05b09b2
some more errors
kunalspathak May 20, 2024
f00f7a8
jit format
kunalspathak May 20, 2024
d356c89
Merge remote-tracking branch 'kp/lsra-refactor' into more-than-64-par…
kunalspathak May 20, 2024
06bd9e2
fixed build error for arm64
kunalspathak May 20, 2024
325bc6e
REVERT: temporary add #ifdef TARGET_ARM64 for accessing regMaskTP met…
kunalspathak May 20, 2024
92378d5
Merge remote-tracking branch 'origin/main' into more-than-64-part2-kill
kunalspathak May 21, 2024
e96428f
forgot to add the new file
kunalspathak May 21, 2024
1cf6b7a
make addRegsForKill only on low
kunalspathak May 21, 2024
bf86515
jit format
kunalspathak May 21, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/coreclr/jit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,7 @@ set( JIT_SOURCES
redundantbranchopts.cpp
regalloc.cpp
registerargconvention.cpp
regMaskTPOps.cpp
regset.cpp
scev.cpp
scopeinfo.cpp
Expand Down
22 changes: 11 additions & 11 deletions src/coreclr/jit/codegencommon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,11 +74,11 @@ NodeInternalRegisters::NodeInternalRegisters(Compiler* comp)
// tree - IR node to add internal allocated registers to
// regs - Registers to add
//
void NodeInternalRegisters::Add(GenTree* tree, regMaskTP regs)
void NodeInternalRegisters::Add(GenTree* tree, SingleTypeRegSet regs)
{
assert(regs != RBM_NONE);

regMaskTP* result = m_table.LookupPointerOrAdd(tree, RBM_NONE);
SingleTypeRegSet* result = m_table.LookupPointerOrAdd(tree, RBM_NONE);
*result |= regs;
}

Expand All @@ -95,12 +95,12 @@ void NodeInternalRegisters::Add(GenTree* tree, regMaskTP regs)
// Returns:
// Register number.
//
regNumber NodeInternalRegisters::Extract(GenTree* tree, regMaskTP mask)
regNumber NodeInternalRegisters::Extract(GenTree* tree, SingleTypeRegSet mask)
{
regMaskTP* regs = m_table.LookupPointer(tree);
SingleTypeRegSet* regs = m_table.LookupPointer(tree);
assert(regs != nullptr);

regMaskTP availableSet = *regs & mask;
SingleTypeRegSet availableSet = *regs & mask;
assert(availableSet != RBM_NONE);

regNumber result = genFirstRegNumFromMask(availableSet);
Expand All @@ -122,9 +122,9 @@ regNumber NodeInternalRegisters::Extract(GenTree* tree, regMaskTP mask)
// Returns:
// Register number.
//
regNumber NodeInternalRegisters::GetSingle(GenTree* tree, regMaskTP mask)
regNumber NodeInternalRegisters::GetSingle(GenTree* tree, SingleTypeRegSet mask)
{
regMaskTP* regs = m_table.LookupPointer(tree);
SingleTypeRegSet* regs = m_table.LookupPointer(tree);
assert(regs != nullptr);

regMaskTP availableSet = *regs & mask;
Expand All @@ -145,9 +145,9 @@ regNumber NodeInternalRegisters::GetSingle(GenTree* tree, regMaskTP mask)
// Returns:
// Mask of registers.
//
regMaskTP NodeInternalRegisters::GetAll(GenTree* tree)
SingleTypeRegSet NodeInternalRegisters::GetAll(GenTree* tree)
{
regMaskTP regs;
SingleTypeRegSet regs;
return m_table.Lookup(tree, &regs) ? regs : RBM_NONE;
}

Expand All @@ -162,9 +162,9 @@ regMaskTP NodeInternalRegisters::GetAll(GenTree* tree)
// Returns:
// Count of nodes
//
unsigned NodeInternalRegisters::Count(GenTree* tree, regMaskTP mask)
unsigned NodeInternalRegisters::Count(GenTree* tree, SingleTypeRegSet mask)
{
regMaskTP regs;
SingleTypeRegSet regs;
return m_table.Lookup(tree, &regs) ? genCountBits(regs & mask) : 0;
}

Expand Down
14 changes: 7 additions & 7 deletions src/coreclr/jit/codegeninterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,17 +48,17 @@ CodeGenInterface* getCodeGenerator(Compiler* comp);

class NodeInternalRegisters
{
typedef JitHashTable<GenTree*, JitPtrKeyFuncs<GenTree>, regMaskTP> NodeInternalRegistersTable;
NodeInternalRegistersTable m_table;
typedef JitHashTable<GenTree*, JitPtrKeyFuncs<GenTree>, SingleTypeRegSet> NodeInternalRegistersTable;
NodeInternalRegistersTable m_table;

public:
NodeInternalRegisters(Compiler* comp);

void Add(GenTree* tree, regMaskTP reg);
regNumber Extract(GenTree* tree, regMaskTP mask = static_cast<regMaskTP>(-1));
regNumber GetSingle(GenTree* tree, regMaskTP mask = static_cast<regMaskTP>(-1));
regMaskTP GetAll(GenTree* tree);
unsigned Count(GenTree* tree, regMaskTP mask = static_cast<regMaskTP>(-1));
void Add(GenTree* tree, SingleTypeRegSet reg);
regNumber Extract(GenTree* tree, SingleTypeRegSet mask = static_cast<SingleTypeRegSet>(-1));
regNumber GetSingle(GenTree* tree, SingleTypeRegSet mask = static_cast<SingleTypeRegSet>(-1));
SingleTypeRegSet GetAll(GenTree* tree);
unsigned Count(GenTree* tree, SingleTypeRegSet mask = static_cast<SingleTypeRegSet>(-1));
};

class CodeGenInterface
Expand Down
2 changes: 1 addition & 1 deletion src/coreclr/jit/emit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10062,7 +10062,7 @@ void emitter::emitStackPopLargeStk(BYTE* addr, bool isCall, unsigned char callIn
// of callee-saved registers only).
for (unsigned calleeSavedRegIdx = 0; calleeSavedRegIdx < CNT_CALL_GC_REGS; calleeSavedRegIdx++)
{
regMaskTP calleeSavedRbm = raRbmCalleeSaveOrder[calleeSavedRegIdx];
regMaskSmall calleeSavedRbm = raRbmCalleeSaveOrder[calleeSavedRegIdx];
if (emitThisGCrefRegs & calleeSavedRbm)
{
gcrefRegs |= (1 << calleeSavedRegIdx);
Expand Down
2 changes: 1 addition & 1 deletion src/coreclr/jit/gcencode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4620,7 +4620,7 @@ void GCInfo::gcInfoRecordGCRegStateChange(GcInfoEncoder* gcInfoEncoder,
while (regMask)
{
// Get hold of the next register bit.
regMaskTP tmpMask = genFindLowestBit(regMask);
regMaskSmall tmpMask = genFindLowestBit(regMask);
assert(tmpMask);

// Remember the new state of this register.
Expand Down
2 changes: 1 addition & 1 deletion src/coreclr/jit/jit.h
Original file line number Diff line number Diff line change
Expand Up @@ -513,7 +513,7 @@ class GlobalJitOptions
#define TRACK_LSRA_STATS 1 // Collect LSRA stats
#define TRACK_ENREG_STATS 1 // Collect enregistration stats
#else
#define MEASURE_MEM_ALLOC 0 // You can set this to 1 to get memory stats in retail, as well
#define MEASURE_MEM_ALLOC 1 // You can set this to 1 to get memory stats in retail, as well
#define LOOP_HOIST_STATS 0 // You can set this to 1 to get loop hoist stats in retail, as well
#define TRACK_LSRA_STATS 0 // You can set this to 1 to get LSRA stats in retail, as well
#define TRACK_ENREG_STATS 0
Expand Down
Loading