Index | Thread | Search

From:
Brad Smith <brad@comstyle.com>
Subject:
Re: UPDATE: recoil-rts - arm64
To:
Fabien Romano <fabienromano@gmail.com>, Thomas Frohwein <tfrohwein@fastmail.com>
Cc:
ports@openbsd.org
Date:
Thu, 27 Aug 2026 01:57:16 -0400

Download raw body.

Thread
On 2026-07-27 5:50 p.m., Fabien Romano wrote:
>
> On 7/27/26 21:14, Thomas Frohwein wrote:
>> On Sat, 25 Jul 2026 18:24:57 -0400
>> Brad Smith <brad@comstyle.com> wrote:
>>
>>> Within the last few months recoil-rts has gained support for building
>>> on aarch64. The following diff fixes building the port on aarch64.
>> Thanks, Brad. This is a fairly big port and I'm reluctant to enable it
>> for arm64 without reports on the test suite (`make test`) and runtime.
>>
> With the below diff, you can check if the math is correct from upstream.
> https://github.com/beyond-all-reason/RecoilEngine/blob/master/.github/workflows/streflop-float-test.yml
>
> This is what I get on amd64 here (RESULT: BIT-EXACT MATCH):
>
> cd /mnt/ext/_ports/pobj/recoil-rts-2026.06.12/RecoilEngine-2026.06.12 && python3
> ./tools/sync-test/compare_results.py
> ./tools/sync-test/reference/streflop_results_NEON_arm64.bin
> /mnt/ext/_ports/pobj/recoil-rts-2026.06.12/build-amd64/results.`uname -m`.bin
> Reference: ./tools/sync-test/reference/streflop_results_NEON_arm64.bin
> Test:      /mnt/ext/_ports/pobj/recoil-rts-2026.06.12/build-amd64/results.amd64.bin
>
> Reference: STREFLOP_NEON on arm64 (52,080 tests)
> Test:      STREFLOP_SSE on x86_64 (52,080 tests)
>
> ============================================================
> COMPARISON SUMMARY
> ============================================================
>    Common tests:    52,080
>    Matching:        52,080 (100.0%)
>    Mismatched:      0 (0.0%)
>    NaN-both:        71 (counted as match)
>
> RESULT: BIT-EXACT MATCH
> cd /mnt/ext/_ports/pobj/recoil-rts-2026.06.12/RecoilEngine-2026.06.12 && python3
> ./tools/sync-test/compare_results.py
> ./tools/sync-test/reference/streflop_results_SSE_x86_64.bin
> /mnt/ext/_ports/pobj/recoil-rts-2026.06.12/build-amd64/results.`uname -m`.bin
> Reference: ./tools/sync-test/reference/streflop_results_SSE_x86_64.bin
> Test:      /mnt/ext/_ports/pobj/recoil-rts-2026.06.12/build-amd64/results.amd64.bin
>
> Reference: STREFLOP_SSE on x86_64 (47,852 tests)
> Test:      STREFLOP_SSE on x86_64 (52,080 tests)
>
> WARNING: Different test counts (ref=47,852, test=52,080)
>           Comparing first 47,852 records
>
> ============================================================
> COMPARISON SUMMARY
> ============================================================
>    Common tests:    47,852
>    Matching:        47,852 (100.0%)
>    Mismatched:      0 (0.0%)
>
> RESULT: BIT-EXACT MATCH


arm64$ make test
===>  Regression tests for recoil-rts-2026.07.04p0
cd /home/brad/ports/pobj/recoil-rts-2026.07.04/build-aarch64 && 
./streflop-float-test -n 10000 results.`uname -m`
STREFLOP Float Comparison Test
   Mode:       STREFLOP_NEON
   Arch:       arm64
   Compiler:   Clang 22.1.6
   FP-contract: off (set by CMake)
   Inputs:     10000
   Hash-only:  no

   Estimated binary output: ~650.0 KB

Initializing streflop (STREFLOP_NEON)...
   Simple init OK
   Double init OK
Opening binary output: results.arm64.bin
Opening text output:   results.arm64.txt

Generating 10000 deterministic input values...
   Generated in 0.00 seconds

Running Category A: Basic arithmetic (limit=2000)...
   5000 tests  [hash: 028748A131B6DE45]
Running Category B: Transcendentals (limit=2000)...
   40050 tests  [hash: 90A499DDF050A110]
Running Category C: Double precision (limit=1000)...
   2500 tests  [hash: 8AC013D704C7DC9C]
Running Category D: Compound operations (limit=300)...
   302 tests  [hash: AD402488FCDFB689]
Running Category E: Edge cases (denormals, inf, NaN, zero)...
   4228 tests  [hash: EA2881A4F127BF10]

Total: 52080 tests in 0.05 seconds (1041600 tests/sec)
Binary file: results.arm64.bin (677.1 KB)

============================================================
VERIFICATION HASH (FNV-1a of all 52080 result records)
   Hash: EA2881A4F127BF10
   Tests: 52080
   Mode: STREFLOP_NEON on arm64
============================================================

Compare with:
   python3 compare_results.py <reference>.bin results.arm64.bin
Or just compare the hash above across architectures.
cd /home/brad/ports/pobj/recoil-rts-2026.07.04/RecoilEngine-2026.07.04 
&& python3 ./tools/sync-test/compare_results.py 
./tools/sync-test/reference/streflop_results_NEON_arm64.bin 
/home/brad/ports/pobj/recoil-rts-2026.07.04/build-aarch64/results.`uname 
-m`.bin
Reference: ./tools/sync-test/reference/streflop_results_NEON_arm64.bin
Test: 
/home/brad/ports/pobj/recoil-rts-2026.07.04/build-aarch64/results.arm64.bin

Reference: STREFLOP_NEON on arm64 (52,080 tests)
Test:      STREFLOP_NEON on arm64 (52,080 tests)

============================================================
COMPARISON SUMMARY
============================================================
   Common tests:    52,080
   Matching:        52,080 (100.0%)
   Mismatched:      0 (0.0%)

RESULT: BIT-EXACT MATCH
cd /home/brad/ports/pobj/recoil-rts-2026.07.04/RecoilEngine-2026.07.04 
&& python3 ./tools/sync-test/compare_results.py 
./tools/sync-test/reference/streflop_results_SSE_x86_64.bin 
/home/brad/ports/pobj/recoil-rts-2026.07.04/build-aarch64/results.`uname 
-m`.bin
Reference: ./tools/sync-test/reference/streflop_results_SSE_x86_64.bin
Test: 
/home/brad/ports/pobj/recoil-rts-2026.07.04/build-aarch64/results.arm64.bin

Reference: STREFLOP_SSE on x86_64 (47,852 tests)
Test:      STREFLOP_NEON on arm64 (52,080 tests)

WARNING: Different test counts (ref=47,852, test=52,080)
          Comparing first 47,852 records

============================================================
COMPARISON SUMMARY
============================================================
   Common tests:    47,852
   Matching:        47,852 (100.0%)
   Mismatched:      0 (0.0%)

RESULT: BIT-EXACT MATCH