Skip to main content

luaur_code_gen/functions/
compare_ir_utils_alt_b.rs

1use crate::enums::ir_condition::IrCondition;
2use crate::macros::codegen_assert::CODEGEN_ASSERT;
3
4pub fn compare_i32_i32_ir_condition(a: i32, b: i32, cond: IrCondition) -> bool {
5    match cond {
6        IrCondition::Equal => a == b,
7        IrCondition::NotEqual => a != b,
8        IrCondition::Less => a < b,
9        IrCondition::NotLess => !(a < b),
10        IrCondition::LessEqual => a <= b,
11        IrCondition::NotLessEqual => !(a <= b),
12        IrCondition::Greater => a > b,
13        IrCondition::NotGreater => !(a > b),
14        IrCondition::GreaterEqual => a >= b,
15        IrCondition::NotGreaterEqual => !(a >= b),
16        IrCondition::UnsignedLess => (a as u32) < (b as u32),
17        IrCondition::UnsignedLessEqual => (a as u32) <= (b as u32),
18        IrCondition::UnsignedGreater => (a as u32) > (b as u32),
19        IrCondition::UnsignedGreaterEqual => (a as u32) >= (b as u32),
20        _ => {
21            CODEGEN_ASSERT!(false, "Unsupported condition");
22            false
23        }
24    }
25}