Open SwadicalRag opened 5 years ago
These ones should be inlined to assist the LuaJIT tracer
__FUNCS__.sinf = math.sin
__FUNCS__.asinf = math.asin
__FUNCS__.cosf = math.cos
__FUNCS__.acosf = math.acos
__FUNCS__.atanf = math.atan
__FUNCS__.atan2f = math.atan2
__FUNCS__.sqrtf = math.sqrt
__FUNCS__.powf = math.pow
__FUNCS__.fmodf = math.fmod
__FUNCS__.floor = math.floor
__FUNCS__.fabsf = math.abs
__FUNCS__.frexp = function(x,pExp) local mul,exp = math_frexp(x) __MEMORY_WRITE_32__(module.memory,pExp,exp) return mul end
function __FUNCS__.memset(dest, byte, len)
local fastLen = bit.band(len,-4) -- bit.bnot(3)
local fwByte = bit.bor(
byte,
bit.lshift(byte,4),
bit.lshift(byte,8),
bit.lshift(byte,12)
)
for i=0,fastLen-1,4 do
__MEMORY_WRITE_32__(mem_0,dest+i,fwByte)
end
for i=(len-fastLen),len-1,1 do
__MEMORY_WRITE_8__(mem_0,dest+i,byte)
end
return dest
end
i.e. we roll our own optimised code that plays nice with our custom memory design e.g. (naiive memcpy example that's optimised for luajit)
Before: After:
This can be optimised further in the pure-lua memory version by allowing memset to copy over fpMap too (so that memory type hints are preserved, and speed is therefore preserved without having to convert between floats and ints)