aboutsummaryrefslogtreecommitdiff
path: root/vendor/ryu/src/d2s_intrinsics.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/ryu/src/d2s_intrinsics.rs')
-rw-r--r--vendor/ryu/src/d2s_intrinsics.rs89
1 files changed, 0 insertions, 89 deletions
diff --git a/vendor/ryu/src/d2s_intrinsics.rs b/vendor/ryu/src/d2s_intrinsics.rs
deleted file mode 100644
index a4e1fb1..0000000
--- a/vendor/ryu/src/d2s_intrinsics.rs
+++ /dev/null
@@ -1,89 +0,0 @@
-// Translated from C to Rust. The original C code can be found at
-// https://github.com/ulfjack/ryu and carries the following license:
-//
-// Copyright 2018 Ulf Adams
-//
-// The contents of this file may be used under the terms of the Apache License,
-// Version 2.0.
-//
-// (See accompanying file LICENSE-Apache or copy at
-// http://www.apache.org/licenses/LICENSE-2.0)
-//
-// Alternatively, the contents of this file may be used under the terms of
-// the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE-Boost or copy at
-// https://www.boost.org/LICENSE_1_0.txt)
-//
-// Unless required by applicable law or agreed to in writing, this software
-// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.
-
-use core::ptr;
-
-#[cfg_attr(feature = "no-panic", inline)]
-pub fn div5(x: u64) -> u64 {
- x / 5
-}
-
-#[cfg_attr(feature = "no-panic", inline)]
-pub fn div10(x: u64) -> u64 {
- x / 10
-}
-
-#[cfg_attr(feature = "no-panic", inline)]
-pub fn div100(x: u64) -> u64 {
- x / 100
-}
-
-#[cfg_attr(feature = "no-panic", inline)]
-pub(crate) fn pow5_factor(mut value: u64) -> u32 {
- const M_INV_5: u64 = 14757395258967641293; // 5 * m_inv_5 = 1 (mod 2^64)
- const N_DIV_5: u64 = 3689348814741910323; // #{ n | n = 0 (mod 2^64) } = 2^64 / 5
- let mut count = 0u32;
- loop {
- debug_assert!(value != 0);
- value = value.wrapping_mul(M_INV_5);
- if value > N_DIV_5 {
- break;
- }
- count += 1;
- }
- count
-}
-
-// Returns true if value is divisible by 5^p.
-#[cfg_attr(feature = "no-panic", inline)]
-pub fn multiple_of_power_of_5(value: u64, p: u32) -> bool {
- // I tried a case distinction on p, but there was no performance difference.
- pow5_factor(value) >= p
-}
-
-// Returns true if value is divisible by 2^p.
-#[cfg_attr(feature = "no-panic", inline)]
-pub fn multiple_of_power_of_2(value: u64, p: u32) -> bool {
- debug_assert!(value != 0);
- debug_assert!(p < 64);
- // __builtin_ctzll doesn't appear to be faster here.
- (value & ((1u64 << p) - 1)) == 0
-}
-
-#[cfg_attr(feature = "no-panic", inline)]
-pub fn mul_shift_64(m: u64, mul: &(u64, u64), j: u32) -> u64 {
- let b0 = m as u128 * mul.0 as u128;
- let b2 = m as u128 * mul.1 as u128;
- (((b0 >> 64) + b2) >> (j - 64)) as u64
-}
-
-#[cfg_attr(feature = "no-panic", inline)]
-pub unsafe fn mul_shift_all_64(
- m: u64,
- mul: &(u64, u64),
- j: u32,
- vp: *mut u64,
- vm: *mut u64,
- mm_shift: u32,
-) -> u64 {
- ptr::write(vp, mul_shift_64(4 * m + 2, mul, j));
- ptr::write(vm, mul_shift_64(4 * m - 1 - mm_shift as u64, mul, j));
- mul_shift_64(4 * m, mul, j)
-}