Fix inconsistencies

Addendum to truncation rename

Rename constants for consistency
This commit is contained in:
Rerumu 2022-07-08 12:34:15 -04:00
parent bdfede0b93
commit efec6203b0
4 changed files with 83 additions and 84 deletions

View File

@ -11,10 +11,10 @@ local math_ceil = math.ceil
local math_floor = math.floor
local to_number = tonumber
local ID_ZERO = i64(0)
local ID_ONE = i64(1)
local NUM_ZERO = i64(0)
local NUM_ONE = i64(1)
local function truncate(num)
local function truncate_f64(num)
if num >= 0 then
return (math_floor(num))
else
@ -62,13 +62,13 @@ do
end
function mul.i32(lhs, rhs)
return (to_signed(ID_ONE * lhs * rhs))
return (to_signed(NUM_ONE * lhs * rhs))
end
function div.i32(lhs, rhs)
assert(rhs ~= 0, "division by zero")
return (truncate(lhs / rhs))
return (truncate_f64(lhs / rhs))
end
function div.u32(lhs, rhs)
@ -257,38 +257,38 @@ do
function clz.i64(num)
if num == 0 then
return 64 * ID_ONE
return 64 * NUM_ONE
end
local count = ID_ZERO
local count = NUM_ZERO
if bit_rshift(num, 32) == ID_ZERO then
if bit_rshift(num, 32) == NUM_ZERO then
num = bit_lshift(num, 32)
count = count + 32
end
if bit_rshift(num, 48) == ID_ZERO then
if bit_rshift(num, 48) == NUM_ZERO then
num = bit_lshift(num, 16)
count = count + 16
end
if bit_rshift(num, 56) == ID_ZERO then
if bit_rshift(num, 56) == NUM_ZERO then
num = bit_lshift(num, 8)
count = count + 8
end
if bit_rshift(num, 60) == ID_ZERO then
if bit_rshift(num, 60) == NUM_ZERO then
num = bit_lshift(num, 4)
count = count + 4
end
if bit_rshift(num, 62) == ID_ZERO then
if bit_rshift(num, 62) == NUM_ZERO then
num = bit_lshift(num, 2)
count = count + 2
end
if bit_rshift(num, 63) == ID_ZERO then
count = count + ID_ONE
if bit_rshift(num, 63) == NUM_ZERO then
count = count + NUM_ONE
end
return count
@ -296,49 +296,49 @@ do
function ctz.i64(num)
if num == 0 then
return 64 * ID_ONE
return 64 * NUM_ONE
end
local count = ID_ZERO
local count = NUM_ZERO
if bit_lshift(num, 32) == ID_ZERO then
if bit_lshift(num, 32) == NUM_ZERO then
num = bit_rshift(num, 32)
count = count + 32
end
if bit_lshift(num, 48) == ID_ZERO then
if bit_lshift(num, 48) == NUM_ZERO then
num = bit_rshift(num, 16)
count = count + 16
end
if bit_lshift(num, 56) == ID_ZERO then
if bit_lshift(num, 56) == NUM_ZERO then
num = bit_rshift(num, 8)
count = count + 8
end
if bit_lshift(num, 60) == ID_ZERO then
if bit_lshift(num, 60) == NUM_ZERO then
num = bit_rshift(num, 4)
count = count + 4
end
if bit_lshift(num, 62) == ID_ZERO then
if bit_lshift(num, 62) == NUM_ZERO then
num = bit_rshift(num, 2)
count = count + 2
end
if bit_lshift(num, 63) == ID_ZERO then
count = count + ID_ONE
if bit_lshift(num, 63) == NUM_ZERO then
count = count + NUM_ONE
end
return count
end
function popcnt.i64(num)
local count = ID_ZERO
local count = NUM_ZERO
while num ~= ID_ZERO do
num = bit_and(num, num - ID_ONE)
count = count + ID_ONE
while num ~= NUM_ZERO do
num = bit_and(num, num - NUM_ONE)
count = count + NUM_ONE
end
return count
@ -395,7 +395,7 @@ end
do
local wrap = {}
local trunc = {}
local truncate = {}
local extend = {}
local convert = {}
local promote = {}
@ -419,14 +419,14 @@ do
return RE_INSTANCE.i32
end
trunc.i32_f32 = truncate
trunc.i32_f64 = truncate
trunc.i64_f32 = i64
trunc.i64_f64 = i64
trunc.u64_f32 = i64
trunc.u64_f64 = i64
trunc.f32 = truncate
trunc.f64 = truncate
truncate.i32_f32 = truncate_f64
truncate.i32_f64 = truncate_f64
truncate.i64_f32 = i64
truncate.i64_f64 = i64
truncate.u64_f32 = i64
truncate.u64_f64 = i64
truncate.f32 = truncate_f64
truncate.f64 = truncate_f64
function extend.i32_n8(num)
num = bit_and(num, 0xFF)
@ -481,7 +481,7 @@ do
extend.i64_i32 = i64
function extend.i64_u32(num)
RE_INSTANCE.i64 = ID_ZERO
RE_INSTANCE.i64 = NUM_ZERO
RE_INSTANCE.i32 = num
return RE_INSTANCE.i64
@ -544,7 +544,7 @@ do
end
module.wrap = wrap
module.trunc = trunc
module.truncate = truncate
module.extend = extend
module.convert = convert
module.demote = demote

View File

@ -227,7 +227,6 @@ fn write_local_operation(head: &str, tail: &str, w: &mut dyn Write) -> Result<()
("shr", "u32" | "u64") => write!(w, "bit.rshift "),
("rotl", _) => write!(w, "bit.rol "),
("rotr", _) => write!(w, "bit.ror "),
("trunc", "u32_f32" | "u32_f64") => write!(w, "math.floor "),
("convert", "f32_i64" | "f64_i64") => write!(w, "tonumber "),
_ => write!(w, "rt.{head}.{tail} "),
}

View File

@ -363,7 +363,7 @@ end
do
local wrap = {}
local trunc = {}
local truncate = {}
local extend = {}
local convert = {}
local demote = {}
@ -388,12 +388,12 @@ do
return data_1
end
trunc.i32_f32 = to_u32
trunc.i32_f64 = to_u32
trunc.u32_f32 = no_op
trunc.u32_f64 = no_op
truncate.i32_f32 = to_u32
truncate.i32_f64 = to_u32
truncate.u32_f32 = no_op
truncate.u32_f64 = no_op
function trunc.i64_f32(num)
function truncate.i64_f32(num)
if num < 0 then
local temp = num_from_u64(-math_ceil(num))
@ -405,7 +405,7 @@ do
end
end
function trunc.i64_f64(num)
function truncate.i64_f64(num)
if num < 0 then
local temp = num_from_u64(-math_ceil(num))
@ -417,10 +417,10 @@ do
end
end
trunc.u64_f32 = num_from_u64
trunc.u64_f64 = num_from_u64
truncate.u64_f32 = num_from_u64
truncate.u64_f64 = num_from_u64
function trunc.f32(num)
function truncate.f32(num)
if num >= 0 then
return math_floor(num)
else
@ -428,7 +428,7 @@ do
end
end
trunc.f64 = trunc.f32
truncate.f64 = truncate.f32
function extend.i32_n8(num)
num = bit_and(num, 0xFF)
@ -564,7 +564,7 @@ do
end
module.wrap = wrap
module.trunc = trunc
module.truncate = truncate
module.extend = extend
module.convert = convert
module.demote = demote
@ -856,7 +856,7 @@ do
store_i64(memory, addr, reinterpret_i64_f64(value))
end
function store.string(memory, offset, data, len)
function store.string(memory, addr, data, len)
len = len or #data
local rem = len % 4
@ -864,13 +864,13 @@ do
for i = 1, len - rem, 4 do
local v = string_unpack("<I4", data, i)
store_i32(memory, offset + i - 1, v)
store_i32(memory, addr + i - 1, v)
end
for i = len - rem + 1, len do
local v = string_byte(data, i)
store_i8(memory, offset + i - 1, v)
store_i8(memory, addr + i - 1, v)
end
end

View File

@ -136,21 +136,25 @@ pub enum UnOpType {
Neg_F32,
Ceil_F32,
Floor_F32,
Trunc_F32,
Truncate_F32,
Nearest_F32,
Sqrt_F32,
Abs_F64,
Neg_F64,
Ceil_F64,
Floor_F64,
Trunc_F64,
Truncate_F64,
Nearest_F64,
Sqrt_F64,
Wrap_I32_I64,
Trunc_I32_F32,
Trunc_U32_F32,
Trunc_I32_F64,
Trunc_U32_F64,
Truncate_I32_F32,
Truncate_I32_F64,
Truncate_U32_F32,
Truncate_U32_F64,
Truncate_I64_F32,
Truncate_I64_F64,
Truncate_U64_F32,
Truncate_U64_F64,
Extend_I32_N8,
Extend_I32_N16,
Extend_I64_N8,
@ -158,10 +162,6 @@ pub enum UnOpType {
Extend_I64_N32,
Extend_I64_I32,
Extend_I64_U32,
Trunc_I64_F32,
Trunc_U64_F32,
Trunc_I64_F64,
Trunc_U64_F64,
Convert_F32_I32,
Convert_F32_U32,
Convert_F32_I64,
@ -192,21 +192,25 @@ impl UnOpType {
Self::Neg_F32 => ("neg", "f32"),
Self::Ceil_F32 => ("ceil", "f32"),
Self::Floor_F32 => ("floor", "f32"),
Self::Trunc_F32 => ("trunc", "f32"),
Self::Truncate_F32 => ("truncate", "f32"),
Self::Nearest_F32 => ("nearest", "f32"),
Self::Sqrt_F32 => ("sqrt", "f32"),
Self::Abs_F64 => ("abs", "f64"),
Self::Neg_F64 => ("neg", "f64"),
Self::Ceil_F64 => ("ceil", "f64"),
Self::Floor_F64 => ("floor", "f64"),
Self::Trunc_F64 => ("trunc", "f64"),
Self::Truncate_F64 => ("truncate", "f64"),
Self::Nearest_F64 => ("nearest", "f64"),
Self::Sqrt_F64 => ("sqrt", "f64"),
Self::Wrap_I32_I64 => ("wrap", "i32_i64"),
Self::Trunc_I32_F32 => ("trunc", "i32_f32"),
Self::Trunc_U32_F32 => ("trunc", "u32_f32"),
Self::Trunc_I32_F64 => ("trunc", "i32_f64"),
Self::Trunc_U32_F64 => ("trunc", "u32_f64"),
Self::Truncate_I32_F32 => ("truncate", "i32_f32"),
Self::Truncate_I32_F64 => ("truncate", "i32_f64"),
Self::Truncate_U32_F32 => ("truncate", "u32_f32"),
Self::Truncate_U32_F64 => ("truncate", "u32_f64"),
Self::Truncate_I64_F32 => ("truncate", "i64_f32"),
Self::Truncate_I64_F64 => ("truncate", "i64_f64"),
Self::Truncate_U64_F32 => ("truncate", "u64_f32"),
Self::Truncate_U64_F64 => ("truncate", "u64_f64"),
Self::Extend_I32_N8 => ("extend", "i32_n8"),
Self::Extend_I32_N16 => ("extend", "i32_n16"),
Self::Extend_I64_N8 => ("extend", "i64_n8"),
@ -214,10 +218,6 @@ impl UnOpType {
Self::Extend_I64_N32 => ("extend", "i64_n32"),
Self::Extend_I64_I32 => ("extend", "i64_i32"),
Self::Extend_I64_U32 => ("extend", "i64_u32"),
Self::Trunc_I64_F32 => ("trunc", "i64_f32"),
Self::Trunc_U64_F32 => ("trunc", "u64_f32"),
Self::Trunc_I64_F64 => ("trunc", "i64_f64"),
Self::Trunc_U64_F64 => ("trunc", "u64_f64"),
Self::Convert_F32_I32 => ("convert", "f32_i32"),
Self::Convert_F32_U32 => ("convert", "f32_u32"),
Self::Convert_F32_I64 => ("convert", "f32_i64"),
@ -251,21 +251,25 @@ impl TryFrom<&Operator<'_>> for UnOpType {
Operator::F32Neg => Self::Neg_F32,
Operator::F32Ceil => Self::Ceil_F32,
Operator::F32Floor => Self::Floor_F32,
Operator::F32Trunc => Self::Trunc_F32,
Operator::F32Trunc => Self::Truncate_F32,
Operator::F32Nearest => Self::Nearest_F32,
Operator::F32Sqrt => Self::Sqrt_F32,
Operator::F64Abs => Self::Abs_F64,
Operator::F64Neg => Self::Neg_F64,
Operator::F64Ceil => Self::Ceil_F64,
Operator::F64Floor => Self::Floor_F64,
Operator::F64Trunc => Self::Trunc_F64,
Operator::F64Trunc => Self::Truncate_F64,
Operator::F64Nearest => Self::Nearest_F64,
Operator::F64Sqrt => Self::Sqrt_F64,
Operator::I32WrapI64 => Self::Wrap_I32_I64,
Operator::I32TruncF32S => Self::Trunc_I32_F32,
Operator::I32TruncF32U => Self::Trunc_U32_F32,
Operator::I32TruncF64S => Self::Trunc_I32_F64,
Operator::I32TruncF64U => Self::Trunc_U32_F64,
Operator::I32TruncF32S => Self::Truncate_I32_F32,
Operator::I32TruncF64S => Self::Truncate_I32_F64,
Operator::I32TruncF32U => Self::Truncate_U32_F32,
Operator::I32TruncF64U => Self::Truncate_U32_F64,
Operator::I64TruncF32S => Self::Truncate_I64_F32,
Operator::I64TruncF64S => Self::Truncate_I64_F64,
Operator::I64TruncF32U => Self::Truncate_U64_F32,
Operator::I64TruncF64U => Self::Truncate_U64_F64,
Operator::I32Extend8S => Self::Extend_I32_N8,
Operator::I32Extend16S => Self::Extend_I32_N16,
Operator::I64Extend8S => Self::Extend_I64_N8,
@ -273,10 +277,6 @@ impl TryFrom<&Operator<'_>> for UnOpType {
Operator::I64Extend32S => Self::Extend_I64_N32,
Operator::I64ExtendI32S => Self::Extend_I64_I32,
Operator::I64ExtendI32U => Self::Extend_I64_U32,
Operator::I64TruncF32S => Self::Trunc_I64_F32,
Operator::I64TruncF32U => Self::Trunc_U64_F32,
Operator::I64TruncF64S => Self::Trunc_I64_F64,
Operator::I64TruncF64U => Self::Trunc_U64_F64,
Operator::F32ConvertI32S => Self::Convert_F32_I32,
Operator::F32ConvertI32U => Self::Convert_F32_U32,
Operator::F32ConvertI64S => Self::Convert_F32_I64,