Skip to main content

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}