validate-binaries
Validate Binaries
Verify that voxtype binaries don't contain forbidden CPU instructions that would cause crashes on older CPUs.
What This Checks
| Binary | Must NOT have | Must have |
|---|---|---|
| AVX2 | zmm registers, AVX-512 EVEX, GFNI | - |
| Vulkan | zmm registers, AVX-512 EVEX, GFNI | - |
| AVX-512 | - | zmm registers (confirms optimization) |
Forbidden Instructions
zmmregisters - 512-bit AVX-512 registersvpternlog,vpermt2,vpblendm- AVX-512 specific{1to4},{1to8},{1to16}- AVX-512 broadcast syntaxvgf2p8,gf2p8- GFNI instructions (not on Zen 3)
Usage
When asked to validate binaries:
- Determine the version from context or ask
- Find binaries in
releases/${VERSION}/ - Run objdump checks on each binary
- Report pass/fail for each
Validation Commands
# Set version
VERSION=0.4.14
# Check AVX2 binary (should be 0 for all)
echo "=== AVX2 Binary ==="
objdump -d releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-avx2 | grep -c zmm || echo "zmm: 0"
objdump -d releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-avx2 | grep -cE 'vpternlog|vpermt2|vpblendm' || echo "AVX-512 ops: 0"
objdump -d releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-avx2 | grep -cE 'vgf2p8|gf2p8' || echo "GFNI: 0"
# Check Vulkan binary (should be 0 for all)
echo "=== Vulkan Binary ==="
objdump -d releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-vulkan | grep -c zmm || echo "zmm: 0"
objdump -d releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-vulkan | grep -cE 'vgf2p8|gf2p8' || echo "GFNI: 0"
# Check AVX-512 binary (should be > 0)
echo "=== AVX-512 Binary ==="
objdump -d releases/${VERSION}/voxtype-${VERSION}-linux-x86_64-avx512 | grep -c zmm
Interpreting Results
PASS conditions:
- AVX2: All counts are 0
- Vulkan: All counts are 0
- AVX-512: zmm count > 0
FAIL conditions:
- AVX2 or Vulkan has any zmm/GFNI instructions
- AVX-512 has 0 zmm instructions (not optimized)
If validation fails, the Docker build cache is likely stale. Recommend:
docker compose -f docker-compose.build.yml build --no-cache avx2 vulkan
More from peteonrails/voxtype
package-release
Package voxtype for release. Creates deb and rpm packages from binaries. Use when building distribution packages.
22docker-test
Test voxtype in Docker containers. Use for testing builds, verifying packages work on different distros, or isolating test environments.
21regression-test
Run regression tests for voxtype releases. Use before major releases to verify core functionality, CLI commands, and configuration handling.
20update-docs
Update voxtype documentation for releases and features. Use when adding features, fixing bugs, or preparing releases. Covers user manual, troubleshooting, website, release notes, and contributor credits.
20build-release
Build all voxtype binaries for release. Builds Whisper (AVX2, AVX-512, Vulkan) and ONNX (AVX2, AVX-512, CUDA) binaries using Docker. Use when preparing a new release.
18aur-publish
Publish voxtype to AUR. Updates PKGBUILD, generates checksums, and pushes to AUR. Use after a GitHub release is published.
18