luaur_code_gen/functions/free_spill.rs
1use crate::enums::kind_a_64::KindA64;
2
3pub fn free_spill(free: &mut u64, kind: KindA64, slot: u8) {
4 // qN registers use two consecutive slots
5 let mask = ((if kind == KindA64::q { 3u64 } else { 1u64 }) << (slot as u64)) as u64;
6
7 // Equivalent to CODEGEN_ASSERT!((free & mask) == 0) without relying on the CODEGEN_ASSERT macro.
8 assert!((*free & mask) == 0);
9
10 *free |= mask;
11}