P3.2: map full 4-level FFT dispatch (535a70->140a10/70->jumptable->runtime table->6 final split-radix kernels 0x1802a24c0..2ce4a0); kernels force MXCSR round-to-nearest
This commit is contained in:
@@ -86,4 +86,19 @@ then jump through tables:
|
||||
vector 0x182617588 = {0x180141440, ..., 0x180141560} ([4]=0x1801414c0)
|
||||
These are the per-size/per-type stage kernels (0x1801413xx/1415xx family).
|
||||
|
||||
### FOURTH level — final kernels (runtime-filled pointer tables):
|
||||
0x180141400 = jmp *[0x1826181d8]; the tables hold (at capture):
|
||||
0x1826181d8=0x1802a24c0, 0x182618200=0x1802a4d80, 0x182618228=0x1802a7540,
|
||||
0x182618250=0x1802b4540, 0x182618278=0x1802c1540, 0x1826182a0=0x1802ce4a0.
|
||||
These 6 are the final split-radix FFT kernels (stack frames 0x328/0x350/0x7c8/0x7c8/0x7f8/0xd48).
|
||||
- **CRITICAL for bit-exact**: kernel 0x1802a24c0 prologue sets MXCSR rounding mode (vstmxcsr/
|
||||
vldmxcsr, round-to-nearest 0x1f80) AND x87 control word (fnstcw/fldcw) before the FP loop,
|
||||
then restores. So the transform runs under an explicitly-forced rounding mode.
|
||||
|
||||
### STATUS / scope
|
||||
Full bit-exact FFT = plan generator (0x2f980 split-radix index algebra) + runtime dispatch
|
||||
(3-level tables) + 6 final kernels (each 0x800-0x1200 bytes of vectorized split-radix butterfly)
|
||||
+ twiddle. This is the P3 2-4 week body. Architecture fully mapped; transcription not yet done.
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user