Run the face tests on the tablet, where the NEON kernel actually runs

The similarity scan picks its dot product per machine, and the NEON one
is the kernel that ships to the phone and the tablet — and the one a
desktop cargo test never executes. A wrong lane index or a mishandled
tail there is a silent wrong answer on exactly the devices nobody runs
the suite on, which is a poor place for the only untested code path.

dr-face carries no weights and touches no display, so its tests are a
plain ARM64 binary that runs under adb shell with nothing installed.
The script builds it against the SDK's newest NDK, pushes it, runs it
and cleans up. It checks for the device first, so a tablet that is not
plugged in costs a second rather than the two minutes it takes to
compile for it.

Not wired into CI, which has no device attached.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-29 12:02:03 +02:00
co-authored by Claude Opus 5
parent 8f596262b8
commit f4395bd17c
2 changed files with 83 additions and 0 deletions
+5
View File
@@ -674,6 +674,11 @@ app builds for has it, and the explicit `vfmaq` matters because LLVM will not fu
add on its own. The portable loop remains the definition the others are tested against. All three
produce the same 1,531,969 pairs.
The NEON kernel is the one a desktop `cargo test` never executes, so
`tools/face-tests-on-device.sh` runs the suite on an attached device: `dr-face` carries no weights
and touches no display, so its tests are a plain ARM64 binary that runs under `adb shell` with
nothing installed. Worth running whenever the kernels change.
**Where a regroup's time actually goes**, on that library, because the answer moved twice while it
was being looked at: