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]

Reply via email to