1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
//! This module implements right and left rotation (**not** shifting) intrinsics //! for 256-bit integers. use crate::U256; use core::mem::MaybeUninit; #[inline] pub fn rotate_left(r: &mut MaybeUninit<U256>, a: &U256, b: u32) { unsafe { r.as_mut_ptr() .write((a << (b & 0xff)) | (a >> ((256 - b) & 0xff))) }; } #[inline] pub fn rotate_right(r: &mut MaybeUninit<U256>, a: &U256, b: u32) { unsafe { r.as_mut_ptr() .write((a >> (b & 0xff)) | (a << ((256 - b) & 0xff))) }; }