P2: decode mask-accumulator combine kernels from raw bytes — combine3(0x8d60)=sub, acc_add(0x5a20)=dst+=src, acc_fma(0x3c40)=dst+=a·b; implement + levelpath_check ALL OK

This commit is contained in:
2026-08-20 01:30:33 +03:00
parent d3db772121
commit 22e4599e0a
4 changed files with 57 additions and 2 deletions
+18
View File
@@ -160,6 +160,24 @@
Остаток 0.7 dB (Q=0.1) = LUT-колено 0.574 -> нужен FFT-уровень (0x535a70 + окно 0x540658 + freq-axis
0x540698), см. SESSION_HANDOFF §5-6.
## ============ UPDATE 2026-08-20h: P2 mask-accumulator combine kernels DECODED ============
Raw bytes from rt snap (objdump of image 0x180008d60/5a20/3c40). Implemented in dsp/levelpath.cpp.
### Exact CRT thunk semantics (per-bin double ops in FUN_180529fe0):
- **0x8d60 combine3(dst,a,b,n) = sub**: out[i] = a[i] b[i] (vsubpd; dst is the 3rd pointer).
Per-band call: 0x5406f8[i] = 0x540678[i] 0x5407c8[i]. (corrects NOTES:348 "combine" TBD)
- **0x5a20 acc_add(dst,src,n)**: dst[i] += src[i] (double; kernel 0x18001a5a0).
- **0x3c40 acc_fma(dst,a,b,n)**: dst[i] += a[i]·b[i] (double; vfmadd213pd).
- 0x11940 = copy/mirror (complex, 5th arg stride 0/4 → kernel 0x1a88300), 0x6e40 = dst=src·scalar,
0x15060 = buf+=scalar, 0x8700 = dst*=src (float, warp), 0x9be0 = buf=scalar·buf.
### Full mask-accumulator per band (0x5408b8==0):
1. 0x5406f8 = 0x540678 0x5407c8 (8d60 sub)
2. mirror 0x5406f8 halves (11940)
3. 0x5407c8 += 0x5406c8 · 0x5406f8_upper (3c40, stride4)
4. 0x5407c8 += 0x5406e8 · 0x5406f8_lower (3c40)
5. 0x5407c8 += 0x540678 (5a20)
## ============ UPDATE 2026-08-20g: P2.5 twin-mask factory + band LUT apply DECODED ============
Source: decomp_funs2.txt (FUN_18056e3e0:7988, FUN_180563a60:8975, FUN_180563440:7697) +
f_56e3e0.dis + f_563a60.dis. Implemented in dsp/levelpath.cpp (levelpath_check ALL OK).