diff --git a/codegen-luau/runtime/runtime.lua b/codegen-luau/runtime/runtime.lua index 8ee8103..a6c1034 100644 --- a/codegen-luau/runtime/runtime.lua +++ b/codegen-luau/runtime/runtime.lua @@ -440,6 +440,8 @@ do local reinterpret_f32_i32 = module.reinterpret.f32_i32 local reinterpret_f64_i64 = module.reinterpret.f64_i64 + local reinterpret_i32_f32 = module.reinterpret.i32_f32 + local reinterpret_i64_f64 = module.reinterpret.i64_f64 local function load_byte(data, addr) local value = data[math_floor(addr / 4)] or 0 @@ -554,6 +556,26 @@ do end local store_i32 = store.i32 + local store_i32_n8 = store.i32_n8 + local store_i32_n16 = store.i32_n16 + + function store.i64_n8(memory, addr, value) + local data_1, _ = num_into_u32(value) + + store_i32_n8(memory, addr, data_1) + end + + function store.i64_n16(memory, addr, value) + local data_1, _ = num_into_u32(value) + + store_i32_n16(memory, addr, data_1) + end + + function store.i64_n32(memory, addr, value) + local data_1, _ = num_into_u32(value) + + store_i32(memory, addr, data_1) + end function store.i64(memory, addr, value) local data_1, data_2 = num_into_u32(value) @@ -562,6 +584,16 @@ do store_i32(memory, addr + 4, data_2) end + local store_i64 = store.i64 + + function store.f32(memory, addr, value) + store_i32(memory, addr, reinterpret_i32_f32(value)) + end + + function store.f64(memory, addr, value) + store_i64(memory, addr, reinterpret_i64_f64(value)) + end + function store.string(memory, offset, data, len) len = len or #data