X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Ftypes.h;h=3cfaa072ae5f2bf71f0693c7e9d998d0135226e4;hp=543b38a84752faa6ab3844504e8ecd48d2aee381;hb=c014444f09ace05e908909d9c5c60127e998b538;hpb=d12378497cb24f40d3510cdcfaecd1335f523196 diff --git a/src/types.h b/src/types.h index 543b38a8..3cfaa072 100644 --- a/src/types.h +++ b/src/types.h @@ -65,11 +65,6 @@ # endif #define CACHE_LINE_SIZE 64 -#if defined(_MSC_VER) || defined(__INTEL_COMPILER) -# define CACHE_LINE_ALIGNMENT __declspec(align(CACHE_LINE_SIZE)) -#else -# define CACHE_LINE_ALIGNMENT __attribute__ ((aligned(CACHE_LINE_SIZE))) -#endif #ifdef _MSC_VER # define FORCE_INLINE __forceinline @@ -180,8 +175,8 @@ enum Value { VALUE_INFINITE = 32001, VALUE_NONE = 32002, - VALUE_MATE_IN_MAX_PLY = VALUE_MATE - MAX_PLY, - VALUE_MATED_IN_MAX_PLY = -VALUE_MATE + MAX_PLY, + VALUE_MATE_IN_MAX_PLY = VALUE_MATE - 2 * MAX_PLY, + VALUE_MATED_IN_MAX_PLY = -VALUE_MATE + 2 * MAX_PLY, VALUE_ENSURE_INTEGER_SIZE_P = INT_MAX, VALUE_ENSURE_INTEGER_SIZE_N = INT_MIN, @@ -217,7 +212,8 @@ enum Depth { DEPTH_QS_NO_CHECKS = -1, DEPTH_QS_RECAPTURES = -5, - DEPTH_NONE = -6 + DEPTH_NONE = -6, + DEPTH_MAX = MAX_PLY }; enum Square { @@ -254,7 +250,6 @@ enum Rank { RANK_1, RANK_2, RANK_3, RANK_4, RANK_5, RANK_6, RANK_7, RANK_8, RANK_NB }; -template inline T dist(T x, T y) { return x < y ? y - x : x - y; } /// The Score enum stores a middlegame and an endgame value in a single integer /// (enum). The least significant 16 bits are used to store the endgame value @@ -280,23 +275,24 @@ inline Value eg_value(Score s) { return Value((int)(unsigned(s) & 0x7FFFU) - (int)(unsigned(s) & 0x8000U)); } -#define ENABLE_BASE_OPERATORS_ON(T) \ -inline T operator+(const T d1, const T d2) { return T(int(d1) + int(d2)); } \ -inline T operator-(const T d1, const T d2) { return T(int(d1) - int(d2)); } \ -inline T operator*(int i, const T d) { return T(i * int(d)); } \ -inline T operator*(const T d, int i) { return T(int(d) * i); } \ -inline T operator-(const T d) { return T(-int(d)); } \ -inline T& operator+=(T& d1, const T d2) { return d1 = d1 + d2; } \ -inline T& operator-=(T& d1, const T d2) { return d1 = d1 - d2; } \ +#define ENABLE_BASE_OPERATORS_ON(T) \ +inline T operator+(T d1, T d2) { return T(int(d1) + int(d2)); } \ +inline T operator-(T d1, T d2) { return T(int(d1) - int(d2)); } \ +inline T operator*(int i, T d) { return T(i * int(d)); } \ +inline T operator*(T d, int i) { return T(int(d) * i); } \ +inline T operator-(T d) { return T(-int(d)); } \ +inline T& operator+=(T& d1, T d2) { return d1 = d1 + d2; } \ +inline T& operator-=(T& d1, T d2) { return d1 = d1 - d2; } \ inline T& operator*=(T& d, int i) { return d = T(int(d) * i); } ENABLE_BASE_OPERATORS_ON(Score) -#define ENABLE_FULL_OPERATORS_ON(T) \ -ENABLE_BASE_OPERATORS_ON(T) \ -inline T& operator++(T& d) { return d = T(int(d) + 1); } \ -inline T& operator--(T& d) { return d = T(int(d) - 1); } \ -inline T operator/(const T d, int i) { return T(int(d) / i); } \ +#define ENABLE_FULL_OPERATORS_ON(T) \ +ENABLE_BASE_OPERATORS_ON(T) \ +inline T& operator++(T& d) { return d = T(int(d) + 1); } \ +inline T& operator--(T& d) { return d = T(int(d) - 1); } \ +inline T operator/(T d, int i) { return T(int(d) / i); } \ +inline int operator/(T d1, T d2) { return int(d1) / int(d2); } \ inline T& operator/=(T& d, int i) { return d = T(int(d) / i); } ENABLE_FULL_OPERATORS_ON(Value) @@ -326,8 +322,6 @@ inline Score operator/(Score s, int i) { return make_score(mg_value(s) / i, eg_value(s) / i); } -CACHE_LINE_ALIGNMENT - extern Value PieceValue[PHASE_NB][PIECE_NB]; struct ExtMove { @@ -435,7 +429,7 @@ inline Move make(Square from, Square to, PieceType pt = KNIGHT) { } inline bool is_ok(Move m) { - return from_sq(m) != to_sq(m); // Catches also MOVE_NULL and MOVE_NONE + return from_sq(m) != to_sq(m); // Catch also MOVE_NULL and MOVE_NONE } #endif // #ifndef TYPES_H_INCLUDED