mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-09-07 05:03:35 +02:00
GCC defaults to -ffp-contract=fast and Clang to on, so both fuse a*b + c into a single FMA where the hardware has one; MSVC /fp:precise doesn't contract at all. On aarch64 FMLA is baseline, so the same source gives different depth, fog and lighting values on Android/Linux than on Windows-on-ARM - exactly the kind of same-architecture difference we're trying to eliminate. x86-64 only escapes today because the SSE4.1 baseline has no FMA, which -march=native or x86-64-v3 (as used by distro and Flatpak packagers) would undo. Set per-source so it also covers the Math3D.h scalar operator chains inlined into these TUs, which is where it actually matters. MSVC needs nothing. Note this only covers the CMake build, which is what the shipping Android build uses. The legacy android/jni ndk-build and libretro/Makefile.common have no per-file mechanism, so they'd need it applied globally - left for the wider GPU/ evaluation. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Vd8ntC2brCUtCrDJMqLbs8