luaur_code_gen/methods/
ir_reg_alloc_a_64_free_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 free_reg(&mut self, reg: RegisterA64) {
7 let set = self.get_set(reg.kind());
8
9 let bit = 1u32 << reg.index();
10
11 CODEGEN_ASSERT!((set.base & bit) != 0);
12 CODEGEN_ASSERT!((set.free & bit) == 0);
13 CODEGEN_ASSERT!((set.temp & bit) == 0);
14
15 set.free |= bit;
16 set.defs[reg.index() as usize] = Self::kInvalidInstIdx;
17 }
18}