Latest Results
Add per-variant CPU feature gating to bit_transpose benchmarks
Each bit_transpose benchmark now declares, inline, which CPU feature
sets / architectures it should be measured under in CI, via a small set
of macros driven by the compile-time BENCH_VARIANT environment variable:
- variant! prefixes the benchmark name with the active variant so the
architecture-neutral scalar benchmarks (which run on every leg) do not
collide in CodSpeed.
- variant_tag! maps a known variant identifier to its string tag; an
unknown identifier fails to compile, giving typo-safe tags.
- ignore_unless_variant! expands to divan's `ignore` boolean, skipping a
benchmark unless we run locally (BENCH_VARIANT=local, the default) or
the active variant is one of the listed feature sets.
A plain `cargo bench` leaves BENCH_VARIANT at its `local` default (set in
.cargo/config.toml) and runs every benchmark once on the host. CI sets
BENCH_VARIANT per leg:
- the existing bench-codspeed job builds with BENCH_VARIANT=simulation, so
the simulation-tagged scalar/bmi2/vbmi variants run there in simulation
mode on x86_64+avx2;
- a new bench-codspeed-bittranspose job adds walltime legs on real
silicon, one per architecture (x86_64 with +avx2, aarch64 with +neon),
each building only the bit_transpose bench with its own target features.
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>claude/bituntranspose-bench-variants-ArFmf Latest Branches
+14%
-11%
0%
claude/bituntranspose-bench-variants-ArFmf © 2026 CodSpeed Technology