use crate::runtime::Opcode;
pub fn is_signed_operation(opcode: Opcode) -> bool {
opcode == Opcode::DIV || opcode == Opcode::REM
}
pub fn get_quotient_and_remainder(b: u32, c: u32, opcode: Opcode) -> (u32, u32) {
if c == 0 {
(u32::MAX, b)
} else if is_signed_operation(opcode) {
(
(b as i32).wrapping_div(c as i32) as u32,
(b as i32).wrapping_rem(c as i32) as u32,
)
} else {
(
(b as u32).wrapping_div(c as u32) as u32,
(b as u32).wrapping_rem(c as u32) as u32,
)
}
}
pub const fn get_msb(a: u32) -> u8 {
((a >> 31) & 1) as u8
}