summaryrefslogtreecommitdiffstats
path: root/vendor/crypto-bigint/src/nlimbs.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/crypto-bigint/src/nlimbs.rs')
-rw-r--r--vendor/crypto-bigint/src/nlimbs.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/vendor/crypto-bigint/src/nlimbs.rs b/vendor/crypto-bigint/src/nlimbs.rs
new file mode 100644
index 0000000..c5166e7
--- /dev/null
+++ b/vendor/crypto-bigint/src/nlimbs.rs
@@ -0,0 +1,29 @@
+/// Calculate the number of limbs required to represent the given number of bits.
+// TODO(tarcieri): replace with `generic_const_exprs` (rust-lang/rust#76560) when stable
+#[macro_export]
+macro_rules! nlimbs {
+ ($bits:expr) => {
+ $bits / $crate::Limb::BITS
+ };
+}
+
+#[cfg(test)]
+mod tests {
+ #[cfg(target_pointer_width = "32")]
+ #[test]
+ fn nlimbs_for_bits_macro() {
+ assert_eq!(nlimbs!(64), 2);
+ assert_eq!(nlimbs!(128), 4);
+ assert_eq!(nlimbs!(192), 6);
+ assert_eq!(nlimbs!(256), 8);
+ }
+
+ #[cfg(target_pointer_width = "64")]
+ #[test]
+ fn nlimbs_for_bits_macro() {
+ assert_eq!(nlimbs!(64), 1);
+ assert_eq!(nlimbs!(128), 2);
+ assert_eq!(nlimbs!(192), 3);
+ assert_eq!(nlimbs!(256), 4);
+ }
+}