IR: make FillRegister sizes explicit

instead of hacking around it.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
This commit is contained in:
Alyssa Rosenzweig committed 2025-05-15 14:57:51 -04:00
1 parent c7797d56c9
commit 55bd16e2c8
2 files changed
+4 -6

No files matched your search

+3 -1
View File
@@ -500,7 +500,7 @@
]
},
"SSA = FillRegister SSA:$OriginalValue, u32:$Slot, RegisterClass:$Class": {
"SSA = FillRegister OpSize:#Size, OpSize:#ElementSize, SSA:$OriginalValue, u32:$Slot, RegisterClass:$Class": {
"Desc": ["Fills a register from a spill slot",
"Spill slots are register allocated and has live ranges calculated to handle slot calculation",
"```diff\n- !Don't use this op. It is for RA to handle spilling and filling!\n```",
@@ -508,6 +508,8 @@
"The OriginalValue SSA arg points at the original SSA value spilled, and only exists for",
"RA validation purposes"
],
"DestSize": "Size",
"ElementSize": "ElementSize",
"EmitValidation": [
"WalkFindRegClass($OriginalValue) == $Class"
]
@@ -163,11 +163,7 @@ private:
LOGMAN_THROW_A_FMT(SlotPlusOne >= 1, "Old must have been spilled");
RegisterClassType RegClass = GetRegClassFromNode(IR, IROp);
auto Fill = IREmit->_FillRegister(Old, SlotPlusOne - 1, RegClass);
Fill.first->Header.Size = IROp->Size;
Fill.first->Header.ElementSize = IROp->ElementSize;
return Fill;
return IREmit->_FillRegister(IROp->Size, IROp->ElementSize, Old, SlotPlusOne - 1, RegClass);
};
// IP of next-use of each Old source. IPs are measured from the end of the