mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-16 16:00:30 +02:00
Four of the GE's lerps at once: both operands go to 16-bit fixed point at the larger exponent by scaling with a power of two and truncating, then the integer lerp (split into byte halves so both multiplies fit 16 bits), then back. The patch's four control columns run in the four lanes at each v step, then four u steps of a row at once, with the row's first level of lerps converted once per row. Lanes whose exponents are tiny take the scalar lerp, and the normals' cross product stays scalar for now. The scalar code stays as the reference (g_splineGEScalar), and the unit test compares the two bit for bit on random control points. The GE-exact Bezier benchmark goes from 3.4 to about 8.8 Mverts/s on an M1; the float SIMD path does about 100. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>