PPU: refactor shift and splat instructions

Fix utils::rol32/64 functions.
Fix immediate clamping in splat instructions.
Other fixes.
This commit is contained in:
Nekotekina 2022-01-19 02:41:32 +03:00
parent d92008abe4
commit b42fae0989
4 changed files with 784 additions and 382 deletions

View file

@ -247,10 +247,16 @@ inline FT build_function_asm(std::string_view name, F&& builder)
Asm compiler(&code);
compiler.addEncodingOptions(EncodingOptions::kOptimizedAlign);
if constexpr (std::is_invocable_v<F, Asm&, native_args&>)
builder(compiler, args);
if constexpr (std::is_invocable_r_v<bool, F, Asm&, native_args&>)
{
if (!builder(compiler, args))
return nullptr;
}
else
builder(compiler);
{
builder(compiler, args);
}
rt.dump_name = name;
const auto result = rt._add(&code);
jit_announce(result, code.codeSize(), name);