Skip to content

Commit 66302b3

Browse files
authored
Merge pull request #3013 from martin-frbg/gcc46
Fix 32bit x86 builds and add workaround for x86_64 miscompilations by gcc 4.6 (including our Travis setup)
2 parents 07e9a12 + a6692dc commit 66302b3

File tree

6 files changed

+64
-19
lines changed

6 files changed

+64
-19
lines changed

.travis.yml

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -211,44 +211,48 @@ matrix:
211211

212212
- &test-macos
213213
os: osx
214-
osx_image: xcode10.1
214+
osx_image: xcode11.5
215215
before_script:
216216
- COMMON_FLAGS="DYNAMIC_ARCH=1 NUM_THREADS=32"
217-
- brew update
218-
- brew install gcc@8 # for gfortran
219217
script:
220218
- travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
221219
env:
222-
- BTYPE="TARGET=NEHALEM BINARY=64 INTERFACE64=1 FC=gfortran-8"
220+
- BTYPE="TARGET=NEHALEM BINARY=64 INTERFACE64=1 FC=gfortran-9"
223221

224222
- <<: *test-macos
225223
osx_image: xcode12
226224
before_script:
227225
- COMMON_FLAGS="DYNAMIC_ARCH=1 NUM_THREADS=32"
228226
- brew update
229-
- brew install gcc@10 # for gfortran
227+
- brew install gcc@10
230228
script:
231229
- travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
232230
env:
233231
- BTYPE="TARGET=NEHALEM BINARY=64 INTERFACE64=1 FC=gfortran-10"
234232

235-
- <<: *test-macos
236-
osx_image: xcode10.0
237-
env:
238-
- BTYPE="TARGET=NEHALEM BINARY=32 NOFORTRAN=1"
233+
# - <<: *test-macos
234+
# osx_image: xcode10
235+
# env:
236+
# - BTYPE="TARGET=NEHALEM BINARY=32 NOFORTRAN=1"
239237

240238
- <<: *test-macos
241-
osx_image: xcode10.1
239+
osx_image: xcode11.5
240+
before_script:
241+
- COMMON_FLAGS="DYNAMIC_ARCH=1 NUM_THREADS=32"
242+
- brew update
242243
env:
243-
- CC="/Applications/Xcode-10.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
244-
- CFLAGS="-O2 -Wno-macro-redefined -isysroot /Applications/Xcode-10.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.1.sdk -arch arm64 -miphoneos-version-min=10.0"
244+
# - CC="/Applications/Xcode-10.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
245+
# - CFLAGS="-O2 -Wno-macro-redefined -isysroot /Applications/Xcode-10.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.1.sdk -arch arm64 -miphoneos-version-min=10.0"
246+
- CC="/Applications/Xcode-11.5.GM.Seed.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
247+
- CFLAGS="-O2 -Wno-macro-redefined -isysroot /Applications/Xcode-11.5.GM.Seed.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.5.sdk -arch arm64 -miphoneos-version-min=10.0"
245248
- BTYPE="TARGET=ARMV8 BINARY=64 HOSTCC=clang NOFORTRAN=1"
246-
247249
- <<: *test-macos
248-
osx_image: xcode10.1
250+
osx_image: xcode11.5
249251
env:
250-
- CC="/Applications/Xcode-10.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
251-
- CFLAGS="-O2 -mno-thumb -Wno-macro-redefined -isysroot /Applications/Xcode-10.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.1.sdk -arch armv7 -miphoneos-version-min=5.1"
252+
# - CC="/Applications/Xcode-10.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
253+
# - CFLAGS="-O2 -mno-thumb -Wno-macro-redefined -isysroot /Applications/Xcode-10.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.1.sdk -arch armv7 -miphoneos-version-min=5.1"
254+
- CC="/Applications/Xcode-11.5.GM.Seed.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
255+
- CFLAGS="-O2 -mno-thumb -Wno-macro-redefined -isysroot /Applications/Xcode-11.5.GM.Seed.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.5.sdk -arch armv7 -miphoneos-version-min=5.1"
252256
- BTYPE="TARGET=ARMV7 HOSTCC=clang NOFORTRAN=1"
253257

254258
- &test-graviton2

Makefile.system

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1561,6 +1561,7 @@ export KERNELDIR
15611561
export FUNCTION_PROFILE
15621562
export TARGET_CORE
15631563
export NO_AVX512
1564+
export NO_AVX2
15641565
export BUILD_BFLOAT16
15651566

15661567
export SBGEMM_UNROLL_M

Makefile.x86

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,11 @@ LIBATLAS = -L$(ATLASPATH)/32 -lcblas -lf77blas -latlas -lm
5959
else
6060
LIBATLAS = -L$(ATLASPATH)/32 -lptf77blas -lptatlas -lpthread -lm
6161
endif
62-
62+
ifdef HAVE_SSE2
63+
CCOMMON_OPT += -msse2
64+
FCOMMON_OPT += -msse2
65+
endif
6366
ifdef HAVE_SSE3
64-
ifndef DYNAMIC_ARCH
6567
CCOMMON_OPT += -msse3
6668
FCOMMON_OPT += -msse3
6769
ifdef HAVE_SSSE3
@@ -73,5 +75,4 @@ CCOMMON_OPT += -msse4.1
7375
FCOMMON_OPT += -msse4.1
7476
endif
7577
endif
76-
endif
7778

Makefile.x86_64

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,24 @@ ifdef HAVE_SSE4_1
2020
CCOMMON_OPT += -msse4.1
2121
FCOMMON_OPT += -msse4.1
2222
endif
23+
ifndef OLDGCC
2324
ifdef HAVE_AVX
2425
CCOMMON_OPT += -mavx
2526
FCOMMON_OPT += -mavx
2627
endif
28+
endif
29+
ifndef NO_AVX2
2730
ifdef HAVE_AVX2
2831
CCOMMON_OPT += -mavx2
2932
FCOMMON_OPT += -mavx2
3033
endif
34+
endif
35+
ifndef OLDGCC
3136
ifdef HAVE_FMA3
3237
CCOMMON_OPT += -mfma
3338
FCOMMON_OPT += -mfma
3439
endif
40+
endif
3541

3642
ifeq ($(CORE), SKYLAKEX)
3743
ifndef DYNAMIC_ARCH

c_check

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,15 @@ if ($data =~ /HAVE_C11/) {
276276
}
277277
}
278278

279+
if ($compiler eq "GCC" &&( ($architecture eq "x86") || ($architecture eq "x86_64"))) {
280+
$no_avx2 = 0;
281+
$oldgcc = 0;
282+
$data = `$compiler_name -dumpversion`;
283+
if ($data <= 4.6) {
284+
$no_avx2 = 1;
285+
$oldgcc = 1;
286+
}
287+
}
279288

280289
$data = `$compiler_name $flags -S ctest1.c && grep globl ctest1.s | head -n 1 && rm -f ctest1.s`;
281290

@@ -368,6 +377,8 @@ print MAKEFILE "CEXTRALIB=$linker_L $linker_l $linker_a\n";
368377
print MAKEFILE "HAVE_MSA=1\n" if $have_msa eq 1;
369378
print MAKEFILE "MSA_FLAGS=$msa_flags\n" if $have_msa eq 1;
370379
print MAKEFILE "NO_AVX512=1\n" if $no_avx512 eq 1;
380+
print MAKEFILE "NO_AVX2=1\n" if $no_avx2 eq 1;
381+
print MAKEFILE "OLDGCC=1\n" if $oldgcc eq 1;
371382

372383
$os =~ tr/[a-z]/[A-Z]/;
373384
$architecture =~ tr/[a-z]/[A-Z]/;

getarch.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
326326
#define FORCE
327327
#define FORCE_INTEL
328328
#define ARCHITECTURE "X86"
329+
#ifdef NO_AVX2
330+
#define SUBARCHITECTURE "SANDYBRIDGE"
331+
#define ARCHCONFIG "-DSANDYBRIDGE " \
332+
"-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=64 " \
333+
"-DL2_SIZE=262144 -DL2_LINESIZE=64 " \
334+
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 " \
335+
"-DHAVE_CMOV -DHAVE_MMX -DHAVE_SSE -DHAVE_SSE2 -DHAVE_SSE3 -DHAVE_SSSE3 -DHAVE_SSE4_1 -DHAVE_SSE4_2 -DHAVE_AVX"
336+
#define LIBNAME "sandybridge"
337+
#define CORENAME "SANDYBRIDGE"
338+
#else
329339
#define SUBARCHITECTURE "HASWELL"
330340
#define ARCHCONFIG "-DHASWELL " \
331341
"-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=64 " \
@@ -336,6 +346,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
336346
#define LIBNAME "haswell"
337347
#define CORENAME "HASWELL"
338348
#endif
349+
#endif
339350

340351
#ifdef FORCE_SKYLAKEX
341352
#ifdef NO_AVX512
@@ -551,6 +562,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
551562
#define FORCE
552563
#define FORCE_INTEL
553564
#define ARCHITECTURE "X86"
565+
#ifdef NO_AVX2
566+
#define SUBARCHITECTURE "SANDYBRIDGE"
567+
#define ARCHCONFIG "-DSANDYBRIDGE " \
568+
"-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=64 " \
569+
"-DL2_SIZE=262144 -DL2_LINESIZE=64 " \
570+
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 " \
571+
"-DHAVE_CMOV -DHAVE_MMX -DHAVE_SSE -DHAVE_SSE2 -DHAVE_SSE3 -DHAVE_SSSE3 -DHAVE_SSE4_1 -DHAVE_SSE4_2 -DHAVE_AVX"
572+
#define LIBNAME "sandybridge"
573+
#define CORENAME "SANDYBRIDGE"
574+
#else
554575
#define SUBARCHITECTURE "ZEN"
555576
#define ARCHCONFIG "-DZEN " \
556577
"-DL1_CODE_SIZE=32768 -DL1_CODE_LINESIZE=64 -DL1_CODE_ASSOCIATIVE=8 " \
@@ -565,6 +586,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
565586
#define LIBNAME "zen"
566587
#define CORENAME "ZEN"
567588
#endif
589+
#endif
568590

569591

570592
#ifdef FORCE_SSE_GENERIC

0 commit comments

Comments
 (0)