Commit 8f15c4b
Add FMA rewrites and fused d4 inverse codelets for all ISA tiers
Inverse twiddle recombinations used ADD(MUL,MUL) instead of MADD/MSUB,
missing FMA opportunities on every ISA. Fixed in norm_q_inv, norm2_inv_fused,
and codelet_d3_tw_res_inv for both f32 (V4F) and double (V2) paths.
NEON FMA count in the inverse schedule runner went from 8 to 38.
Added codelet_d4_inv_f32 (SSE2/NEON) and codelet_d4_inv (AVX2+FMA) that
fuse two d3_inv leaves with the q=8 norm_q_inv butterfly, keeping all
intermediate values in registers instead of storing/reloading 32 elements
through the data array. Wired into both the recursive path and the
schedule runner for both precisions.
Assembly impact: NEON total instructions 1162→961, SSE2 1535→1286.
AVX2 double d4 fusion: 2212 instructions, 55 FMAs, 330 spill/reloads
(expected for 16 YMM registers; spills hit L1 stack).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>1 parent 950d0e8 commit 8f15c4b
2 files changed
Lines changed: 354 additions & 41 deletions
0 commit comments