Skip to content

Commit 8c2ee56

Browse files
committed
Fix x86 32bit builds
1 parent 94c7d28 commit 8c2ee56

File tree

10 files changed

+110
-95
lines changed

10 files changed

+110
-95
lines changed

src/Makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,13 @@ ifeq ($(COMP),gcc)
7272
CFLAGS += -mx32 -mtune=generic -DUSE_GAS_X64
7373
endif
7474
ifeq ($(ARCH),x86-sse)
75-
CFLAGS += -m32 -march=pentium-m -mfpmath=sse -DUSE_GAS_X86 -DUSE_GAS_MMX -DhasSSE2
75+
CFLAGS += -m32 -march=pentium-m -mfpmath=sse -DUSE_GAS_X86 -DhasSSE2
7676
ifeq ($(BUILD),optimize)
7777
CFLAGS += -fomit-frame-pointer
7878
endif
7979
endif
8080
ifeq ($(ARCH),x86)
81-
CFLAGS += -m32 -march=i386 -mtune=generic -DUSE_GAS_X86 -DUSE_GAS_MMX
81+
CFLAGS += -m32 -march=i386 -mtune=generic -DUSE_GAS_X86
8282
ifeq ($(BUILD),optimize)
8383
CFLAGS += -fomit-frame-pointer
8484
endif
@@ -188,7 +188,7 @@ ifeq ($(COMP),clang)
188188
CFLAGS += -m64 -DUSE_GAS_X64
189189
endif
190190
ifeq ($(ARCH),x86)
191-
CFLAGS += -m32 -DUSE_GAS_X86 -DUSE_GAS_MMX
191+
CFLAGS += -m32 -DUSE_GAS_X86
192192
endif
193193
ifeq ($(ARCH),arm)
194194
ifeq ($(BUILD),optimize)

src/NMakefile

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ icc-x64-v4:
6060
icc-x64:
6161
icl $(VC_FLAGS) /GL /D HAS_CPU_64 all.c ws2_32.lib /Fe..\bin\wEdax-x86-64.exe /link /VERSION:4.5
6262

63+
icc-x86-sse:
64+
icl $(VC_FLAGS) /GL /D hasSSE2 /arch:SSE2 all.c ws2_32.lib /Fe..\bin\wEdax-x86-sse.exe
65+
6366
icc-x86:
6467
icl $(VC_FLAGS) /GL /arch:IA32 all.c ws2_32.lib /Fe..\bin\wEdax-x86.exe
6568

@@ -72,8 +75,11 @@ clang-x64-v4:
7275
clang-x64:
7376
clang-cl $(VC_FLAGS) /D HAS_CPU_64 all.c ws2_32.lib /Fe..\bin\wEdax-x86-64.exe /link /VERSION:4.5
7477

78+
clang-x86-sse:
79+
clang-cl -m32 $(VC_FLAGS) /arch:SSE2 /D hasSSE2 all.c ws2_32.lib /Fe..\bin\wEdax-x86-sse.exe
80+
7581
clang-x86:
76-
clang-cl $(VC_FLAGS) /arch:IA32 all.c ws2_32.lib /Fe..\bin\wEdax-x86.exe
82+
clang-cl -m32 $(VC_FLAGS) /arch:IA32 /D USE_GAS_X86 all.c ws2_32.lib /Fe..\bin\wEdax-x86.exe
7783

7884
clang-a64:
7985
# vcvarsamd64_arm64.bat

src/bit.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ void bit_init(void)
133133
PopCnt16[n] = bit_count_32_SWAR(n);
134134
#endif
135135

136-
#if (defined(USE_GAS_MMX) || defined(USE_MSVC_X86)) && !defined(hasSSE2)
136+
#if (defined(USE_GAS_X86) || defined(USE_MSVC_X86)) && !defined(hasSSE2)
137137
init_mmx();
138138
#endif
139139
#if defined(ANDROID) && !defined(__ARM_NEON) && !defined(hasSSE2)

src/bit.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
#include "arm_neon.h"
4444
#endif
4545

46-
#ifdef _MSC_VER
46+
#if defined(_MSC_VER) && (!defined(__clang__) || defined(hasSSE2))
4747
#include <intrin.h>
4848
#ifdef _M_IX86
4949
#define USE_MSVC_X86 1
@@ -354,7 +354,7 @@ extern const unsigned long long NEIGHBOUR[];
354354
#define bit_count_si64(x) ((unsigned char)(PopCnt16[_mm_extract_epi16((x), 0)] + PopCnt16[_mm_extract_epi16((x), 1)] + PopCnt16[_mm_extract_epi16((x), 2)] + PopCnt16[_mm_extract_epi16((x), 3)]))
355355
#endif
356356

357-
#if defined(USE_GAS_MMX) || defined(USE_MSVC_X86)
357+
#if defined(USE_GAS_X86) || defined(USE_MSVC_X86)
358358
#ifndef hasSSE2
359359
extern bool hasSSE2;
360360
#endif
@@ -382,7 +382,7 @@ typedef union {
382382
__m128d d2; // used in flip_carry_sse_32.c
383383
#endif
384384
}
385-
#if defined(__GNUC__) && !defined(hasSSE2)
385+
#if defined(__GNUC__) || defined(__clang__) // for USE_GAS_X86
386386
__attribute__ ((aligned (16)))
387387
#endif
388388
V2DI;
@@ -429,8 +429,8 @@ typedef union {
429429
#define vectorcall
430430
#endif
431431

432-
// X64 compatibility sims for X86
433-
#if !defined(HAS_CPU_64) && (defined(hasSSE2) || defined(USE_MSVC_X86))
432+
// X64 compatibility sims for X86 (except clang, it has its own)
433+
#if !defined(HAS_CPU_64) && (defined(hasSSE2) || defined(USE_MSVC_X86)) & !defined(__clang__)
434434
static inline __m128i _mm_cvtsi64_si128(const unsigned long long x) {
435435
return _mm_unpacklo_epi32(_mm_cvtsi32_si128(x), _mm_cvtsi32_si128(x >> 32));
436436
}

src/board.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@
6666
/** edge stability global data */
6767
unsigned char edge_stability[256 * 256];
6868

69-
#if (defined(USE_GAS_MMX) || defined(USE_MSVC_X86)) && !defined(hasSSE2)
69+
#if (defined(USE_GAS_X86) || defined(USE_MSVC_X86)) && !defined(hasSSE2)
7070
#include "board_mmx.c"
7171
#endif
72-
#if (defined(USE_GAS_MMX) || defined(USE_MSVC_X86) || defined(hasSSE2) || defined(__ARM_NEON)) && !defined(ANDROID)
72+
#if (defined(USE_GAS_X86) || defined(USE_MSVC_X86) || defined(hasSSE2) || defined(__ARM_NEON)) && !defined(ANDROID)
7373
#include "board_sse.c"
7474
#endif
7575

@@ -598,11 +598,11 @@ unsigned long long get_moves(const unsigned long long P, const unsigned long lon
598598
{
599599
unsigned long long moves, OM;
600600

601-
#if defined(USE_GAS_MMX) || defined(USE_MSVC_X86) || defined(DISPATCH_NEON)
601+
#if defined(USE_GAS_X86) || defined(USE_MSVC_X86) || defined(DISPATCH_NEON)
602602
if (hasSSE2)
603603
return get_moves_sse(P, O);
604604
#endif
605-
#if defined(USE_GAS_MMX) || defined(USE_MSVC_X86)
605+
#if defined(USE_GAS_X86) || defined(USE_MSVC_X86)
606606
if (hasMMX)
607607
return get_moves_mmx(P, O);
608608
#endif

src/board.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ char* board_to_FEN(const Board*, const int, char*);
8080
bool board_is_pass(const Board*);
8181
bool board_is_game_over(const Board*);
8282
int board_count_empties(const Board *board);
83-
#if defined(USE_GAS_MMX) || defined(USE_MSVC_X86)
83+
#if defined(USE_GAS_X86) || defined(USE_MSVC_X86)
8484
void init_mmx (void);
8585
unsigned long long get_moves_mmx(const unsigned long long, const unsigned long long);
8686
unsigned long long get_moves_sse(const unsigned long long, const unsigned long long);
@@ -189,7 +189,7 @@ extern unsigned char edge_stability[256 * 256];
189189
#else
190190
#define board_flip(board,x) flip[x]((unsigned int)((board)->player), ((unsigned int *) &(board)->player)[1], (unsigned int)((board)->opponent), ((unsigned int *) &(board)->opponent)[1])
191191
#endif
192-
#if !defined(hasSSE2) && (defined(USE_GAS_MMX) || defined(USE_MSVC_X86))
192+
#if !defined(hasSSE2) && (defined(USE_GAS_X86) || defined(USE_MSVC_X86))
193193
extern void init_flip_sse(void);
194194
#endif
195195

src/board_mmx.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
#include "board.h"
1717
#include "move.h"
1818

19-
#ifdef USE_GAS_MMX
19+
#ifdef USE_GAS_X86
2020
#ifndef hasMMX
2121
#pragma GCC push_options
2222
#pragma GCC target ("mmx")
@@ -307,7 +307,7 @@ unsigned long long get_moves_mmx(const unsigned long long P, const unsigned long
307307
*
308308
*/
309309
#ifdef hasMMX
310-
static void get_full_lines(const unsigned long long disc_, unsigned long long full[4])
310+
void get_full_lines(const unsigned long long disc_, unsigned long long full[4])
311311
{
312312
__m64 disc = *(__m64 *) &disc_;
313313
__m64 full_l, full_r;
@@ -409,6 +409,6 @@ int get_stability(const unsigned long long P, const unsigned long long O)
409409
}
410410
#endif // hasMMX
411411

412-
#if !defined(hasMMX) && defined(USE_GAS_MMX)
412+
#if !defined(hasMMX) && defined(USE_GAS_X86)
413413
#pragma GCC pop_options
414414
#endif

src/eval.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ static const CoordinateToFeature EVAL_X2F[] = {
170170
};
171171

172172
#endif
173-
#if defined(VECTOR_EVAL_UPDATE) || defined(hasSSE2) || defined(__ARM_NEON) || defined(DISPATCH_NEON) || defined(USE_GAS_MMX) || defined(USE_MSVC_X86)
173+
#if defined(VECTOR_EVAL_UPDATE) || defined(hasSSE2) || defined(__ARM_NEON) || defined(DISPATCH_NEON) || defined(USE_GAS_X86) || defined(USE_MSVC_X86)
174174

175175
const EVAL_FEATURE_V EVAL_FEATURE[65] = {
176176
{{ // a1
@@ -725,7 +725,7 @@ void eval_close(void)
725725

726726
#ifdef ANDROID
727727
extern void eval_update_sse(int x, unsigned long long f, Eval *eval_out, const Eval *eval_in);
728-
#elif defined(hasSSE2) || defined(__ARM_NEON) || defined(USE_GAS_MMX) || defined(USE_MSVC_X86)
728+
#elif defined(hasSSE2) || defined(__ARM_NEON) || defined(USE_GAS_X86) || defined(USE_MSVC_X86)
729729
#include "eval_sse.c"
730730
#endif
731731

@@ -878,7 +878,7 @@ void eval_update(int x, unsigned long long f, Eval *eval)
878878
{
879879
assert(f);
880880

881-
#if defined(USE_GAS_MMX) || defined(USE_MSVC_X86) || defined(DISPATCH_NEON)
881+
#if defined(USE_GAS_X86) || defined(USE_MSVC_X86) || defined(DISPATCH_NEON)
882882
if (hasSSE2) {
883883
eval_update_sse(x, f, eval, eval);
884884
return;
@@ -892,7 +892,7 @@ void eval_update(int x, unsigned long long f, Eval *eval)
892892

893893
void eval_update_leaf(int x, unsigned long long f, Eval *eval_out, const Eval *eval_in)
894894
{
895-
#if defined(USE_GAS_MMX) || defined(USE_MSVC_X86) || defined(DISPATCH_NEON)
895+
#if defined(USE_GAS_X86) || defined(USE_MSVC_X86) || defined(DISPATCH_NEON)
896896
if (hasSSE2) {
897897
eval_update_sse(x, f, eval_out, eval_in);
898898
return;

0 commit comments

Comments
 (0)