Fix signed i32
remainder
This commit is contained in:
parent
62f41eac17
commit
5d4aa97cd5
@ -43,6 +43,7 @@ do
|
||||
local sub = {}
|
||||
local mul = {}
|
||||
local div = {}
|
||||
local rem = {}
|
||||
local neg = {}
|
||||
local min = {}
|
||||
local max = {}
|
||||
@ -52,6 +53,7 @@ do
|
||||
local assert = assert
|
||||
|
||||
local math_abs = math.abs
|
||||
local math_fmod = math.fmod
|
||||
local math_floor = math.floor
|
||||
local math_round = math.round
|
||||
local math_sign = math.sign
|
||||
@ -110,6 +112,15 @@ do
|
||||
|
||||
div.u64 = I64.divide_unsigned
|
||||
|
||||
function rem.i32(lhs, rhs)
|
||||
assert(rhs ~= 0, "division by zero")
|
||||
|
||||
lhs = to_i32(lhs)
|
||||
rhs = to_i32(rhs)
|
||||
|
||||
return to_u32(math_fmod(lhs, rhs))
|
||||
end
|
||||
|
||||
function neg.f32(num)
|
||||
return -num
|
||||
end
|
||||
@ -161,6 +172,7 @@ do
|
||||
module.sub = sub
|
||||
module.mul = mul
|
||||
module.div = div
|
||||
module.rem = rem
|
||||
module.neg = neg
|
||||
module.min = min
|
||||
module.max = max
|
||||
|
@ -11,7 +11,7 @@ impl AsSymbol for BinOpType {
|
||||
Self::Sub_F32 | Self::Sub_F64 => "-",
|
||||
Self::Mul_F32 | Self::Mul_F64 => "*",
|
||||
Self::Div_F32 | Self::Div_F64 => "/",
|
||||
Self::RemS_I32 | Self::RemU_I32 => "%",
|
||||
Self::RemU_I32 => "%",
|
||||
_ => return None,
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user