luaur_code_gen/methods/
ir_reg_alloc_a_64_take_reg.rs1use crate::macros::codegen_assert::CODEGEN_ASSERT;
2use crate::records::ir_reg_alloc_a_64::IrRegAllocA64;
3use crate::records::register_a_64::RegisterA64;
4
5impl IrRegAllocA64 {
6 pub fn take_reg(&mut self, reg: RegisterA64, index: u32) -> RegisterA64 {
7 let set = self.get_set(reg.kind());
8
9 CODEGEN_ASSERT!((set.free & (1u32 << reg.index())) != 0);
10 CODEGEN_ASSERT!(set.defs[reg.index() as usize] == IrRegAllocA64::kInvalidInstIdx);
11
12 set.free &= !(1u32 << reg.index());
13 set.defs[reg.index() as usize] = index;
14
15 reg
16 }
17}