Simplify LuaJIT comparisons and shifts

This commit is contained in:
Rerumu 2021-11-17 02:11:23 -05:00
parent 55dbf8ee32
commit 9aa0304384

View File

@ -39,14 +39,22 @@ do
module.ge = ge
module.gt = gt
function ge.u32(lhs, rhs) return u32(lhs) >= u32(rhs) and 1 or 0 end
function ge.u64(lhs, rhs) return u64(lhs) >= u64(rhs) and 1 or 0 end
function gt.u32(lhs, rhs) return u32(lhs) > u32(rhs) and 1 or 0 end
function gt.u64(lhs, rhs) return u64(lhs) > u64(rhs) and 1 or 0 end
function le.u32(lhs, rhs) return u32(lhs) <= u32(rhs) and 1 or 0 end
function le.u64(lhs, rhs) return u64(lhs) <= u64(rhs) and 1 or 0 end
function lt.u32(lhs, rhs) return u32(lhs) < u32(rhs) and 1 or 0 end
function lt.u64(lhs, rhs) return u64(lhs) < u64(rhs) and 1 or 0 end
local function to_boolean(cond)
if cond then
return 1
else
return 0
end
end
function ge.u32(lhs, rhs) return to_boolean(u32(lhs) >= u32(rhs)) end
function ge.u64(lhs, rhs) return to_boolean(u64(lhs) >= u64(rhs)) end
function gt.u32(lhs, rhs) return to_boolean(u32(lhs) > u32(rhs)) end
function gt.u64(lhs, rhs) return to_boolean(u64(lhs) > u64(rhs)) end
function le.u32(lhs, rhs) return to_boolean(u32(lhs) <= u32(rhs)) end
function le.u64(lhs, rhs) return to_boolean(u64(lhs) <= u64(rhs)) end
function lt.u32(lhs, rhs) return to_boolean(u32(lhs) < u32(rhs)) end
function lt.u64(lhs, rhs) return to_boolean(u64(lhs) < u64(rhs)) end
end
do
@ -77,10 +85,29 @@ do
module.shl = shl
module.shr = shr
function shl.u32(lhs, rhs) return i32(bit.lshift(u32(lhs), rhs)) end
function shl.u64(lhs, rhs) return i64(bit.lshift(u64(lhs), rhs)) end
function shr.u32(lhs, rhs) return i32(bit.rshift(u32(lhs), rhs)) end
function shr.u64(lhs, rhs) return i64(bit.rshift(u64(lhs), rhs)) end
function shl.u32(lhs, rhs)
local v = bit.lshift(u32(lhs), rhs)
return tonumber(i32(v))
end
function shl.u64(lhs, rhs)
local v = bit.lshift(u64(lhs), rhs)
return i64(v)
end
function shr.u32(lhs, rhs)
local v = bit.rshift(u32(lhs), rhs)
return tonumber(i32(v))
end
function shr.u64(lhs, rhs)
local v = bit.rshift(u64(lhs), rhs)
return i64(v)
end
shl.i32 = bit.lshift
shl.i64 = bit.lshift