luaur-code-gen 0.1.3

Native (A64/X64) code generation for Luau (Rust).
Documentation
use crate::functions::emit_builtin_math_frexp::emit_builtin_math_frexp;
use crate::functions::emit_builtin_math_modf::emit_builtin_math_modf;
use crate::macros::codegen_assert::CODEGEN_ASSERT;
use crate::records::assembly_builder_x_64::AssemblyBuilderX64;
use crate::records::ir_reg_alloc_x_64::IrRegAllocX64;
use luaur_common::enums::luau_builtin_function::LuauBuiltinFunction;

pub fn emit_builtin_ir_reg_alloc_x_64_assembly_builder_x_64_i32_i32_i32_i32(
    regs: &mut IrRegAllocX64,
    build: &mut AssemblyBuilderX64,
    bfid: i32,
    ra: i32,
    arg: i32,
    nresults: i32,
) {
    match bfid as u8 {
        x if x == LuauBuiltinFunction::LBF_MATH_FREXP as u8 => {
            CODEGEN_ASSERT!(nresults == 1 || nresults == 2);
            emit_builtin_math_frexp(regs, build, ra, arg, nresults);
        }
        x if x == LuauBuiltinFunction::LBF_MATH_MODF as u8 => {
            CODEGEN_ASSERT!(nresults == 1 || nresults == 2);
            emit_builtin_math_modf(regs, build, ra, arg, nresults);
        }
        _ => {
            CODEGEN_ASSERT!(false, "Missing x64 lowering");
        }
    }
}