Skip to content

Commit

Permalink
Use bitwise XOR in to_ascii_uppercase
Browse files Browse the repository at this point in the history
This saves an instruction compared to the previous approach, which
was to unset the fifth bit with bitwise OR.
  • Loading branch information
redzic committed Apr 9, 2022
1 parent f4a7ce9 commit 1e6365d
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions library/core/src/num/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -299,8 +299,8 @@ impl u8 {
#[rustc_const_stable(feature = "const_ascii_methods_on_intrinsics", since = "1.52.0")]
#[inline]
pub const fn to_ascii_uppercase(&self) -> u8 {
// Unset the fifth bit if this is a lowercase letter
*self & !((self.is_ascii_lowercase() as u8) * ASCII_CASE_MASK)
// Toggle the fifth bit if this is a lowercase letter
*self ^ ((self.is_ascii_lowercase() as u8) * ASCII_CASE_MASK)
}

/// Makes a copy of the value in its ASCII lower case equivalent.
Expand Down

0 comments on commit 1e6365d

Please sign in to comment.