/*
Stockfish, a UCI chess playing engine derived from Glaurung 2.1
Copyright (C) 2004-2008 Tord Romstad (Glaurung author)
- Copyright (C) 2008-2010 Marco Costalba, Joona Kiiski, Tord Romstad
+ Copyright (C) 2008-2012 Marco Costalba, Joona Kiiski, 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
#define FORCE_INLINE inline
#endif
-/// cpu_has_popcnt() detects support for popcnt instruction at runtime
-inline bool cpu_has_popcnt() {
- int CPUInfo[4] = {-1};
- __cpuid(CPUInfo, 0x00000001);
- return (CPUInfo[2] >> 23) & 1;
-}
-
-/// CpuHasPOPCNT is a global constant initialized at startup that
-/// is set to true if CPU on which application runs supports popcnt
-/// hardware instruction. Unless USE_POPCNT is not defined.
+/// HasPopCnt is a global constant initialized at compile time that is set to
+/// true if CPU on which application runs supports popcnt hardware instruction.
#if defined(USE_POPCNT)
-const bool CpuHasPOPCNT = cpu_has_popcnt();
+const bool HasPopCnt = true;
#else
-const bool CpuHasPOPCNT = false;
+const bool HasPopCnt = false;
#endif
-/// CpuIs64Bit is a global constant initialized at compile time that
-/// is set to true if CPU on which application runs is a 64 bits.
+/// Is64Bit is a global constant initialized at compile time that is set to
+/// true if CPU on which application runs is a 64 bits.
#if defined(IS_64BIT)
-const bool CpuIs64Bit = true;
+const bool Is64Bit = true;
#else
-const bool CpuIs64Bit = false;
+const bool Is64Bit = false;
#endif
#include <string>
};
enum PieceType {
- PIECE_TYPE_NONE = 0,
+ NO_PIECE_TYPE = 0,
PAWN = 1, KNIGHT = 2, BISHOP = 3, ROOK = 4, QUEEN = 5, KING = 6
};
enum Piece {
- PIECE_NONE_DARK_SQ = 0, WP = 1, WN = 2, WB = 3, WR = 4, WQ = 5, WK = 6,
- BP = 9, BN = 10, BB = 11, BR = 12, BQ = 13, BK = 14, PIECE_NONE = 16
+ NO_PIECE = 16, // color_of(NO_PIECE) == NO_COLOR
+ 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
};
enum Color {
- WHITE, BLACK, COLOR_NONE
+ WHITE, BLACK, NO_COLOR
};
enum Depth {
RANK_1, RANK_2, RANK_3, RANK_4, RANK_5, RANK_6, RANK_7, RANK_8
};
-enum SquareColor {
- DARK, LIGHT
-};
-
enum ScaleFactor {
SCALE_FACTOR_DRAW = 0,
SCALE_FACTOR_NORMAL = 64,
extern const Value PieceValueEndgame[17];
extern int SquareDistance[64][64];
-inline Value value_mate_in(int ply) {
+inline Value mate_in(int ply) {
return VALUE_MATE - ply;
}
-inline Value value_mated_in(int ply) {
+inline Value mated_in(int ply) {
return -VALUE_MATE + ply;
}
return relative_rank(c, rank_of(s));
}
-inline SquareColor color_of(Square s) {
- return SquareColor(int(rank_of(s) + s) & 1);
-}
-
inline bool opposite_colors(Square s1, Square s2) {
int s = s1 ^ s2;
return ((s >> 3) ^ s) & 1;