X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Ftypes.h;h=51c05b2ffc12139ac8b6eca184b5b6707791d24a;hp=ade9a620a47d5d70e63a71887f8310403a6f7c69;hb=99e547f4cb190e462d0c582b731a0fcf25ce1545;hpb=de1dc4f2de7d22c9ea1b33b9caee276651ef7c6d diff --git a/src/types.h b/src/types.h index ade9a620..51c05b2f 100644 --- a/src/types.h +++ b/src/types.h @@ -42,6 +42,8 @@ #include "platform.h" +#define unlikely(x) (x) // For code annotation purposes + #if defined(_WIN64) && !defined(IS_64BIT) # include // MSVC popcnt and bsfq instrinsics # define IS_64BIT @@ -90,25 +92,6 @@ const int MAX_MOVES = 192; const int MAX_PLY = 100; const int MAX_PLY_PLUS_2 = MAX_PLY + 2; -const Bitboard FileABB = 0x0101010101010101ULL; -const Bitboard FileBBB = FileABB << 1; -const Bitboard FileCBB = FileABB << 2; -const Bitboard FileDBB = FileABB << 3; -const Bitboard FileEBB = FileABB << 4; -const Bitboard FileFBB = FileABB << 5; -const Bitboard FileGBB = FileABB << 6; -const Bitboard FileHBB = FileABB << 7; - -const Bitboard Rank1BB = 0xFF; -const Bitboard Rank2BB = Rank1BB << (8 * 1); -const Bitboard Rank3BB = Rank1BB << (8 * 2); -const Bitboard Rank4BB = Rank1BB << (8 * 3); -const Bitboard Rank5BB = Rank1BB << (8 * 4); -const Bitboard Rank6BB = Rank1BB << (8 * 5); -const Bitboard Rank7BB = Rank1BB << (8 * 6); -const Bitboard Rank8BB = Rank1BB << (8 * 7); - - /// A move needs 16 bits to be stored /// /// bit 0- 5: destination square (from 0 to 63) @@ -121,24 +104,24 @@ const Bitboard Rank8BB = Rank1BB << (8 * 7); /// while MOVE_NONE and MOVE_NULL have the same origin and destination square. enum Move { - MOVE_NONE = 0, + MOVE_NONE, MOVE_NULL = 65 }; enum MoveType { - NORMAL = 0, + NORMAL, PROMOTION = 1 << 14, ENPASSANT = 2 << 14, CASTLE = 3 << 14 }; enum CastleRight { // Defined as in PolyGlot book hash key - CASTLES_NONE = 0, - WHITE_OO = 1, - WHITE_OOO = 2, - BLACK_OO = 4, - BLACK_OOO = 8, - ALL_CASTLES = 15, + CASTLES_NONE, + WHITE_OO, + WHITE_OOO = WHITE_OO << 1, + BLACK_OO = WHITE_OO << 2, + BLACK_OOO = WHITE_OO << 3, + ALL_CASTLES = WHITE_OO | WHITE_OOO | BLACK_OO | BLACK_OOO, CASTLE_RIGHT_NB = 16 }; @@ -149,7 +132,7 @@ enum CastlingSide { }; enum Phase { - PHASE_ENDGAME = 0, + PHASE_ENDGAME, PHASE_MIDGAME = 128, MG = 0, EG = 1, PHASE_NB = 2 }; @@ -162,9 +145,9 @@ enum ScaleFactor { }; enum Bound { - BOUND_NONE = 0, - BOUND_UPPER = 1, - BOUND_LOWER = 2, + BOUND_NONE, + BOUND_UPPER, + BOUND_LOWER, BOUND_EXACT = BOUND_UPPER | BOUND_LOWER }; @@ -190,15 +173,15 @@ enum Value { }; enum PieceType { - NO_PIECE_TYPE = 0, ALL_PIECES = 0, - PAWN = 1, KNIGHT = 2, BISHOP = 3, ROOK = 4, QUEEN = 5, KING = 6, + NO_PIECE_TYPE, PAWN, KNIGHT, BISHOP, ROOK, QUEEN, KING, + ALL_PIECES = 0, PIECE_TYPE_NB = 8 }; enum Piece { - NO_PIECE = 0, - W_PAWN = 1, W_KNIGHT = 2, W_BISHOP = 3, W_ROOK = 4, W_QUEEN = 5, W_KING = 6, - B_PAWN = 9, B_KNIGHT = 10, B_BISHOP = 11, B_ROOK = 12, B_QUEEN = 13, B_KING = 14, + NO_PIECE, + W_PAWN = 1, W_KNIGHT, W_BISHOP, W_ROOK, W_QUEEN, W_KING, + B_PAWN = 9, B_KNIGHT, B_BISHOP, B_ROOK, B_QUEEN, B_KING, PIECE_NB = 16 }; @@ -245,11 +228,11 @@ enum Square { }; enum File { - FILE_A, FILE_B, FILE_C, FILE_D, FILE_E, FILE_F, FILE_G, FILE_H, FILE_NB = 8 + FILE_A, FILE_B, FILE_C, FILE_D, FILE_E, FILE_F, FILE_G, FILE_H, FILE_NB }; enum Rank { - RANK_1, RANK_2, RANK_3, RANK_4, RANK_5, RANK_6, RANK_7, RANK_8, RANK_NB = 8 + RANK_1, RANK_2, RANK_3, RANK_4, RANK_5, RANK_6, RANK_7, RANK_8, RANK_NB }; @@ -258,7 +241,7 @@ enum Rank { /// for midgame value. Compiler is free to choose the enum type as long as can /// keep its data, so ensure Score to be an integer type. enum Score { - SCORE_ZERO = 0, + SCORE_ZERO, SCORE_ENSURE_INTEGER_SIZE_P = INT_MAX, SCORE_ENSURE_INTEGER_SIZE_N = INT_MIN }; @@ -329,14 +312,13 @@ inline Score operator/(Score s, int i) { #undef ENABLE_SAFE_OPERATORS_ON extern Value PieceValue[PHASE_NB][PIECE_NB]; -extern int SquareDistance[SQUARE_NB][SQUARE_NB]; -struct MoveStack { +struct ExtMove { Move move; int score; }; -inline bool operator<(const MoveStack& f, const MoveStack& s) { +inline bool operator<(const ExtMove& f, const ExtMove& s) { return f.score < s.score; } @@ -410,18 +392,6 @@ inline bool opposite_colors(Square s1, Square s2) { return ((s >> 3) ^ s) & 1; } -inline int file_distance(Square s1, Square s2) { - return abs(file_of(s1) - file_of(s2)); -} - -inline int rank_distance(Square s1, Square s2) { - return abs(rank_of(s1) - rank_of(s2)); -} - -inline int square_distance(Square s1, Square s2) { - return SquareDistance[s1][s2]; -} - inline char file_to_char(File f, bool tolower = true) { return char(f - FILE_A + (tolower ? 'a' : 'A')); }