Retire FORCE_INLINE
authorlucasart <lucas.braesch@gmail.com>
Wed, 15 Apr 2015 20:21:45 +0000 (21:21 +0100)
committerJoona Kiiski <joona.kiiski@gmail.com>
Wed, 15 Apr 2015 20:21:45 +0000 (21:21 +0100)
No speed regression on my machine (i7-3770k, gcc 4.9.1, linux 3.16):

        stat        test     master   diff
        mean   2,482,415  2,474,987  7,906
        stdev      4,603      5,644  2,497

        speedup        0.32%
        P(speedup>0)  100.0%

Fishtest 9+0.03:

ELO: 0.26 +-1.8 (95%) LOS: 61.2%
Total: 60000 W: 12437 L: 12392 D: 35171

No functional change.

Resolves #334

src/bitbase.cpp
src/bitboard.cpp
src/bitboard.h
src/movegen.cpp
src/movepick.cpp
src/position.cpp
src/search.cpp
src/types.h

index 510d305..0eb3b98 100644 (file)
@@ -53,7 +53,7 @@ namespace {
     WIN     = 4
   };
 
-  inline Result& operator|=(Result& r, Result v) { return r = Result(r | v); }
+  Result& operator|=(Result& r, Result v) { return r = Result(r | v); }
 
   struct KPKPosition {
     KPKPosition() = default;
index f6504aa..f76ed31 100644 (file)
@@ -69,7 +69,7 @@ namespace {
   // bsf_index() returns the index into BSFTable[] to look up the bitscan. Uses
   // Matt Taylor's folding for 32 bit case, extended to 64 bit by Kim Walisch.
 
-  FORCE_INLINE unsigned bsf_index(Bitboard b) {
+  unsigned bsf_index(Bitboard b) {
     b ^= b - 1;
     return Is64Bit ? (b * DeBruijn64) >> 58
                    : ((unsigned(b) ^ unsigned(b >> 32)) * DeBruijn32) >> 26;
index aa4e171..f6f1eba 100644 (file)
@@ -231,7 +231,7 @@ template<> inline int distance<Rank>(Square x, Square y) { return distance(rank_
 /// piece of type Pt (bishop or rook) placed on 's'. The helper magic_index()
 /// looks up the index using the 'magic bitboards' approach.
 template<PieceType Pt>
-FORCE_INLINE unsigned magic_index(Square s, Bitboard occupied) {
+inline unsigned magic_index(Square s, Bitboard occupied) {
 
   Bitboard* const Masks  = Pt == ROOK ? RookMasks  : BishopMasks;
   Bitboard* const Magics = Pt == ROOK ? RookMagics : BishopMagics;
@@ -271,13 +271,13 @@ inline Bitboard attacks_bb(Piece pc, Square s, Bitboard occupied) {
 
 #  if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
 
-FORCE_INLINE Square lsb(Bitboard b) {
+inline Square lsb(Bitboard b) {
   unsigned long idx;
   _BitScanForward64(&idx, b);
   return (Square) idx;
 }
 
-FORCE_INLINE Square msb(Bitboard b) {
+inline Square msb(Bitboard b) {
   unsigned long idx;
   _BitScanReverse64(&idx, b);
   return (Square) idx;
@@ -285,28 +285,28 @@ FORCE_INLINE Square msb(Bitboard b) {
 
 #  elif defined(__arm__)
 
-FORCE_INLINE int lsb32(uint32_t v) {
+inline int lsb32(uint32_t v) {
   __asm__("rbit %0, %1" : "=r"(v) : "r"(v));
   return __builtin_clz(v);
 }
 
-FORCE_INLINE Square msb(Bitboard b) {
+inline Square msb(Bitboard b) {
   return (Square) (63 - __builtin_clzll(b));
 }
 
-FORCE_INLINE Square lsb(Bitboard b) {
+inline Square lsb(Bitboard b) {
   return (Square) (uint32_t(b) ? lsb32(uint32_t(b)) : 32 + lsb32(uint32_t(b >> 32)));
 }
 
 #  else // Assumed gcc or compatible compiler
 
-FORCE_INLINE Square lsb(Bitboard b) { // Assembly code by Heinz van Saanen
+inline Square lsb(Bitboard b) { // Assembly code by Heinz van Saanen
   Bitboard idx;
   __asm__("bsfq %1, %0": "=r"(idx): "rm"(b) );
   return (Square) idx;
 }
 
-FORCE_INLINE Square msb(Bitboard b) {
+inline Square msb(Bitboard b) {
   Bitboard idx;
   __asm__("bsrq %1, %0": "=r"(idx): "rm"(b) );
   return (Square) idx;
@@ -324,7 +324,7 @@ Square msb(Bitboard b);
 
 /// pop_lsb() finds and clears the least significant bit in a non-zero bitboard
 
-FORCE_INLINE Square pop_lsb(Bitboard* b) {
+inline Square pop_lsb(Bitboard* b) {
   const Square s = lsb(*b);
   *b &= *b - 1;
   return s;
index 1e14f59..4a0a34e 100644 (file)
@@ -66,7 +66,7 @@ namespace {
 
 
   template<GenType Type, Square Delta>
-  inline ExtMove* make_promotions(ExtMove* moveList, Square to, const CheckInfo* ci) {
+  ExtMove* make_promotions(ExtMove* moveList, Square to, const CheckInfo* ci) {
 
     if (Type == CAPTURES || Type == EVASIONS || Type == NON_EVASIONS)
         *moveList++ = make<PROMOTION>(to - Delta, to, QUEEN);
@@ -219,7 +219,7 @@ namespace {
   }
 
 
-  template<PieceType Pt, bool Checks> FORCE_INLINE
+  template<PieceType Pt, bool Checks>
   ExtMove* generate_moves(const Position& pos, ExtMove* moveList, Color us,
                           Bitboard target, const CheckInfo* ci) {
 
@@ -252,7 +252,7 @@ namespace {
   }
 
 
-  template<Color Us, GenType Type> FORCE_INLINE
+  template<Color Us, GenType Type>
   ExtMove* generate_all(const Position& pos, ExtMove* moveList, Bitboard target,
                         const CheckInfo* ci = nullptr) {
 
index face865..190a30f 100644 (file)
@@ -52,7 +52,7 @@ namespace {
   // pick_best() finds the best move in the range (begin, end) and moves it to
   // the front. It's faster than sorting all the moves in advance when there
   // are few moves e.g. the possible captures.
-  inline Move pick_best(ExtMove* begin, ExtMove* end)
+  Move pick_best(ExtMove* begin, ExtMove* end)
   {
       std::swap(*begin, *std::max_element(begin, end));
       return *begin;
index 5a98821..573b5df 100644 (file)
@@ -58,7 +58,7 @@ Score psq[COLOR_NB][PIECE_TYPE_NB][SQUARE_NB];
 // valuable attacker for the side to move, remove the attacker we just found
 // from the bitboards and scan for new X-ray attacks behind it.
 
-template<int Pt> FORCE_INLINE
+template<int Pt>
 PieceType min_attacker(const Bitboard* bb, const Square& to, const Bitboard& stmAttackers,
                        Bitboard& occupied, Bitboard& attackers) {
 
@@ -78,7 +78,7 @@ PieceType min_attacker(const Bitboard* bb, const Square& to, const Bitboard& stm
   return (PieceType)Pt;
 }
 
-template<> FORCE_INLINE
+template<>
 PieceType min_attacker<KING>(const Bitboard*, const Square&, const Bitboard&, Bitboard&, Bitboard&) {
   return KING; // No need to update bitboards: it is the last cycle
 }
index 9f42bab..2149df2 100644 (file)
@@ -66,14 +66,14 @@ namespace {
   enum NodeType { Root, PV, NonPV };
 
   // Razoring and futility margin based on depth
-  inline Value razor_margin(Depth d) { return Value(512 + 32 * d); }
-  inline Value futility_margin(Depth d) { return Value(200 * d); }
+  Value razor_margin(Depth d) { return Value(512 + 32 * d); }
+  Value futility_margin(Depth d) { return Value(200 * d); }
 
   // Futility and reductions lookup tables, initialized at startup
   int FutilityMoveCounts[2][16];  // [improving][depth]
   Depth Reductions[2][2][64][64]; // [pv][improving][depth][moveNumber]
 
-  template <bool PvNode> inline Depth reduction(bool i, Depth d, int mn) {
+  template <bool PvNode> Depth reduction(bool i, Depth d, int mn) {
     return Reductions[PvNode][i][std::min(d, 63 * ONE_PLY)][std::min(mn, 63)];
   }
 
index eebd69e..5fe7339 100644 (file)
 #  define pext(b, m) (0)
 #endif
 
-#ifdef _MSC_VER
-#  define FORCE_INLINE  __forceinline
-#elif defined(__GNUC__)
-#  define FORCE_INLINE  inline __attribute__((always_inline))
-#else
-#  define FORCE_INLINE  inline
-#endif
-
 #ifdef USE_POPCNT
 const bool HasPopCnt = true;
 #else