RPM build fix (reverted CI changes which will need to be un-reverted or made conditional) and vendor Rust dependencies to make builds much faster in any CI system.
This commit is contained in:
46
zeroidc/vendor/serde_json/src/lexical/shift.rs
vendored
Normal file
46
zeroidc/vendor/serde_json/src/lexical/shift.rs
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
// Adapted from https://github.com/Alexhuszagh/rust-lexical.
|
||||
|
||||
//! Bit-shift helpers.
|
||||
|
||||
use super::float::ExtendedFloat;
|
||||
use core::mem;
|
||||
|
||||
// Shift extended-precision float right `shift` bytes.
|
||||
#[inline]
|
||||
pub(crate) fn shr(fp: &mut ExtendedFloat, shift: i32) {
|
||||
let bits: u64 = mem::size_of::<u64>() as u64 * 8;
|
||||
debug_assert!((shift as u64) < bits, "shr() overflow in shift right.");
|
||||
|
||||
fp.mant >>= shift;
|
||||
fp.exp += shift;
|
||||
}
|
||||
|
||||
// Shift extended-precision float right `shift` bytes.
|
||||
//
|
||||
// Accepts when the shift is the same as the type size, and
|
||||
// sets the value to 0.
|
||||
#[inline]
|
||||
pub(crate) fn overflowing_shr(fp: &mut ExtendedFloat, shift: i32) {
|
||||
let bits: u64 = mem::size_of::<u64>() as u64 * 8;
|
||||
debug_assert!(
|
||||
(shift as u64) <= bits,
|
||||
"overflowing_shr() overflow in shift right."
|
||||
);
|
||||
|
||||
fp.mant = if shift as u64 == bits {
|
||||
0
|
||||
} else {
|
||||
fp.mant >> shift
|
||||
};
|
||||
fp.exp += shift;
|
||||
}
|
||||
|
||||
// Shift extended-precision float left `shift` bytes.
|
||||
#[inline]
|
||||
pub(crate) fn shl(fp: &mut ExtendedFloat, shift: i32) {
|
||||
let bits: u64 = mem::size_of::<u64>() as u64 * 8;
|
||||
debug_assert!((shift as u64) < bits, "shl() overflow in shift left.");
|
||||
|
||||
fp.mant <<= shift;
|
||||
fp.exp -= shift;
|
||||
}
|
||||
Reference in New Issue
Block a user