mirror of
https://github.com/ran-j/PS2Recomp.git
synced 2026-09-26 16:59:35 -04:00
5196a6672a
* feat: added guestBranchKind enum to categorize branch types feat: added missingFunctionPolicy enum to define behaviors for missing function scenarios refactor: added handle guest branches and report missing functions feat lookupFunction to utilize new dispatch logic and improve error handling for unregistered functions * fix: fix test conflict * feat: added debug sound driver logs * feat: emmiter for return * feat: added recompiler reporter feat: added strict diagnostics flag for heavy debug calls * feat: staticc table insted of hashmap for runtime * feat: back file to ignore * feat: explode code across helpers and classes * feat: update codegen test feat: better guest nop check * feat: fix link problem on linux * feat: fix Segmentation fault
38 lines
994 B
C++
38 lines
994 B
C++
#ifndef PS2RECOMP_CODEGEN_HELPERS_H
|
|
#define PS2RECOMP_CODEGEN_HELPERS_H
|
|
|
|
#include <cmath>
|
|
#include <cstdint>
|
|
#include <string>
|
|
#include <fmt/format.h>
|
|
|
|
namespace ps2recomp::codegen
|
|
{
|
|
inline std::string formatFloatLiteral(float value)
|
|
{
|
|
if (!std::isfinite(value))
|
|
{
|
|
return (value < 0.0f) ? "-INFINITY" : "INFINITY";
|
|
}
|
|
|
|
std::string literal = fmt::format("{:.9g}", value);
|
|
if (literal.find_first_of(".eE") == std::string::npos)
|
|
{
|
|
literal += ".0";
|
|
}
|
|
literal += 'f';
|
|
return literal;
|
|
}
|
|
|
|
inline std::string vuMaskExpr(uint8_t dest_mask)
|
|
{
|
|
return fmt::format("_mm_castsi128_ps(_mm_set_epi32({}, {}, {}, {}))",
|
|
(dest_mask & 0x1) ? -1 : 0,
|
|
(dest_mask & 0x2) ? -1 : 0,
|
|
(dest_mask & 0x4) ? -1 : 0,
|
|
(dest_mask & 0x8) ? -1 : 0);
|
|
}
|
|
}
|
|
|
|
#endif // PS2RECOMP_CODEGEN_HELPERS_H
|