Add f32 and f64 distinction
This commit is contained in:
@@ -87,11 +87,11 @@ do
|
||||
|
||||
div.u64 = I64.divide_unsigned
|
||||
|
||||
function neg.num(num)
|
||||
function neg.f32(num)
|
||||
return -num
|
||||
end
|
||||
|
||||
function min.num(a, b)
|
||||
function min.f32(a, b)
|
||||
if b == b then
|
||||
return math_min(a, b)
|
||||
else
|
||||
@@ -99,7 +99,7 @@ do
|
||||
end
|
||||
end
|
||||
|
||||
function max.num(a, b)
|
||||
function max.f32(a, b)
|
||||
if b == b then
|
||||
return math_max(a, b)
|
||||
else
|
||||
@@ -107,7 +107,7 @@ do
|
||||
end
|
||||
end
|
||||
|
||||
function copysign.num(lhs, rhs)
|
||||
function copysign.f32(lhs, rhs)
|
||||
if rhs >= 0 then
|
||||
return (math_abs(lhs))
|
||||
else
|
||||
@@ -115,7 +115,7 @@ do
|
||||
end
|
||||
end
|
||||
|
||||
function nearest.num(num)
|
||||
function nearest.f32(num)
|
||||
local result = math_round(num)
|
||||
|
||||
if math_abs(num) % 1 == 0.5 and math_floor(math_abs(num) % 2) == 0 then
|
||||
@@ -125,6 +125,12 @@ do
|
||||
return result
|
||||
end
|
||||
|
||||
neg.f64 = neg.f32
|
||||
min.f64 = min.f32
|
||||
max.f64 = max.f32
|
||||
copysign.f64 = copysign.f32
|
||||
nearest.f64 = nearest.f32
|
||||
|
||||
module.add = add
|
||||
module.sub = sub
|
||||
module.mul = mul
|
||||
@@ -333,7 +339,7 @@ do
|
||||
end
|
||||
end
|
||||
|
||||
function trunc.num(num)
|
||||
function trunc.f32(num)
|
||||
if num >= 0 then
|
||||
return math.floor(num)
|
||||
else
|
||||
@@ -341,6 +347,7 @@ do
|
||||
end
|
||||
end
|
||||
|
||||
trunc.f64 = trunc.f32
|
||||
trunc.u64_f32 = num_from_u64
|
||||
trunc.u64_f64 = num_from_u64
|
||||
|
||||
|
||||
@@ -7,10 +7,10 @@ pub trait AsSymbol {
|
||||
impl AsSymbol for BinOpType {
|
||||
fn as_symbol(&self) -> Option<&'static str> {
|
||||
let result = match self {
|
||||
Self::Add_FN => "+",
|
||||
Self::Sub_FN => "-",
|
||||
Self::Mul_FN => "*",
|
||||
Self::Div_FN => "/",
|
||||
Self::Add_F32 | Self::Add_F64 => "+",
|
||||
Self::Sub_F32 | Self::Sub_F64 => "-",
|
||||
Self::Mul_F32 | Self::Mul_F64 => "*",
|
||||
Self::Div_F32 | Self::Div_F64 => "/",
|
||||
Self::RemS_I32 | Self::RemU_I32 => "%",
|
||||
_ => return None,
|
||||
};
|
||||
@@ -22,12 +22,12 @@ impl AsSymbol for BinOpType {
|
||||
impl AsSymbol for CmpOpType {
|
||||
fn as_symbol(&self) -> Option<&'static str> {
|
||||
let result = match self {
|
||||
Self::Eq_I32 | Self::Eq_FN => "==",
|
||||
Self::Ne_I32 | Self::Ne_FN => "~=",
|
||||
Self::LtU_I32 | Self::Lt_FN => "<",
|
||||
Self::GtU_I32 | Self::Gt_FN => ">",
|
||||
Self::LeU_I32 | Self::Le_FN => "<=",
|
||||
Self::GeU_I32 | Self::Ge_FN => ">=",
|
||||
Self::Eq_I32 | Self::Eq_F32 | Self::Eq_F64 => "==",
|
||||
Self::Ne_I32 | Self::Ne_F32 | Self::Ne_F64 => "~=",
|
||||
Self::LtU_I32 | Self::Lt_F32 | Self::Lt_F64 => "<",
|
||||
Self::GtU_I32 | Self::Gt_F32 | Self::Gt_F64 => ">",
|
||||
Self::LeU_I32 | Self::Le_F32 | Self::Le_F64 => "<=",
|
||||
Self::GeU_I32 | Self::Ge_F32 | Self::Ge_F64 => ">=",
|
||||
_ => return None,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user