mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-02 12:56:05 +00:00
v_add_f32, v_sub_f32, v_subrev_f32, v_mul_f32 and v_mul_legacy_f32 follow the FLOAT_MODE f32 denormal field with f32 round to nearest even, as measured on RDNA2 (gfx1030): mode 1 keeps denormal inputs and flushes a denormal result, and mode 2 flushes denormal inputs and keeps a denormal result. Both need the device to keep the f32 denormals the shader keeps, so they translate only when the module declares DenormPreserve 32 and throw otherwise. The result flush now applies when only the result flush bit is set; it was skipped unless the input flush bit was set too. A constant factor no longer skips the tiny product check while denormal inputs are kept, as a kept denormal times such a constant can still be tiny. Directed rounding in these modes still throws. Co-Authored-By: Claude Opus 5.5 <[email protected]>