Skip to content

Commit 31297bf

Browse files
committed
Fix MOVE_GENERATOR_SSE_ACEPCK build
1 parent df44a3a commit 31297bf

4 files changed

Lines changed: 19 additions & 11 deletions

File tree

src/bit.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*
44
* Bitwise operations header file.
55
*
6-
* @date 1998 - 2025
6+
* @date 1998 - 2026
77
* @author Richard Delorme
88
* @author Toshihiko Okuhara
99
* @version 4.5

src/board.h

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -182,13 +182,20 @@ extern unsigned char edge_stability[256 * 256];
182182
#endif
183183
#endif
184184

185-
#if (MOVE_GENERATOR >= MOVE_GENERATOR_SSE_ACEPCK) && (MOVE_GENERATOR <= MOVE_GENERATOR_AVX512)
185+
#if (MOVE_GENERATOR >= MOVE_GENERATOR_AVX) && (MOVE_GENERATOR <= MOVE_GENERATOR_AVX512)
186186
extern __m128i vectorcall mm_Flip(const __m128i OP, int pos);
187187
static inline __m128i vectorcall reduce_vflip(__m128i flip) { return _mm_or_si128(flip, _mm_shuffle_epi32(flip, 0x4e)); }
188188
#define Flip(x,P,O) ((unsigned long long) _mm_cvtsi128_si64(reduce_vflip(mm_Flip(_mm_set_epi64x((O), (P)), (x)))))
189189
#define board_flip(board,x) ((unsigned long long) _mm_cvtsi128_si64(reduce_vflip(mm_Flip(_mm_loadu_si128((__m128i *) (board)), (x)))))
190190
#define vboard_flip(board,x) ((unsigned long long) _mm_cvtsi128_si64(reduce_vflip(mm_Flip((board).v2, (x)))))
191191

192+
#elif MOVE_GENERATOR == MOVE_GENERATOR_SSE_ACEPCK
193+
extern __m128i vectorcall mm_Flip(const __m128i OP, int pos);
194+
#define reduce_vflip(x) (x)
195+
#define Flip(x,P,O) ((unsigned long long) _mm_cvtsi128_si64(mm_Flip(_mm_set_epi64x((O), (P)), (x))))
196+
#define board_flip(board,x) ((unsigned long long) _mm_cvtsi128_si64(mm_Flip(_mm_loadu_si128((__m128i *) (board)), (x))))
197+
#define vboard_flip(board,x) ((unsigned long long) _mm_cvtsi128_si64(mm_Flip((board).v2, (x))))
198+
192199
#elif MOVE_GENERATOR == MOVE_GENERATOR_SSE
193200
extern __m128i (vectorcall *mm_flip[BOARD_SIZE + 2])(const __m128i);
194201
#define Flip(x,P,O) ((unsigned long long) _mm_cvtsi128_si64(mm_flip[x](_mm_set_epi64x((O), (P)))))
@@ -221,14 +228,13 @@ extern unsigned char edge_stability[256 * 256];
221228
extern void init_flip_sse(void);
222229
#endif
223230

224-
#else
225-
#if MOVE_GENERATOR == MOVE_GENERATOR_SSE_BSWAP
231+
#elif MOVE_GENERATOR == MOVE_GENERATOR_SSE_BSWAP
226232
extern unsigned long long Flip(int, unsigned long long, unsigned long long);
227-
#else
233+
#define board_flip(board,x) Flip((x), (board)->player, (board)->opponent)
234+
235+
#else
228236
extern unsigned long long (*flip[BOARD_SIZE + 2])(const unsigned long long, const unsigned long long);
229237
#define Flip(x,P,O) flip[x]((P), (O))
230-
#endif
231-
232238
#define board_flip(board,x) Flip((x), (board)->player, (board)->opponent)
233239
#endif
234240

src/flip_sse_acepck.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* Unifiled SSE version using carry propagation by acepck.
77
* https://github.com/okuhara/edax-reversi-AVX/issues/5
88
*
9-
* @date 2024
9+
* @date 2026
1010
* @author acepck
1111
* @author Toshihiko Okuhara
1212
* @version 4.5
@@ -89,7 +89,7 @@ static const V2DI bb_maska[66][4] = {
8989
* @param pos player's move.
9090
* @param P player's disc pattern.
9191
* @param O opponent's disc pattern.
92-
* @return flipped disc pattern before reduction.
92+
* @return flipped disc pattern.
9393
*/
9494

9595
__m128i vectorcall mm_Flip(__m128i OP, int pos)
@@ -141,5 +141,6 @@ __m128i vectorcall mm_Flip(__m128i OP, int pos)
141141
// set flip bits if pos is the break point
142142
f3 = _mm_subs_epu8(_mm_and_si128(_mm_add_epi8(OO, f3), _mm_unpacklo_epi64(m34, m34)), f3);
143143

144-
return _mm_or_si128(_mm_or_si128(_mm_or_si128(f3, f4), _mm_or_si128(f27, f56)), f01);
144+
f3 = _mm_or_si128(_mm_or_si128(_mm_or_si128(f3, f4), _mm_or_si128(f27, f56)), f01);
145+
return _mm_or_si128(f3, _mm_shuffle_epi32(f3, 0x4e));
145146
}

src/settings.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*
44
* Various macro / constants to control algorithm usage.
55
*
6-
* @date 1998 - 2024
6+
* @date 1998 - 2026
77
* @author Richard Delorme
88
* @version 4.5
99
*/
@@ -74,6 +74,7 @@
7474

7575
/** SOLID usage */
7676
#define USE_SOLID true
77+
7778
/** use stability cutoff more often to work best with solid stone */
7879
#define NWS_STABILITY_SOLID_THRESHOLD 8
7980

0 commit comments

Comments
 (0)