use crate::enums::kind_a_64::KindA64;
use crate::records::register_a_64::RegisterA64;
pub const fn cast_reg(kind: KindA64, reg: RegisterA64) -> RegisterA64 {
let reg_kind_bits = reg.bits & RegisterA64::KIND_MASK;
let kind_bits = kind as u8;
assert!(kind_bits != reg_kind_bits);
assert!(kind_bits != KindA64::none as u8 && reg_kind_bits != KindA64::none as u8);
assert!(
(kind_bits == KindA64::w as u8 || kind_bits == KindA64::x as u8)
== (reg_kind_bits == KindA64::w as u8 || reg_kind_bits == KindA64::x as u8)
);
let reg_index_bits = reg.bits & RegisterA64::INDEX_MASK;
RegisterA64 {
bits: kind_bits | reg_index_bits,
}
}