Add missing f32
saturation operations
This commit is contained in:
parent
3853e06efa
commit
f8c0a57af2
@ -443,7 +443,7 @@ do
|
|||||||
truncate.f32 = truncate_f64
|
truncate.f32 = truncate_f64
|
||||||
truncate.f64 = truncate_f64
|
truncate.f64 = truncate_f64
|
||||||
|
|
||||||
function saturate.i32_f64(num)
|
function saturate.i32_f32(num)
|
||||||
if num <= -0x80000000 then
|
if num <= -0x80000000 then
|
||||||
return -0x80000000
|
return -0x80000000
|
||||||
elseif num >= 0x7FFFFFFF then
|
elseif num >= 0x7FFFFFFF then
|
||||||
@ -453,7 +453,9 @@ do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function saturate.u32_f64(num)
|
saturate.i32_f64 = saturate.i32_f32
|
||||||
|
|
||||||
|
function saturate.u32_f32(num)
|
||||||
if num <= 0 then
|
if num <= 0 then
|
||||||
return 0
|
return 0
|
||||||
elseif num >= 0xFFFFFFFF then
|
elseif num >= 0xFFFFFFFF then
|
||||||
@ -463,7 +465,9 @@ do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function saturate.i64_f64(num)
|
saturate.u32_f64 = saturate.u32_f32
|
||||||
|
|
||||||
|
function saturate.i64_f32(num)
|
||||||
if num >= 2 ^ 63 - 1 then
|
if num >= 2 ^ 63 - 1 then
|
||||||
return NUM_MAX_I64
|
return NUM_MAX_I64
|
||||||
elseif num <= -2 ^ 63 then
|
elseif num <= -2 ^ 63 then
|
||||||
@ -475,7 +479,9 @@ do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function saturate.u64_f64(num)
|
saturate.i64_f64 = saturate.i64_f32
|
||||||
|
|
||||||
|
function saturate.u64_f32(num)
|
||||||
if num >= 2 ^ 64 then
|
if num >= 2 ^ 64 then
|
||||||
return NUM_MAX_U64
|
return NUM_MAX_U64
|
||||||
elseif num <= 0 or num ~= num then
|
elseif num <= 0 or num ~= num then
|
||||||
@ -485,6 +491,8 @@ do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
saturate.u64_f64 = saturate.u64_f32
|
||||||
|
|
||||||
function extend.i32_n8(num)
|
function extend.i32_n8(num)
|
||||||
num = bit_and(num, 0xFF)
|
num = bit_and(num, 0xFF)
|
||||||
|
|
||||||
|
@ -436,21 +436,25 @@ do
|
|||||||
truncate.f32 = truncate_f64
|
truncate.f32 = truncate_f64
|
||||||
truncate.f64 = truncate_f64
|
truncate.f64 = truncate_f64
|
||||||
|
|
||||||
function saturate.i32_f64(num)
|
function saturate.i32_f32(num)
|
||||||
local temp = math_clamp(truncate_f64(num), -0x80000000, 0x7FFFFFFF)
|
local temp = math_clamp(truncate_f64(num), -0x80000000, 0x7FFFFFFF)
|
||||||
|
|
||||||
return to_u32(temp)
|
return to_u32(temp)
|
||||||
end
|
end
|
||||||
|
|
||||||
function saturate.u32_f64(num)
|
saturate.i32_f64 = saturate.i32_f32
|
||||||
|
|
||||||
|
function saturate.u32_f32(num)
|
||||||
local temp = math_clamp(truncate_f64(num), 0, 0xFFFFFFFF)
|
local temp = math_clamp(truncate_f64(num), 0, 0xFFFFFFFF)
|
||||||
|
|
||||||
return to_u32(temp)
|
return to_u32(temp)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
saturate.u32_f64 = saturate.u32_f32
|
||||||
|
|
||||||
local truncate_i64_f64 = truncate.i64_f64
|
local truncate_i64_f64 = truncate.i64_f64
|
||||||
|
|
||||||
function saturate.i64_f64(num)
|
function saturate.i64_f32(num)
|
||||||
if num >= 2 ^ 63 - 1 then
|
if num >= 2 ^ 63 - 1 then
|
||||||
return NUM_MAX_I64
|
return NUM_MAX_I64
|
||||||
elseif num <= -2 ^ 63 then
|
elseif num <= -2 ^ 63 then
|
||||||
@ -460,7 +464,9 @@ do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function saturate.u64_f64(num)
|
saturate.i64_f64 = saturate.i64_f32
|
||||||
|
|
||||||
|
function saturate.u64_f32(num)
|
||||||
if num >= 2 ^ 64 then
|
if num >= 2 ^ 64 then
|
||||||
return NUM_MAX_U64
|
return NUM_MAX_U64
|
||||||
elseif num <= 0 then
|
elseif num <= 0 then
|
||||||
@ -470,6 +476,8 @@ do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
saturate.u64_f64 = saturate.u64_f32
|
||||||
|
|
||||||
function extend.i32_n8(num)
|
function extend.i32_n8(num)
|
||||||
num = bit_and(num, 0xFF)
|
num = bit_and(num, 0xFF)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user