luaur-code-gen 0.1.0

Native (A64/X64) code generation for Luau (Rust).
Documentation
use crate::enums::ir_op_kind::IrOpKind;
use crate::functions::luau_reg_value_int::luau_reg_value_int;
use crate::functions::vm_reg_op::vm_reg_op;
use crate::macros::codegen_assert::CODEGEN_ASSERT;
use crate::records::ir_lowering_x_64::IrLoweringX64;
use crate::records::ir_op::IrOp;
use crate::records::operand_x_64::OperandX64;

impl IrLoweringX64 {
    pub fn mem_reg_int_op(&mut self, op: IrOp) -> OperandX64 {
        match op.kind() {
            IrOpKind::Inst => OperandX64::operand_x_64_register_x_64(self.reg_op(op)),
            IrOpKind::Constant => OperandX64::operand_x_64_i32(self.int_op(op)),
            IrOpKind::VmReg => luau_reg_value_int(vm_reg_op(op)),
            _ => {
                CODEGEN_ASSERT!(false);
                OperandX64::operand_x_64_register_x_64(
                    crate::records::register_x_64::RegisterX64::noreg,
                )
            }
        }
    }
}