X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fbitcount.h;fp=src%2Fbitcount.h;h=0000000000000000000000000000000000000000;hp=7609da40c30c2282ecc3dab112a70b7185bbef1d;hb=8fb45caadef67fb2ccc27857c15ade987d9f5e2f;hpb=900279a06f432fbba63b5a320028830b40e06e3e
diff --git a/src/bitcount.h b/src/bitcount.h
deleted file mode 100644
index 7609da40..00000000
--- a/src/bitcount.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- Stockfish, a UCI chess playing engine derived from Glaurung 2.1
- Copyright (C) 2004-2008 Tord Romstad (Glaurung author)
- Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad
- Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad
-
- Stockfish is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Stockfish is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-#ifndef BITCOUNT_H_INCLUDED
-#define BITCOUNT_H_INCLUDED
-
-#include
-
-#include "types.h"
-
-enum BitCountType {
- CNT_64,
- CNT_64_MAX15,
- CNT_32,
- CNT_32_MAX15,
- CNT_HW_POPCNT
-};
-
-/// Determine at compile time the best popcount<> specialization according to
-/// whether the platform is 32 or 64 bit, the maximum number of non-zero
-/// bits to count and if the hardware popcnt instruction is available.
-const BitCountType Full = HasPopCnt ? CNT_HW_POPCNT : Is64Bit ? CNT_64 : CNT_32;
-const BitCountType Max15 = HasPopCnt ? CNT_HW_POPCNT : Is64Bit ? CNT_64_MAX15 : CNT_32_MAX15;
-
-
-/// popcount() counts the number of non-zero bits in a bitboard
-template inline int popcount(Bitboard);
-
-template<>
-inline int popcount(Bitboard b) {
- b -= (b >> 1) & 0x5555555555555555ULL;
- b = ((b >> 2) & 0x3333333333333333ULL) + (b & 0x3333333333333333ULL);
- b = ((b >> 4) + b) & 0x0F0F0F0F0F0F0F0FULL;
- return (b * 0x0101010101010101ULL) >> 56;
-}
-
-template<>
-inline int popcount(Bitboard b) {
- b -= (b >> 1) & 0x5555555555555555ULL;
- b = ((b >> 2) & 0x3333333333333333ULL) + (b & 0x3333333333333333ULL);
- return (b * 0x1111111111111111ULL) >> 60;
-}
-
-template<>
-inline int popcount(Bitboard b) {
- unsigned w = unsigned(b >> 32), v = unsigned(b);
- v -= (v >> 1) & 0x55555555; // 0-2 in 2 bits
- w -= (w >> 1) & 0x55555555;
- v = ((v >> 2) & 0x33333333) + (v & 0x33333333); // 0-4 in 4 bits
- w = ((w >> 2) & 0x33333333) + (w & 0x33333333);
- v = ((v >> 4) + v + (w >> 4) + w) & 0x0F0F0F0F;
- return (v * 0x01010101) >> 24;
-}
-
-template<>
-inline int popcount(Bitboard b) {
- unsigned w = unsigned(b >> 32), v = unsigned(b);
- v -= (v >> 1) & 0x55555555; // 0-2 in 2 bits
- w -= (w >> 1) & 0x55555555;
- v = ((v >> 2) & 0x33333333) + (v & 0x33333333); // 0-4 in 4 bits
- w = ((w >> 2) & 0x33333333) + (w & 0x33333333);
- return ((v + w) * 0x11111111) >> 28;
-}
-
-template<>
-inline int popcount(Bitboard b) {
-
-#ifndef USE_POPCNT
-
- assert(false);
- return b != 0; // Avoid 'b not used' warning
-
-#elif defined(_MSC_VER) && defined(__INTEL_COMPILER)
-
- return _mm_popcnt_u64(b);
-
-#elif defined(_MSC_VER)
-
- return (int)__popcnt64(b);
-
-#else // Assumed gcc or compatible compiler
-
- return __builtin_popcountll(b);
-
-#endif
-}
-
-#endif // #ifndef BITCOUNT_H_INCLUDED