Files
Raúl MarínandClaude Opus 5.5 7fca38fe19 Vectorize integer rounding on ARM for types narrower than 64 bits
Vectorization was disabled for all integer types on aarch64 because it
made `round(Int64)` 20% slower: NEON has no 64-bit multiply-high, so
each lane goes through general purpose registers. Narrower types use
widening multiplies instead, and `llvm-mca` predicts 4x to 20x fewer
cycles per element on Neoverse V1. Keep it disabled for 64 bits and up.

The perf test keeps one query per distinct code path, adding `Int32`
and `Float32`, since only 10 random queries run per test.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-24 17:55:20 +02:00

15 lines
1.1 KiB
XML

<test>
<query>SELECT count() FROM numbers(100000000) WHERE NOT ignore(round(toInt64(number), -2))</query>
<query>SELECT count() FROM numbers(100000000) WHERE NOT ignore(roundBankers(toInt64(number), -2))</query>
<query>SELECT count() FROM numbers(100000000) WHERE NOT ignore(round(toInt32(number), -2))</query>
<query>SELECT count() FROM numbers(100000000) WHERE NOT ignore(trunc(toInt32(number), -2))</query>
<query>SELECT count() FROM numbers(100000000) WHERE NOT ignore(round(toFloat64(number), -2))</query>
<query>SELECT count() FROM numbers(100000000) WHERE NOT ignore(roundBankers(toFloat64(number), 2))</query>
<query>SELECT count() FROM numbers(100000000) WHERE NOT ignore(round(toFloat32(number), -2))</query>
<query>SELECT count() FROM numbers(100000000) WHERE NOT ignore(floor(toFloat32(number)))</query>
<query>SELECT count() FROM numbers(10000000) WHERE NOT ignore(round(toDecimal128(number, 0), -2))</query>
<query>SELECT count() FROM numbers(10000000) WHERE NOT ignore(roundBankers(toDecimal128(number, 0), -2))</query>
</test>