about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2024-10-30 02:26:18 +0000
committerbors <bors@rust-lang.org>2024-10-30 02:26:18 +0000
commit16422dbd8958179379214e8f43fdb73a06b2eada (patch)
tree4417e57297328aec1f466e816dcf817c4eda05c3
parent1e4f10ba6476e48a42a79b9f846a2d9366525b9e (diff)
parentad80da672915a89163838f9adbfe5b6e4c1e616e (diff)
downloadrust-16422dbd8958179379214e8f43fdb73a06b2eada.tar.gz
rust-16422dbd8958179379214e8f43fdb73a06b2eada.zip
Auto merge of #132238 - Urgau:midpoint-i64-hackers-impl, r=joboet
Use Hacker's Delight impl in `i64::midpoint` instead of wide `i128` impl

This PR switches `i64::midpoint` and (`isize::midpoint` where `isize == i64`) to using our Hacker's Delight impl instead of wide `i128` implementation.

As LLVM seems to be outperformed by the complexity of signed 128-bits number compared to our Hacker's Delight implementation.[^1]

It doesn't seems like it's an improvement for the other sizes[^2], so we let them with the wide implementation.

[^1]: https://rust.godbolt.org/z/ravE75EYj
[^2]: https://rust.godbolt.org/z/fzr171zKh

r? libs
-rw-r--r--library/core/src/num/mod.rs4
1 files changed, 2 insertions, 2 deletions
diff --git a/library/core/src/num/mod.rs b/library/core/src/num/mod.rs
index 9a5e211dd60..6a0b40ff517 100644
--- a/library/core/src/num/mod.rs
+++ b/library/core/src/num/mod.rs
@@ -429,7 +429,7 @@ impl i64 {
         from_xe_bytes_doc = "",
         bound_condition = "",
     }
-    midpoint_impl! { i64, i128, signed }
+    midpoint_impl! { i64, signed }
 }
 
 impl i128 {
@@ -530,7 +530,7 @@ impl isize {
         from_xe_bytes_doc = usize_isize_from_xe_bytes_doc!(),
         bound_condition = " on 64-bit targets",
     }
-    midpoint_impl! { isize, i128, signed }
+    midpoint_impl! { isize, signed }
 }
 
 /// If the 6th bit is set ascii is lower case.