mbutrovich commented on code in PR #12232:
URL: https://github.com/apache/arrow-rs/pull/12232#discussion_r4564698439
##########
arrow-buffer/src/divisor.rs:
##########
@@ -470,20 +510,390 @@ unsigned_divisor!(
u64,
u128
);
-signed_divisor!(
+/// Expands to the arguments of `signed_divisor!` that compute with `$wide`, a
type twice as wide
+/// as `$t`
+macro_rules! signed_divisor_wide {
Review Comment:
`signed_divisor!` now takes the multiplier and `n + MULSH(m', n)` as
expressions, so it can build `DivisorI128`, which has no wider type.
`signed_divisor_wide!` passes `DivisorI32` and `DivisorI64` the expressions the
macro had inline before. `divisor_enum!` takes the doc examples as strings, so
`DivisorI256` can supply its own.
The 32-bit and 64-bit divisors compile to the same code as on the merge
base, 4e04fea272107a6716d5634c591d0d994ba1eed2. I built the `divisor` benchmark
there and at this PR with the bot's thin LTO, for aarch64, x86_64 and
`x86-64-v3`. The 26 benchmark functions for `u32`, `i32`, `u64` and `i64` have
the same instructions in both builds on all three targets, apart from addresses.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]