Core: Solve whole TRSM diagonal blocks with the shared packet kernel

This makes the blocked left triangular solve pass each whole diagonal block to the shared packet TRSM kernel from !3119 (merged), and sizes that kernel's right-hand-side tile from the register file. Across the 276 shapes of benchmarks/Core/bench_trsm_packet.cpp the median change is +17.5% on Apple M4 (NEON) and +0.6% on AVX2, with AVX2 gains of +5% to +11% at n = 192–256; on neither machine is any shape more than 3% slower in both a default and a 64-byte-aligned build.

Why

On AVX2 the trailing gebp updates already run at the GEMM rate. The loss was on the diagonal: its blocks carry k_c/n of the flops (30% for double at n = 256, k_c = 88), and they were solved as max(mr, nr)-row panels (12 for double, 24 for float), each followed by a gebp update of that depth. At n = 256 the packet kernel ran at 37% (double) and 54% (float) of the gebp rate on such panels, and the depth-12/24 updates at 80% and 89% (rdtsc-instrumented copy of the solver, i7-13700HX).

Changes

  1. Whole diagonal blocks. When the packet kernel is enabled and the right-hand side is at least two packets wide, each k_c \times k_c diagonal block is solved in one kernel call, split evenly when k_c exceeds the kernel's 128-row workspace. Column chunks are sized so a chunk of k_c rows stays in L2 between the solve and the pack (k_c \cdot \text{cols} \cdot \texttt{sizeof(Scalar)} \le L_2/2) and are packet-aligned. Narrower right-hand sides keep the old panels, including the compile-time width bound GCC uses to shorten the scalar kernel's loops.
  2. Register-budget tile. Accumulators take half the register file: RhsPackets = min((R - 2) / 5, R / 8), i.e. 1, 2, 4 packets for R = 8, 16, 32 registers. 32-register targets (NEON, SVE, RVV, LSX, AltiVec, ZVector, MSA, HVX; AVX-512 only with EIGEN_USE_AVX512_TRSM_KERNELS=0) go from 2 to 4 packets, with a 2-packet pass for the columns left over; SSE and AVX2 keep 2. A single-packet tile solves 8 rows per step where the registers allow, as a pass ahead of the 4-row loop, so on 16-register targets 2-packet tiles compile to the same instructions as before (AVX2 double solve<2>: 0 of 823 lines differ in a disassembly diff with only addresses stripped). On 32-register targets 2-packet tiles also solve 8 rows per step.
  3. Row-major tails. For a row-major triangle, the last cols % PacketSize columns are solved as one zero-padded packet in a stack copy (out of line) instead of one scalar dot product per coefficient: right-side row-major ×17 shapes (n ≤ 128) run 45–113% faster, n = 512 3–12%. A column-major triangle keeps the scalar tail, a contiguous axpy that compilers vectorize; padding measured 10–17% slower there on AVX2 for a single leftover column.

Unchanged: AVX-512 builds using the specialized TRSM kernels (the default), complex and custom scalars, and the right-side solver for column-major operands.

Performance

x = b; a.triangularView<Mode>().solveInPlace<Side>(x) from benchmarks/Core/bench_trsm_packet.cpp (dynamic Matrix<float|double>; name = triangle/operand layout and side, n = triangle order, nrhs = right-hand sides), CPU time. Each arm ran twice, alternating before/after, each run 3 repetitions of ≥ 0.1 s; the tables give the mean of the two run medians and the change in throughput, t_\text{before}/t_\text{after} - 1.

  • AVX2: 13th Gen Intel(R) Core(TM) i7-13700HX under WSL2, GCC 13.3.0, -O3 -DNDEBUG -mavx2 -mfma, pinned to one core; the 1-min load average was sampled every 5 s and stayed ≤ 1.3 (the benchmark itself is 1.0).
  • NEON: Apple M4 (Mac mini, macOS 27.0), Apple clang 21.0.0, -O3 -DNDEBUG, not pinned, with an idle CI virtual machine running.
  • Google Benchmark 1.9.5 on both. The aligned builds add -falign-functions=64 -falign-loops=64 to both arms.
Shape name/n/nrhs AVX2 before (µs) AVX2 after (µs) AVX2 change AVX2 change, aligned build M4 before (µs) M4 after (µs) M4 change
float/16/16 0.073 0.072 +0.9% -0.6% 0.108 0.095 +13.4%
float/64/64 2.35 2.35 +0.1% -0.9% 4.07 3.16 +28.8%
float/128/128 18.1 17.6 +2.7% +0.4% 30.0 22.1 +35.6%
float/192/192 63.6 60.0 +5.9% +6.2% 89.8 75.1 +19.6%
float/256/256 142.0 135.1 +5.1% +4.4% 214.3 169.2 +26.7%
float/512/512 1,087 1,061 +2.5% +0.3% 1,381 1,232 +12.1%
float/1024/1024 8,207 8,184 +0.3% +0.8% 10,632 9,356 +13.6%
float/2048/2048 64,496 64,213 +0.4% +0.2% 81,128 73,414 +10.5%
double/16/16 0.122 0.120 +1.0% -1.3% 0.211 0.178 +19.0%
double/64/64 4.92 5.09 -3.4% -0.8% 8.11 6.29 +28.9%
double/128/128 35.0 36.0 -2.7% +1.0% 61.9 44.6 +38.8%
double/192/192 132.6 119.7 +10.8% +10.2% 179.0 149.0 +20.1%
double/256/256 314.5 287.3 +9.4% +7.7% 424.0 338.1 +25.4%
double/512/512 2,326 2,241 +3.8% +2.8% 2,848 2,496 +14.1%
double/1024/1024 17,020 17,097 -0.4% +0.1% 21,362 18,928 +12.9%
double/2048/2048 132,494 129,681 +2.2% +2.1% 171,010 147,596 +15.9%
float/1024/128 1,067 1,056 +1.1% +0.4% 1,369 1,219 +12.3%
double/1024/128 2,191 2,192 -0.1% +1.6% 2,775 2,461 +12.8%
float_RightRow/128/17 6.71 3.59 +86.8% +95.3% 8.45 3.97 +112.9%
double_RightRow/512/64 311.9 292.2 +6.7% +6.0% 388.4 328.3 +18.3%
Machine, build Median change 5th percentile Best Shapes > 3% slower under every pairing
i7-13700HX AVX2, default +0.6% -3.2% +101.1% 4
i7-13700HX AVX2, 64-byte aligned +0.8% -2.5% +101.3% 2
Apple M4 NEON, default +17.5% -0.4% +112.9% 0
Apple M4 NEON, 64-byte aligned +17.9% -0.5% +116.9% 0

"Slower under every pairing" means the new code's faster run is still > 3% slower than master's slower run. On AVX2 the flagged shapes differ between the two builds, and each is within 3% in the other one. double_Right/64/4096 runs the right-side solver, which this MR does not change, so code placement alone moved it by 5.5%:

Machine, build Shape Change Same shape, other build
AVX2 default double_Right/64/4096 -5.5% +1.2%
AVX2 default double/128/8 -4.9% -0.6%
AVX2 default double/64/8 -4.8% -0.9%
AVX2 default float/64/4 -3.9% +1.5%
AVX2 aligned float_RowTri/64/4 -6.0% -2.8%
AVX2 aligned float_RowTri/128/4 -4.6% -0.3%

Validation

  • trsm_packet, trsm_packet_cancellation, trsm_packet_cancellation_fastmath, product_trsolve, triangular, triangular_in_place (46 executables), EIGEN_REPEAT=3 EIGEN_SEED=42, all passing in four configurations: GCC 13.3 AVX2+FMA (C++14); Apple clang 21 NEON; GCC 13.3 AVX-512F/DQ/VL/BW on AMD RYZEN AI MAX+ 395 w/ Radeon 8060S (WSL2), with the default AVX-512 TRSM kernels and with EIGEN_USE_AVX512_TRSM_KERNELS=0 (4-packet tiles on x86).
  • The existing tests reach each new path. On NEON, each mutation below makes trsm_packet_1 and trsm_packet_2 fail; the first two also fail product_trsolve_18:
    • skipping the pack after a whole-block panel;
    • solving one packet in the 2-packet leftover pass (NEON);
    • dropping the padded tail's copy-back.
  • C++14 builds with GCC 13.3 and clang 18; clang-format-17, scripts/check_style.py and scripts/clang_tidy_hook.py on the diff are clean.

Not done

  • Not measured on AMD Zen 5 or against a vendor BLAS. The AVX2 comparison page (libeigen.gitlab.io, Zen 5) measured master 15f227178, before !3119 (merged).
  • The right-side solver for column-major operands is untouched.
Appendix A: all 276 shapes, AVX2 (i7-13700HX)
Shape Before (µs) After (µs) Change Max run-to-run spread Change, aligned build
float/8/8 0.025 0.023 +7.0% 2.2% +4.6%
float/12/12 0.153 0.157 -2.5% 1.2% +0.7%
float/16/16 0.073 0.072 +0.9% 4.2% -0.6%
float/24/24 0.188 0.182 +3.5% 0.5% +3.3%
float/31/31 0.949 0.973 -2.4% 0.9% -2.0%
float/32/32 0.358 0.360 -0.7% 1.4% -0.1%
float/33/33 0.565 0.563 +0.3% 0.8% +0.3%
float/48/48 1.07 1.07 -0.1% 1.1% -1.3%
float/63/63 3.98 3.86 +3.1% 3.4% -0.1%
float/64/64 2.35 2.35 +0.1% 0.6% -0.9%
float/65/65 2.92 2.93 -0.5% 1.5% -1.6%
float/95/95 11.0 10.7 +2.7% 1.2% +3.6%
float/96/96 7.88 7.82 +0.8% 0.2% +0.0%
float/97/97 9.22 9.24 -0.1% 0.7% +0.8%
float/100/100 10.4 10.3 +1.2% 1.0% +0.5%
float/127/127 23.8 23.2 +2.7% 1.0% +0.3%
float/128/128 18.1 17.6 +2.7% 2.5% +0.4%
float/129/129 22.7 21.2 +7.0% 4.3% +5.8%
float/192/192 63.6 60.0 +5.9% 0.2% +6.2%
float/256/256 142.0 135.1 +5.1% 0.4% +4.4%
float/257/257 151.4 145.7 +4.0% 1.5% +4.5%
float/512/512 1,087 1,061 +2.5% 0.5% +0.3%
float/1024/1024 8,207 8,184 +0.3% 1.3% +0.8%
float/2048/2048 64,496 64,213 +0.4% 0.8% +0.2%
float/4096/4096 512,795 499,709 +2.6% 0.9% -0.0%
float/64/1 0.425 0.416 +2.0% 3.7% +0.2%
float/64/4 0.777 0.808 -3.9% 0.8% +1.5%
float/64/8 0.406 0.332 +22.3% 0.8% +21.7%
float/64/16 0.603 0.605 -0.3% 1.3% -0.9%
float/64/17 0.938 0.941 -0.3% 0.7% -0.3%
float/64/4096 183.6 181.3 +1.3% 4.1% -0.4%
float/128/4 2.04 2.07 -1.9% 0.2% -0.1%
float/128/8 1.64 1.23 +33.4% 3.9% +33.0%
float/128/17 3.14 3.05 +2.8% 1.3% -0.3%
float/1024/8 119.5 119.6 -0.2% 7.0% -1.9%
float/1024/32 311.9 298.8 +4.4% 4.2% +4.6%
float/1024/128 1,067 1,056 +1.1% 3.3% +0.4%
float/4096/32 5,671 5,727 -1.0% 8.2% +1.5%
double/8/8 0.035 0.035 +0.0% 2.7% -0.6%
double/12/12 0.074 0.075 -1.2% 4.4% -0.4%
double/16/16 0.122 0.120 +1.0% 1.9% -1.3%
double/24/24 0.312 0.312 +0.0% 1.6% -0.7%
double/31/31 0.946 1.04 -8.6% 16.1% -0.1%
double/32/32 0.669 0.680 -1.6% 1.5% -0.1%
double/33/33 0.925 0.933 -0.9% 0.8% +0.1%
double/48/48 2.07 2.13 -2.9% 0.9% -1.0%
double/63/63 6.06 6.01 +0.8% 4.8% +1.8%
double/64/64 4.92 5.09 -3.4% 1.1% -0.8%
double/65/65 5.86 5.94 -1.3% 2.7% -1.0%
double/95/95 19.6 19.0 +3.2% 1.1% -1.2%
double/96/96 15.7 16.0 -1.9% 0.7% -1.3%
double/97/97 18.6 18.9 -1.9% 2.8% +1.5%
double/100/100 18.4 18.5 -0.6% 2.5% +0.9%
double/127/127 43.0 42.5 +1.3% 3.2% +1.7%
double/128/128 35.0 36.0 -2.7% 1.3% +1.0%
double/129/129 46.9 43.1 +8.8% 3.0% +6.7%
double/192/192 132.6 119.7 +10.8% 1.9% +10.2%
double/256/256 314.5 287.3 +9.4% 1.3% +7.7%
double/257/257 330.5 305.5 +8.2% 2.4% +6.0%
double/512/512 2,326 2,241 +3.8% 3.4% +2.8%
double/1024/1024 17,020 17,097 -0.4% 3.2% +0.1%
double/2048/2048 132,494 129,681 +2.2% 1.0% +2.1%
double/4096/4096 1,021,231 1,013,150 +0.8% 0.8% +0.3%
double/64/1 0.567 0.575 -1.5% 0.9% -1.5%
double/64/4 0.411 0.329 +25.0% 0.6% +24.7%
double/64/8 0.569 0.598 -4.8% 2.8% -0.9%
double/64/16 1.14 1.17 -2.3% 1.1% -0.9%
double/64/17 1.57 1.57 -0.3% 0.9% -0.0%
double/64/4096 372.2 379.1 -1.8% 0.7% -0.2%
double/128/4 1.71 1.35 +26.8% 1.2% +28.3%
double/128/8 2.12 2.23 -4.9% 0.4% -0.6%
double/128/17 5.83 5.94 -1.8% 2.4% +0.3%
double/1024/8 253.5 262.1 -3.3% 9.3% +4.5%
double/1024/32 623.4 631.2 -1.2% 3.0% +0.4%
double/1024/128 2,191 2,192 -0.1% 1.1% +1.6%
double/4096/32 11,831 11,817 +0.1% 0.6% -0.1%
float_RowTri/8/8 0.027 0.025 +7.9% 0.5% +5.7%
float_RowTri/12/12 0.137 0.104 +32.1% 3.3% +26.9%
float_RowTri/16/16 0.082 0.084 -2.6% 8.2% +0.2%
float_RowTri/24/24 0.205 0.200 +2.1% 2.9% +1.1%
float_RowTri/31/31 1.10 0.545 +101.1% 2.4% +98.1%
float_RowTri/32/32 0.386 0.389 -0.7% 2.5% +0.7%
float_RowTri/33/33 0.590 0.587 +0.6% 4.3% +4.2%
float_RowTri/48/48 1.13 1.13 -0.5% 1.0% +0.8%
float_RowTri/63/63 5.45 2.96 +84.3% 0.4% +83.1%
float_RowTri/64/64 2.47 2.49 -0.8% 1.7% -0.6%
float_RowTri/65/65 3.26 3.16 +3.2% 2.5% +2.4%
float_RowTri/95/95 15.8 9.76 +62.2% 1.0% +61.1%
float_RowTri/96/96 8.44 8.34 +1.1% 1.1% +1.0%
float_RowTri/97/97 10.4 10.1 +3.0% 1.0% +3.6%
float_RowTri/100/100 13.6 10.2 +33.0% 2.5% +29.8%
float_RowTri/127/127 33.5 22.0 +52.1% 1.1% +50.9%
float_RowTri/128/128 18.9 19.0 -0.5% 0.9% +1.4%
float_RowTri/129/129 23.2 22.3 +4.1% 4.2% +3.4%
float_RowTri/192/192 65.7 62.1 +5.9% 0.5% +6.8%
float_RowTri/256/256 143.4 140.6 +2.0% 2.1% +1.1%
float_RowTri/257/257 154.4 149.6 +3.2% 1.4% +3.0%
float_RowTri/512/512 1,113 1,081 +3.0% 2.4% +3.7%
float_RowTri/1024/1024 8,322 8,282 +0.5% 1.6% -1.1%
float_RowTri/2048/2048 64,792 64,415 +0.6% 0.9% +1.0%
float_RowTri/4096/4096 510,065 499,823 +2.0% 1.0% +1.8%
float_RowTri/64/1 0.436 0.442 -1.3% 0.6% -2.3%
float_RowTri/64/4 0.883 0.908 -2.8% 0.6% -6.0%
float_RowTri/64/8 0.417 0.337 +23.9% 1.2% +20.0%
float_RowTri/64/16 0.632 0.642 -1.6% 0.6% +1.0%
float_RowTri/64/17 1.10 0.981 +11.9% 1.1% +12.7%
float_RowTri/64/4096 190.3 189.1 +0.6% 2.7% +1.1%
float_RowTri/128/4 2.36 2.37 -0.3% 2.0% -4.6%
float_RowTri/128/8 1.65 1.20 +36.8% 0.6% +32.6%
float_RowTri/128/17 4.25 3.53 +20.3% 1.2% +18.1%
float_RowTri/1024/8 162.2 159.2 +1.8% 16.5% -2.5%
float_RowTri/1024/32 348.5 335.1 +4.0% 7.1% +0.0%
float_RowTri/1024/128 1,124 1,103 +1.9% 3.3% +3.0%
float_RowTri/4096/32 6,618 6,663 -0.7% 2.2% +1.3%
double_RowTri/8/8 0.038 0.042 -10.4% 23.2% -0.5%
double_RowTri/12/12 0.078 0.083 -5.6% 11.7% -0.5%
double_RowTri/16/16 0.127 0.134 -5.3% 13.8% -0.7%
double_RowTri/24/24 0.329 0.338 -2.8% 5.8% -0.4%
double_RowTri/31/31 1.01 0.830 +22.1% 3.6% +27.2%
double_RowTri/32/32 0.705 0.717 -1.8% 4.4% +0.0%
double_RowTri/33/33 0.972 0.933 +4.2% 6.2% +5.5%
double_RowTri/48/48 2.27 2.32 -2.5% 3.2% -0.6%
double_RowTri/63/63 6.83 5.80 +17.7% 2.0% +15.2%
double_RowTri/64/64 5.40 5.42 -0.4% 1.2% +0.4%
double_RowTri/65/65 6.55 6.29 +4.2% 3.3% +3.3%
double_RowTri/95/95 21.8 18.9 +15.3% 5.2% +7.5%
double_RowTri/96/96 17.0 17.3 -1.4% 0.1% -1.4%
double_RowTri/97/97 19.9 19.7 +1.1% 5.5% +1.2%
double_RowTri/100/100 20.0 19.7 +1.5% 4.7% +0.5%
double_RowTri/127/127 47.5 43.0 +10.5% 1.0% +10.4%
double_RowTri/128/128 37.9 38.3 -1.0% 1.7% -0.4%
double_RowTri/129/129 48.6 45.0 +8.0% 0.0% +5.1%
double_RowTri/192/192 131.8 124.3 +6.0% 2.1% +8.6%
double_RowTri/256/256 316.3 294.7 +7.3% 2.9% +5.6%
double_RowTri/257/257 339.7 317.1 +7.1% 3.6% +7.0%
double_RowTri/512/512 2,295 2,269 +1.1% 3.6% +1.8%
double_RowTri/1024/1024 17,444 17,312 +0.8% 3.7% +2.2%
double_RowTri/2048/2048 132,502 130,260 +1.7% 2.2% +0.4%
double_RowTri/4096/4096 1,024,703 1,027,362 -0.3% 2.7% +0.7%
double_RowTri/64/1 0.645 0.660 -2.2% 2.5% -1.1%
double_RowTri/64/4 0.409 0.338 +21.1% 1.1% +20.4%
double_RowTri/64/8 0.618 0.622 -0.7% 2.5% -0.2%
double_RowTri/64/16 1.25 1.24 +0.3% 1.9% -0.6%
double_RowTri/64/17 1.76 1.61 +9.5% 1.1% +11.4%
double_RowTri/64/4096 395.6 403.6 -2.0% 2.4% +0.3%
double_RowTri/128/4 1.67 1.26 +32.3% 1.0% +33.8%
double_RowTri/128/8 2.32 2.34 -0.8% 1.6% -0.4%
double_RowTri/128/17 6.67 6.00 +11.1% 1.4% +13.0%
double_RowTri/1024/8 289.3 298.9 -3.2% 10.3% +10.7%
double_RowTri/1024/32 678.3 686.0 -1.1% 2.4% -2.3%
double_RowTri/1024/128 2,254 2,248 +0.3% 0.6% +2.5%
double_RowTri/4096/32 13,677 13,923 -1.8% 6.1% -3.9%
float_Right/8/8 0.077 0.076 +1.3% 0.8% +0.7%
float_Right/12/12 0.164 0.162 +1.2% 0.7% +0.4%
float_Right/16/16 0.217 0.218 -0.5% 0.7% -0.9%
float_Right/24/24 0.448 0.447 +0.2% 0.6% +0.3%
float_Right/31/31 1.14 1.11 +3.4% 3.3% -4.1%
float_Right/32/32 0.702 0.700 +0.4% 4.2% -8.6%
float_Right/33/33 0.893 0.868 +2.8% 9.8% -7.0%
float_Right/48/48 1.47 1.52 -3.0% 6.1% +0.7%
float_Right/63/63 5.11 5.09 +0.4% 1.0% -0.2%
float_Right/64/64 3.99 3.96 +0.9% 1.0% -2.0%
float_Right/65/65 4.65 4.56 +2.0% 1.9% -3.2%
float_Right/95/95 11.4 11.3 +0.6% 4.7% -0.0%
float_Right/96/96 9.34 9.29 +0.6% 3.9% +2.9%
float_Right/97/97 10.7 10.7 +0.2% 2.1% +2.9%
float_Right/100/100 11.7 11.7 +0.4% 3.8% -0.6%
float_Right/127/127 22.9 23.2 -0.9% 1.4% -0.0%
float_Right/128/128 20.2 20.3 -0.6% 1.6% +2.2%
float_Right/129/129 22.5 22.3 +0.7% 3.8% -0.4%
float_Right/192/192 61.5 60.8 +1.2% 1.5% +0.8%
float_Right/256/256 139.3 138.2 +0.8% 2.2% +1.2%
float_Right/257/257 146.7 145.7 +0.7% 1.1% +0.1%
float_Right/512/512 1,062 1,054 +0.7% 1.3% -0.3%
float_Right/1024/1024 8,004 7,923 +1.0% 0.5% -0.2%
float_Right/2048/2048 62,769 62,425 +0.6% 2.0% +1.3%
float_Right/4096/4096 498,398 496,644 +0.4% 1.3% +0.4%
float_Right/64/1 0.879 0.887 -0.9% 1.6% +0.3%
float_Right/64/4 1.29 1.33 -2.6% 1.9% +1.0%
float_Right/64/8 1.31 1.32 -0.8% 3.2% +2.4%
float_Right/64/16 1.49 1.56 -4.6% 8.8% +0.9%
float_Right/64/17 1.63 1.72 -5.3% 8.7% +1.2%
float_Right/64/4096 226.7 224.5 +1.0% 1.8% +0.9%
float_Right/128/4 3.49 3.49 -0.1% 2.3% -0.3%
float_Right/128/8 3.67 3.61 +1.7% 3.6% +1.0%
float_Right/128/17 4.93 4.83 +2.0% 2.7% +1.5%
float_Right/1024/8 158.4 162.2 -2.4% 0.3% -4.8%
float_Right/1024/32 327.8 330.6 -0.9% 4.6% +1.0%
float_Right/1024/128 1,064 1,065 -0.1% 3.7% -0.5%
float_Right/4096/32 7,157 7,137 +0.3% 4.6% +3.9%
double_Right/8/8 0.081 0.079 +1.7% 2.2% +0.9%
double_Right/12/12 0.151 0.145 +3.7% 1.4% -0.3%
double_Right/16/16 0.273 0.270 +1.1% 4.1% +0.1%
double_Right/24/24 0.501 0.486 +3.3% 6.5% -5.0%
double_Right/31/31 1.17 1.21 -3.2% 4.8% +1.1%
double_Right/32/32 0.983 0.972 +1.2% 4.8% +3.1%
double_Right/33/33 1.18 1.18 +0.5% 7.8% +1.6%
double_Right/48/48 2.95 3.01 -1.9% 4.3% -3.6%
double_Right/63/63 6.70 6.80 -1.5% 3.6% -1.3%
double_Right/64/64 6.43 6.29 +2.2% 0.5% +2.0%
double_Right/65/65 6.91 6.75 +2.4% 2.4% -0.7%
double_Right/95/95 20.1 19.8 +1.6% 1.9% +0.4%
double_Right/96/96 18.5 18.6 -0.3% 5.4% +2.8%
double_Right/97/97 19.6 19.8 -1.2% 1.9% +0.5%
double_Right/100/100 20.9 20.3 +2.9% 4.3% -0.1%
double_Right/127/127 42.4 43.7 -3.1% 4.2% -0.9%
double_Right/128/128 40.2 41.0 -1.7% 3.2% +2.4%
double_Right/129/129 42.5 42.5 -0.1% 2.4% -0.7%
double_Right/192/192 126.8 123.9 +2.4% 6.9% +1.0%
double_Right/256/256 288.5 286.1 +0.8% 1.0% -0.6%
double_Right/257/257 298.9 306.7 -2.5% 3.9% -0.6%
double_Right/512/512 2,169 2,128 +1.9% 1.7% +1.5%
double_Right/1024/1024 16,223 16,141 +0.5% 1.5% +1.5%
double_Right/2048/2048 127,588 128,558 -0.8% 2.1% +0.0%
double_Right/4096/4096 998,629 1,011,635 -1.3% 0.6% +0.1%
double_Right/64/1 0.870 0.863 +0.8% 0.9% +0.0%
double_Right/64/4 1.15 1.17 -1.2% 1.9% -1.1%
double_Right/64/8 1.42 1.40 +1.5% 1.2% -2.7%
double_Right/64/16 2.61 2.60 +0.5% 2.0% +0.1%
double_Right/64/17 2.82 2.79 +1.3% 1.8% +0.5%
double_Right/64/4096 421.7 446.3 -5.5% 3.3% +1.2%
double_Right/128/4 4.03 4.08 -1.3% 0.5% -4.8%
double_Right/128/8 5.28 5.15 +2.4% 8.2% +0.5%
double_Right/128/17 7.70 7.94 -3.1% 4.4% +1.8%
double_Right/1024/8 329.9 333.5 -1.1% 3.1% -2.7%
double_Right/1024/32 688.4 694.6 -0.9% 3.7% +5.5%
double_Right/1024/128 2,153 2,161 -0.4% 2.0% -1.3%
double_Right/4096/32 13,239 13,657 -3.1% 1.7% +1.3%
float_Upper/24/17 0.212 0.212 -0.2% 1.5% +1.6%
float_Upper/64/17 0.875 0.872 +0.3% 0.4% +0.1%
float_Upper/128/17 2.94 2.92 +0.9% 0.8% +1.9%
float_Upper/512/17 50.5 48.7 +3.7% 2.8% +4.1%
float_Upper/24/64 0.461 0.464 -0.7% 1.0% +1.3%
float_Upper/64/64 2.38 2.38 +0.4% 1.7% +1.4%
float_Upper/128/64 8.86 9.13 -3.0% 2.0% -0.1%
float_Upper/512/64 143.3 138.1 +3.7% 2.2% +5.6%
float_Upper/24/512 4.34 4.38 -0.9% 4.4% -1.4%
float_Upper/64/512 20.3 20.3 +0.1% 0.8% -0.1%
float_Upper/128/512 71.6 72.6 -1.3% 3.2% +0.4%
float_Upper/512/512 1,079 1,049 +2.9% 1.4% +4.0%
double_Upper/24/17 0.316 0.325 -2.6% 1.7% -0.2%
double_Upper/64/17 1.59 1.58 +0.6% 2.1% +0.5%
double_Upper/128/17 5.49 5.59 -1.8% 1.5% -0.3%
double_Upper/512/17 105.5 102.8 +2.7% 8.5% +4.3%
double_Upper/24/64 0.855 0.859 -0.5% 2.0% +0.5%
double_Upper/64/64 5.06 5.03 +0.6% 1.9% +1.0%
double_Upper/128/64 17.8 17.8 -0.2% 2.2% +0.8%
double_Upper/512/64 297.1 284.8 +4.3% 1.7% +4.5%
double_Upper/24/512 7.99 8.12 -1.6% 2.4% +1.1%
double_Upper/64/512 40.4 40.2 +0.4% 1.7% -0.2%
double_Upper/128/512 143.9 143.8 +0.0% 1.8% +2.5%
double_Upper/512/512 2,304 2,285 +0.9% 2.1% +2.5%
float_RightRow/24/17 0.400 0.225 +78.2% 3.3% +80.5%
float_RightRow/64/17 1.90 0.969 +96.1% 0.7% +101.3%
float_RightRow/128/17 6.71 3.59 +86.8% 8.0% +95.3%
float_RightRow/512/17 57.5 52.3 +9.9% 2.6% +8.3%
float_RightRow/24/64 0.498 0.501 -0.7% 0.8% +1.7%
float_RightRow/64/64 2.47 2.43 +1.8% 0.8% +1.2%
float_RightRow/128/64 9.34 9.46 -1.3% 9.9% +1.4%
float_RightRow/512/64 146.6 140.0 +4.7% 1.3% +5.7%
float_RightRow/24/512 4.62 4.69 -1.5% 1.8% -2.1%
float_RightRow/64/512 20.8 20.6 +1.4% 0.7% -0.0%
float_RightRow/128/512 74.6 75.8 -1.6% 13.5% +1.1%
float_RightRow/512/512 1,096 1,045 +4.9% 1.1% +3.5%
double_RightRow/24/17 0.512 0.323 +58.3% 3.2% +60.2%
double_RightRow/64/17 2.51 1.63 +54.5% 1.2% +58.5%
double_RightRow/128/17 8.93 6.16 +45.1% 5.0% +50.5%
double_RightRow/512/17 109.6 106.6 +2.8% 2.7% +4.3%
double_RightRow/24/64 0.900 0.904 -0.5% 2.2% -1.0%
double_RightRow/64/64 5.32 5.24 +1.6% 2.4% +1.3%
double_RightRow/128/64 19.5 19.8 -1.7% 6.1% +0.8%
double_RightRow/512/64 311.9 292.2 +6.7% 1.8% +6.0%
double_RightRow/24/512 8.47 8.50 -0.3% 1.1% +0.9%
double_RightRow/64/512 42.2 42.6 -0.9% 2.7% +0.8%
double_RightRow/128/512 156.2 160.0 -2.4% 4.7% +2.2%
double_RightRow/512/512 2,317 2,287 +1.3% 1.3% +3.6%
Appendix B: all 276 shapes, NEON (Apple M4)
Shape Before (µs) After (µs) Change Max run-to-run spread Change, aligned build
float/8/8 0.030 0.029 +5.5% 0.9% +6.2%
float/12/12 0.068 0.066 +3.0% 1.7% +4.6%
float/16/16 0.108 0.095 +13.4% 1.2% +14.5%
float/24/24 0.304 0.252 +20.4% 1.8% +23.3%
float/31/31 0.823 0.733 +12.3% 3.4% +9.5%
float/32/32 0.613 0.507 +20.7% 3.5% +23.5%
float/33/33 0.820 0.720 +13.9% 1.8% +14.9%
float/48/48 1.86 1.46 +27.1% 4.1% +30.2%
float/63/63 4.90 3.99 +23.0% 3.5% +22.8%
float/64/64 4.07 3.16 +28.8% 2.6% +31.3%
float/65/65 4.85 3.83 +26.8% 2.3% +29.0%
float/95/95 14.9 11.5 +29.6% 4.0% +31.1%
float/96/96 12.8 9.68 +32.6% 2.8% +33.2%
float/97/97 14.5 11.0 +31.6% 3.7% +32.0%
float/100/100 14.8 11.1 +33.0% 3.6% +33.1%
float/127/127 34.2 25.5 +33.9% 2.4% +34.6%
float/128/128 30.0 22.1 +35.6% 3.6% +37.0%
float/129/129 31.7 27.0 +17.5% 0.9% +18.4%
float/192/192 89.8 75.1 +19.6% 2.5% +20.7%
float/256/256 214.3 169.2 +26.7% 2.4% +28.0%
float/257/257 220.6 180.9 +22.0% 2.4% +23.3%
float/512/512 1,381 1,232 +12.1% 2.1% +12.7%
float/1024/1024 10,632 9,356 +13.6% 0.9% +14.1%
float/2048/2048 81,128 73,414 +10.5% 2.1% +11.5%
float/4096/4096 625,321 574,468 +8.9% 1.7% +9.7%
float/64/1 0.515 0.523 -1.5% 0.7% -0.7%
float/64/4 0.370 0.292 +26.9% 2.7% +27.1%
float/64/8 0.528 0.443 +19.3% 3.0% +19.9%
float/64/16 1.05 0.808 +30.2% 2.2% +30.5%
float/64/17 1.34 1.12 +19.9% 2.2% +19.8%
float/64/4096 260.5 207.6 +25.5% 2.9% +25.7%
float/128/4 1.50 1.03 +45.3% 4.2% +46.0%
float/128/8 1.88 1.44 +30.4% 2.1% +34.2%
float/128/17 4.47 3.47 +28.8% 2.1% +30.1%
float/1024/8 133.8 130.9 +2.2% 2.5% +2.4%
float/1024/32 381.1 346.4 +10.0% 2.3% +12.0%
float/1024/128 1,369 1,219 +12.3% 2.0% +13.4%
float/4096/32 6,580 6,295 +4.5% 2.8% +5.7%
double/8/8 0.047 0.039 +19.4% 0.3% +19.6%
double/12/12 0.105 0.091 +15.2% 0.1% +13.7%
double/16/16 0.211 0.178 +19.0% 2.5% +16.2%
double/24/24 0.614 0.478 +28.5% 2.2% +30.2%
double/31/31 1.39 1.18 +18.4% 1.7% +19.2%
double/32/32 1.21 0.997 +21.0% 2.4% +23.6%
double/33/33 1.59 1.27 +25.0% 1.6% +21.9%
double/48/48 3.60 2.89 +24.5% 2.4% +31.0%
double/63/63 9.08 7.13 +27.3% 1.3% +29.7%
double/64/64 8.11 6.29 +28.9% 2.1% +32.7%
double/65/65 9.35 7.29 +28.3% 1.8% +31.5%
double/95/95 29.1 22.2 +31.1% 2.6% +31.9%
double/96/96 26.1 19.9 +30.9% 1.3% +30.8%
double/97/97 29.1 22.2 +31.0% 1.3% +31.2%
double/100/100 29.2 22.6 +29.5% 2.0% +31.0%
double/127/127 66.7 48.6 +37.2% 3.1% +37.3%
double/128/128 61.9 44.6 +38.8% 1.2% +38.0%
double/129/129 61.7 55.2 +11.8% 1.2% +11.2%
double/192/192 179.0 149.0 +20.1% 0.4% +19.4%
double/256/256 424.0 338.1 +25.4% 0.4% +25.4%
double/257/257 436.9 357.5 +22.2% 1.2% +22.1%
double/512/512 2,848 2,496 +14.1% 0.3% +14.4%
double/1024/1024 21,362 18,928 +12.9% 0.5% +13.0%
double/2048/2048 171,010 147,596 +15.9% 0.8% +16.3%
double/4096/4096 1,260,041 1,150,375 +9.5% 0.4% +9.6%
double/64/1 0.687 0.708 -3.0% 1.2% -0.7%
double/64/4 0.532 0.443 +20.1% 2.6% +21.7%
double/64/8 1.05 0.806 +30.1% 0.5% +32.5%
double/64/16 2.05 1.60 +28.1% 1.1% +32.0%
double/64/17 2.43 1.97 +23.4% 2.4% +25.7%
double/64/4096 519.9 414.1 +25.5% 0.7% +27.4%
double/128/4 1.93 1.46 +32.0% 1.8% +32.7%
double/128/8 3.85 2.75 +40.0% 1.3% +40.7%
double/128/17 8.87 6.67 +33.0% 1.2% +31.1%
double/1024/8 281.9 266.6 +5.7% 2.6% +4.5%
double/1024/32 784.4 708.2 +10.8% 0.7% +11.1%
double/1024/128 2,775 2,461 +12.8% 0.3% +12.2%
double/4096/32 12,672 12,065 +5.0% 0.4% +5.8%
float_RowTri/8/8 0.032 0.030 +5.0% 0.1% +3.2%
float_RowTri/12/12 0.068 0.066 +2.8% 0.1% +2.3%
float_RowTri/16/16 0.116 0.097 +19.0% 0.8% +20.9%
float_RowTri/24/24 0.311 0.258 +20.6% 0.3% +21.1%
float_RowTri/31/31 0.833 0.708 +17.5% 1.1% +18.4%
float_RowTri/32/32 0.625 0.505 +23.9% 1.6% +24.2%
float_RowTri/33/33 0.867 0.708 +22.6% 2.7% +22.3%
float_RowTri/48/48 1.91 1.46 +30.2% 1.2% +27.6%
float_RowTri/63/63 5.28 3.88 +35.9% 1.6% +35.2%
float_RowTri/64/64 4.13 3.21 +28.7% 1.6% +27.1%
float_RowTri/65/65 5.08 3.89 +30.7% 1.5% +31.1%
float_RowTri/95/95 16.4 11.4 +44.2% 1.6% +44.5%
float_RowTri/96/96 12.9 9.78 +32.1% 0.2% +31.2%
float_RowTri/97/97 15.0 11.3 +33.5% 1.8% +33.7%
float_RowTri/100/100 15.0 11.2 +33.9% 0.4% +32.1%
float_RowTri/127/127 37.1 25.3 +46.8% 2.0% +47.1%
float_RowTri/128/128 30.9 22.6 +36.9% 0.7% +37.1%
float_RowTri/129/129 32.5 27.2 +19.4% 0.3% +19.4%
float_RowTri/192/192 92.8 76.0 +22.1% 0.4% +22.2%
float_RowTri/256/256 219.2 170.2 +28.8% 1.2% +29.5%
float_RowTri/257/257 226.3 181.9 +24.4% 0.7% +25.3%
float_RowTri/512/512 1,399 1,236 +13.2% 0.5% +13.3%
float_RowTri/1024/1024 10,704 9,327 +14.8% 1.1% +15.3%
float_RowTri/2048/2048 81,685 73,265 +11.5% 0.8% +12.0%
float_RowTri/4096/4096 631,277 572,514 +10.3% 0.6% +10.3%
float_RowTri/64/1 0.596 0.602 -1.0% 0.7% -2.4%
float_RowTri/64/4 0.376 0.317 +18.7% 1.3% +20.6%
float_RowTri/64/8 0.544 0.463 +17.5% 1.2% +12.4%
float_RowTri/64/16 1.07 0.822 +30.6% 0.7% +29.4%
float_RowTri/64/17 1.47 1.16 +26.8% 1.4% +26.3%
float_RowTri/64/4096 265.0 211.2 +25.5% 1.7% +23.5%
float_RowTri/128/4 1.57 1.12 +40.1% 0.6% +37.5%
float_RowTri/128/8 1.91 1.47 +29.7% 1.2% +29.6%
float_RowTri/128/17 5.40 3.92 +37.9% 1.5% +38.3%
float_RowTri/1024/8 134.6 114.0 +18.1% 0.7% +18.5%
float_RowTri/1024/32 381.9 331.0 +15.4% 0.9% +15.6%
float_RowTri/1024/128 1,377 1,201 +14.7% 0.6% +14.9%
float_RowTri/4096/32 6,370 5,926 +7.5% 0.7% +8.1%
double_RowTri/8/8 0.050 0.042 +18.2% 0.2% +20.9%
double_RowTri/12/12 0.115 0.100 +15.1% 0.2% +17.1%
double_RowTri/16/16 0.223 0.182 +22.8% 1.7% +25.9%
double_RowTri/24/24 0.648 0.485 +33.5% 1.9% +34.7%
double_RowTri/31/31 1.48 1.22 +20.6% 2.3% +23.2%
double_RowTri/32/32 1.26 1.01 +24.5% 1.6% +24.6%
double_RowTri/33/33 1.66 1.27 +30.9% 0.3% +24.5%
double_RowTri/48/48 3.79 2.92 +29.9% 1.1% +31.5%
double_RowTri/63/63 9.33 7.21 +29.4% 0.1% +29.3%
double_RowTri/64/64 8.37 6.38 +31.3% 0.5% +31.5%
double_RowTri/65/65 9.56 7.28 +31.3% 3.4% +29.2%
double_RowTri/95/95 29.7 22.3 +33.1% 0.5% +33.1%
double_RowTri/96/96 26.6 20.3 +31.0% 0.6% +31.3%
double_RowTri/97/97 29.7 22.3 +33.3% 0.8% +32.6%
double_RowTri/100/100 29.7 22.4 +32.6% 0.7% +32.6%
double_RowTri/127/127 68.1 49.1 +38.7% 1.1% +38.8%
double_RowTri/128/128 62.8 45.8 +37.2% 0.4% +36.6%
double_RowTri/129/129 63.6 56.6 +12.3% 0.3% +14.4%
double_RowTri/192/192 181.8 155.7 +16.8% 0.2% +20.5%
double_RowTri/256/256 427.7 349.3 +22.4% 0.5% +26.0%
double_RowTri/257/257 442.8 368.2 +20.3% 0.1% +23.4%
double_RowTri/512/512 2,869 2,516 +14.1% 0.1% +15.2%
double_RowTri/1024/1024 21,228 18,968 +11.9% 0.2% +13.2%
double_RowTri/2048/2048 170,382 147,416 +15.6% 0.4% +16.1%
double_RowTri/4096/4096 1,257,440 1,149,852 +9.4% 0.2% +9.7%
double_RowTri/64/1 0.770 0.767 +0.4% 0.3% +0.7%
double_RowTri/64/4 0.546 0.461 +18.6% 1.8% +16.6%
double_RowTri/64/8 1.07 0.818 +31.3% 1.2% +30.9%
double_RowTri/64/16 2.11 1.63 +29.6% 1.5% +31.2%
double_RowTri/64/17 2.53 1.98 +28.0% 2.3% +28.6%
double_RowTri/64/4096 527.2 420.4 +25.4% 0.4% +24.7%
double_RowTri/128/4 1.95 1.48 +31.6% 0.8% +31.7%
double_RowTri/128/8 3.88 2.80 +38.7% 0.1% +38.0%
double_RowTri/128/17 9.66 6.93 +39.3% 0.6% +39.6%
double_RowTri/1024/8 259.4 232.5 +11.6% 0.8% +12.2%
double_RowTri/1024/32 749.1 679.5 +10.3% 0.4% +12.4%
double_RowTri/1024/128 2,732 2,465 +10.8% 0.4% +13.2%
double_RowTri/4096/32 13,102 12,407 +5.6% 0.3% +6.2%
float_Right/8/8 0.106 0.105 +0.3% 0.7% +1.1%
float_Right/12/12 0.216 0.216 -0.0% 1.4% -0.5%
float_Right/16/16 0.330 0.331 -0.0% 1.9% -0.7%
float_Right/24/24 0.616 0.604 +2.1% 1.2% +0.6%
float_Right/31/31 1.13 1.12 +1.3% 1.2% -1.5%
float_Right/32/32 1.04 1.04 -0.3% 1.2% -0.7%
float_Right/33/33 1.21 1.18 +3.2% 2.9% -0.3%
float_Right/48/48 2.58 2.25 +14.6% 2.4% +0.6%
float_Right/63/63 5.59 5.55 +0.8% 1.0% -0.3%
float_Right/64/64 5.56 5.41 +2.9% 1.8% -0.1%
float_Right/65/65 5.96 5.92 +0.7% 2.0% +0.2%
float_Right/95/95 14.6 13.8 +5.7% 1.6% -0.2%
float_Right/96/96 11.9 12.2 -2.8% 1.1% -0.3%
float_Right/97/97 15.1 14.3 +5.1% 0.7% -0.2%
float_Right/100/100 15.9 15.3 +3.9% 1.3% +0.0%
float_Right/127/127 28.9 28.7 +0.9% 1.3% -0.4%
float_Right/128/128 26.0 26.5 -1.9% 0.3% -0.1%
float_Right/129/129 27.9 28.0 -0.4% 0.3% -0.2%
float_Right/192/192 79.3 80.3 -1.2% 0.5% -0.5%
float_Right/256/256 181.8 183.5 -0.9% 0.2% +0.1%
float_Right/257/257 189.3 189.7 -0.2% 0.4% -0.1%
float_Right/512/512 1,263 1,267 -0.3% 0.2% -0.1%
float_Right/1024/1024 9,474 9,481 -0.1% 0.1% +0.0%
float_Right/2048/2048 72,782 72,933 -0.2% 0.3% +0.1%
float_Right/4096/4096 571,938 572,415 -0.1% 0.1% +0.0%
float_Right/64/1 0.974 0.967 +0.7% 0.5% -0.2%
float_Right/64/4 1.10 1.11 -0.2% 1.1% -0.1%
float_Right/64/8 1.37 1.37 -0.4% 0.9% +0.8%
float_Right/64/16 2.92 2.91 +0.6% 0.3% +0.2%
float_Right/64/17 3.06 3.05 +0.5% 2.3% -0.2%
float_Right/64/4096 271.7 272.7 -0.4% 0.5% +0.2%
float_Right/128/4 2.81 2.82 -0.3% 0.9% -0.1%
float_Right/128/8 3.58 3.58 -0.2% 2.2% +0.3%
float_Right/128/17 7.92 7.98 -0.8% 2.2% -0.4%
float_Right/1024/8 130.8 131.6 -0.6% 2.0% -0.2%
float_Right/1024/32 349.2 348.8 +0.1% 0.3% +0.1%
float_Right/1024/128 1,224 1,228 -0.3% 0.1% +0.1%
float_Right/4096/32 6,061 6,040 +0.4% 0.8% -0.5%
double_Right/8/8 0.131 0.132 -0.7% 1.1% -0.8%
double_Right/12/12 0.243 0.242 +0.4% 0.8% +0.6%
double_Right/16/16 0.383 0.378 +1.2% 0.4% +2.7%
double_Right/24/24 0.828 0.817 +1.4% 1.3% +0.1%
double_Right/31/31 1.45 1.44 +0.5% 1.1% -0.4%
double_Right/32/32 1.51 1.52 -0.5% 1.1% +1.5%
double_Right/33/33 1.74 1.72 +1.1% 5.3% -4.2%
double_Right/48/48 3.83 3.80 +1.0% 1.6% +0.5%
double_Right/63/63 8.27 8.11 +2.0% 0.3% -0.6%
double_Right/64/64 8.37 8.25 +1.4% 1.6% -0.5%
double_Right/65/65 9.00 8.86 +1.6% 0.8% -0.4%
double_Right/95/95 23.5 22.7 +3.5% 0.6% +0.0%
double_Right/96/96 23.5 22.9 +2.6% 1.1% +0.1%
double_Right/97/97 24.8 24.0 +3.6% 1.0% -0.4%
double_Right/100/100 26.1 25.4 +2.6% 1.1% -0.2%
double_Right/127/127 51.7 49.8 +3.9% 0.6% -0.1%
double_Right/128/128 51.9 49.8 +4.3% 0.6% -0.2%
double_Right/129/129 54.5 52.5 +3.7% 1.7% -0.8%
double_Right/192/192 149.0 146.4 +1.8% 0.1% -1.2%
double_Right/256/256 333.3 330.2 +0.9% 0.2% -0.5%
double_Right/257/257 341.5 338.5 +0.9% 0.2% -0.3%
double_Right/512/512 2,415 2,415 -0.0% 0.0% -0.0%
double_Right/1024/1024 18,397 18,393 +0.0% 0.0% -0.0%
double_Right/2048/2048 144,833 144,816 +0.0% 0.1% -0.0%
double_Right/4096/4096 1,141,169 1,141,497 -0.0% 0.0% +0.0%
double_Right/64/1 0.932 0.922 +1.1% 2.3% -0.1%
double_Right/64/4 1.14 1.15 -0.8% 2.2% -0.6%
double_Right/64/8 2.72 2.66 +2.2% 0.9% -0.1%
double_Right/64/16 3.38 3.32 +1.8% 1.5% +0.3%
double_Right/64/17 3.57 3.59 -0.5% 3.2% +0.3%
double_Right/64/4096 496.2 495.1 +0.2% 0.2% -0.4%
double_Right/128/4 3.72 3.71 +0.4% 1.4% -0.3%
double_Right/128/8 5.81 5.61 +3.5% 0.7% +1.3%
double_Right/128/17 9.45 9.14 +3.4% 0.5% -0.1%
double_Right/1024/8 260.5 259.0 +0.6% 0.5% +0.1%
double_Right/1024/32 687.1 682.2 +0.7% 0.2% +0.0%
double_Right/1024/128 2,396 2,395 +0.0% 0.1% -0.0%
double_Right/4096/32 12,043 12,053 -0.1% 0.7% +0.4%
float_Upper/24/17 0.293 0.255 +14.9% 0.3% +16.4%
float_Upper/64/17 1.29 1.10 +17.3% 0.1% +17.0%
float_Upper/128/17 4.46 3.44 +29.8% 0.1% +29.5%
float_Upper/512/17 64.1 60.3 +6.2% 0.9% +6.1%
float_Upper/24/64 0.818 0.634 +29.0% 0.4% +25.6%
float_Upper/64/64 3.93 3.18 +23.4% 0.4% +22.6%
float_Upper/128/64 15.0 11.0 +36.8% 0.7% +36.6%
float_Upper/512/64 187.1 165.9 +12.8% 0.3% +12.7%
float_Upper/24/512 6.36 4.90 +29.9% 0.1% +31.5%
float_Upper/64/512 32.2 26.6 +21.4% 0.2% +21.5%
float_Upper/128/512 121.3 89.0 +36.3% 0.5% +35.9%
float_Upper/512/512 1,398 1,236 +13.1% 0.2% +12.6%
double_Upper/24/17 0.515 0.416 +23.8% 0.4% +23.9%
double_Upper/64/17 2.34 1.96 +19.2% 0.4% +20.8%
double_Upper/128/17 8.67 6.63 +30.8% 0.6% +30.5%
double_Upper/512/17 131.5 122.0 +7.8% 0.9% +8.1%
double_Upper/24/64 1.65 1.26 +31.2% 0.2% +29.5%
double_Upper/64/64 7.89 6.38 +23.6% 0.1% +24.4%
double_Upper/128/64 30.7 22.5 +36.6% 0.6% +36.5%
double_Upper/512/64 389.7 335.7 +16.1% 0.9% +15.5%
double_Upper/24/512 13.5 10.7 +26.4% 1.3% +26.3%
double_Upper/64/512 63.9 52.6 +21.6% 0.4% +23.0%
double_Upper/128/512 244.2 178.5 +36.8% 0.2% +36.4%
double_Upper/512/512 2,848 2,500 +13.9% 0.2% +14.4%
float_RightRow/24/17 0.446 0.258 +73.1% 1.2% +73.4%
float_RightRow/64/17 2.35 1.17 +100.8% 1.1% +101.8%
float_RightRow/128/17 8.45 3.97 +112.9% 1.7% +116.9%
float_RightRow/512/17 67.5 60.5 +11.6% 0.4% +17.4%
float_RightRow/24/64 0.825 0.650 +26.8% 0.5% +28.2%
float_RightRow/64/64 4.05 3.25 +24.6% 1.6% +23.8%
float_RightRow/128/64 15.2 11.1 +36.2% 0.6% +35.5%
float_RightRow/512/64 188.8 163.2 +15.7% 0.0% +18.5%
float_RightRow/24/512 6.39 4.96 +28.8% 0.2% +30.0%
float_RightRow/64/512 33.0 27.0 +22.4% 0.2% +22.4%
float_RightRow/128/512 122.4 90.4 +35.4% 0.2% +35.0%
float_RightRow/512/512 1,403 1,235 +13.6% 0.2% +13.7%
double_RightRow/24/17 0.678 0.427 +58.6% 0.8% +59.3%
double_RightRow/64/17 3.42 1.99 +72.2% 0.3% +72.1%
double_RightRow/128/17 12.8 6.90 +85.3% 1.6% +83.1%
double_RightRow/512/17 129.0 115.0 +12.2% 0.3% +10.6%
double_RightRow/24/64 1.68 1.28 +31.3% 0.7% +29.4%
double_RightRow/64/64 8.00 6.46 +23.9% 0.6% +23.1%
double_RightRow/128/64 31.1 22.9 +35.7% 0.1% +34.8%
double_RightRow/512/64 388.4 328.3 +18.3% 0.4% +17.0%
double_RightRow/24/512 13.8 10.9 +26.4% 0.9% +24.7%
double_RightRow/64/512 65.3 53.2 +22.8% 0.2% +22.2%
double_RightRow/128/512 248.1 182.9 +35.6% 0.5% +34.5%
double_RightRow/512/512 2,874 2,492 +15.3% 0.5% +15.1%

🤖 Generated with Claude Code

Merge request reports

Loading
Loading