changed signature utility functions utils::pop_lsb and utils::pop_msb to reduce unnecessary type conversions

This commit is contained in:
Varga Dávid Lajos
2025-11-19 20:58:56 +01:00
parent d66787f51d
commit 372d86b451
2 changed files with 10 additions and 10 deletions

View File

@@ -1,3 +1,5 @@
use crate::bitboard::utils::pop_lsb;
use super::*;
impl Board {
@@ -6,8 +8,7 @@ impl Board {
let offset: u8 = self.side_to_move * 6;
let mut pawns: u64 = self.bitboards[offset as usize];
while pawns != 0 {
let next_sq = pawns.trailing_zeros();
pawns &= !(1 << next_sq);
let next_sq = pop_lsb(&mut pawns);
let mut quiets: u64 = self.get_pseudo_pawn_moves(next_sq) & move_mask;
quiets = self.get_pin_masked_moves(quiets, next_sq);
@@ -40,8 +41,7 @@ impl Board {
let mut pawns: u64 = self.bitboards[offset];
let opponents = self.occupancy[1 - self.side_to_move as usize];
while pawns != 0 {
let next_sq: u32 = pawns.trailing_zeros();
pawns &= !(1 << next_sq);
let next_sq = pop_lsb(&mut pawns);
let mut attacks: u64 = self.get_pseudo_pawn_captures(next_sq) & move_mask;
attacks = self.get_pin_masked_moves(attacks, next_sq);

View File

@@ -1,13 +1,13 @@
#[inline(always)]
pub fn pop_lsb(value: &mut u64) -> usize {
let idx = value.trailing_zeros() as usize;
pub fn pop_lsb(value: &mut u64) -> u32 {
let idx = value.trailing_zeros();
*value &= !(1 << idx);
return idx;
}
#[inline(always)]
pub fn pop_msb(value: &mut u64) -> usize {
let idx = 63 - value.leading_zeros() as usize;
pub fn pop_msb(value: &mut u64) -> u32 {
let idx = 63 - value.leading_zeros();
*value &= !(1 << idx);
return idx;
}
@@ -72,7 +72,7 @@ mod tests {
0xBEAC_DBE0_903A_AC00,
0x01E8_C895_A6F0_0000
];
let expected_values: [usize; 6] = [63, 0, 4, 2, 10, 20];
let expected_values: [u32; 6] = [63, 0, 4, 2, 10, 20];
// tests
for index in 0..6 {
@@ -92,7 +92,7 @@ mod tests {
0x0000_C1C3_201C_0DB1,
0x0000_0203_0DE4_E944
];
let expected_values: [usize; 6] = [63, 0, 61, 57, 47, 41];
let expected_values: [u32; 6] = [63, 0, 61, 57, 47, 41];
// tests
for index in 0..6 {