Skip to content

Commit ce7ea02

Browse files
anun333claude
andcommitted
BRANCH-LOG.md: the AVX-512 depth checks and the SDE step; CORE-MATH on aarch64
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 48acde7 commit ce7ea02

1 file changed

Lines changed: 43 additions & 0 deletions

File tree

‎BRANCH-LOG.md‎

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,8 @@ reproduced before it was made, and shown to fail without the fix (a
148148
- The cause in `atan2`: `rdh = 1/dh` is subnormal when |dh| > 2^1022,
149149
and FTZ flushes it to 0. Over 2 million inputs with |dh| > 2^1022:
150150
0 right, 700 wrong, 90,167 `exit(1)`.
151+
- All four reproduce on aarch64 with FPCR.FZ too (qemu, 2026-09-29),
152+
where that `atan2` gives `0x1p-841` instead of x86's `0x1p-840`.
151153

152154
### `414f2f6`: build and checks (findings 5, 6, 7, 8, 4)
153155

@@ -309,6 +311,47 @@ exit non-zero.
309311
README and the Makefile record the numbers; the decision is the
310312
maintainer's. Per-function table below.
311313

314+
### `48acde7`: the AVX-512 entry points at depth, and Intel SDE in CI
315+
316+
Items 1 and 2 of the further-work list the owner was given, re-ranked
317+
after openpocl's HANDOFF: correctness and coverage before more x86 speed,
318+
which openpocl lists under "What not to spend time on".
319+
320+
- **Why:** the 512-bit core (E512) had every float input, but the doubles
321+
and pairs only `cecheck e`'s samples (raw bits, or values within ±32),
322+
and CI's runners mostly lack AVX-512.
323+
- **Decision:** AVX-512 twins of `crtest`'s own checks, `verify64e` and
324+
`verify2e`, rather than a new program. They reuse its generators, hard
325+
cases, edges and parity pairs, 8 or 16 lanes a call.
326+
- The AVX2 modes are unchanged: `cbrt` and `hypot` give the same counts
327+
as before.
328+
- **Result:** all 23 doubles (2^31 inputs each, plus hard cases and edges)
329+
and all six pair functions (2^30 pairs each, plus specials and parity):
330+
0 differ. About 17 minutes on the Cascade Lake VM.
331+
- **Control:** the 512-bit core built with its bounds zeroed, and nothing
332+
else changed (`PORTDEFS` reaches only `crmvec-port-e.o` in the default
333+
x86 build).
334+
- `verify64e` finds errors in all seven doubles tried: 40 (`cbrt`) to
335+
2,967,824 (`tan`).
336+
- `verify2e` finds 13,673 in `pow` and 1,383,016 in `atan2`. These are
337+
the portable core's control counts at 256 bits, since the double pairs
338+
use the same seeds.
339+
- `verify64` on the same binary passes, so the new modes reach the
340+
512-bit core specifically.
341+
- `hypot`: 0, as documented: its midpoint test is reached only by
342+
`hypot-midpoints`.
343+
- **CI:** where the runner lacks AVX-512 (most runs), a new step downloads
344+
Intel SDE and runs `cecheck e . 10` under `-skx` (an emulated
345+
Skylake-SP).
346+
- Not testable from the cloud container: Intel's download site is
347+
blocked there, and so are CI logs. The step reports the download's
348+
sha256 and its verdict as notices, which the check-run annotations API
349+
returns.
350+
- **To do:** pin that sha256 once a run reports it.
351+
- Two mirror URLs are tried (SDE 9.44.0, then 9.33.0).
352+
- Heavier checks (`crtest verify64e`, `cecheck e . floats`) stay local;
353+
under emulation they would take hours.
354+
312355
## Deliberately not done
313356

314357
- **`bcheck`'s `powr`/`pown` reference is the library's own scalar code.**

0 commit comments

Comments
 (0)