changed signature utility functions utils::pop_lsb and utils::pop_msb to reduce unnecessary type conversions
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user