Fix 32bit x86 builds and add workaround for x86_64 miscompilations by gcc 4.6 (including our Travis setup)tags/v0.3.13^2
| @@ -211,44 +211,48 @@ matrix: | |||
| - &test-macos | |||
| os: osx | |||
| osx_image: xcode10.1 | |||
| osx_image: xcode11.5 | |||
| before_script: | |||
| - COMMON_FLAGS="DYNAMIC_ARCH=1 NUM_THREADS=32" | |||
| - brew update | |||
| - brew install gcc@8 # for gfortran | |||
| script: | |||
| - travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE | |||
| env: | |||
| - BTYPE="TARGET=NEHALEM BINARY=64 INTERFACE64=1 FC=gfortran-8" | |||
| - BTYPE="TARGET=NEHALEM BINARY=64 INTERFACE64=1 FC=gfortran-9" | |||
| - <<: *test-macos | |||
| osx_image: xcode12 | |||
| before_script: | |||
| - COMMON_FLAGS="DYNAMIC_ARCH=1 NUM_THREADS=32" | |||
| - brew update | |||
| - brew install gcc@10 # for gfortran | |||
| - brew install gcc@10 | |||
| script: | |||
| - travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE | |||
| env: | |||
| - BTYPE="TARGET=NEHALEM BINARY=64 INTERFACE64=1 FC=gfortran-10" | |||
| - <<: *test-macos | |||
| osx_image: xcode10.0 | |||
| env: | |||
| - BTYPE="TARGET=NEHALEM BINARY=32 NOFORTRAN=1" | |||
| # - <<: *test-macos | |||
| # osx_image: xcode10 | |||
| # env: | |||
| # - BTYPE="TARGET=NEHALEM BINARY=32 NOFORTRAN=1" | |||
| - <<: *test-macos | |||
| osx_image: xcode10.1 | |||
| osx_image: xcode11.5 | |||
| before_script: | |||
| - COMMON_FLAGS="DYNAMIC_ARCH=1 NUM_THREADS=32" | |||
| - brew update | |||
| env: | |||
| - CC="/Applications/Xcode-10.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" | |||
| - 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" | |||
| # - CC="/Applications/Xcode-10.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" | |||
| # - 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" | |||
| - CC="/Applications/Xcode-11.5.GM.Seed.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" | |||
| - 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" | |||
| - BTYPE="TARGET=ARMV8 BINARY=64 HOSTCC=clang NOFORTRAN=1" | |||
| - <<: *test-macos | |||
| osx_image: xcode10.1 | |||
| osx_image: xcode11.5 | |||
| env: | |||
| - CC="/Applications/Xcode-10.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" | |||
| - 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" | |||
| # - CC="/Applications/Xcode-10.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" | |||
| # - 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" | |||
| - CC="/Applications/Xcode-11.5.GM.Seed.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" | |||
| - 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" | |||
| - BTYPE="TARGET=ARMV7 HOSTCC=clang NOFORTRAN=1" | |||
| - &test-graviton2 | |||
| @@ -1561,6 +1561,7 @@ export KERNELDIR | |||
| export FUNCTION_PROFILE | |||
| export TARGET_CORE | |||
| export NO_AVX512 | |||
| export NO_AVX2 | |||
| export BUILD_BFLOAT16 | |||
| export SBGEMM_UNROLL_M | |||
| @@ -59,9 +59,11 @@ LIBATLAS = -L$(ATLASPATH)/32 -lcblas -lf77blas -latlas -lm | |||
| else | |||
| LIBATLAS = -L$(ATLASPATH)/32 -lptf77blas -lptatlas -lpthread -lm | |||
| endif | |||
| ifdef HAVE_SSE2 | |||
| CCOMMON_OPT += -msse2 | |||
| FCOMMON_OPT += -msse2 | |||
| endif | |||
| ifdef HAVE_SSE3 | |||
| ifndef DYNAMIC_ARCH | |||
| CCOMMON_OPT += -msse3 | |||
| FCOMMON_OPT += -msse3 | |||
| ifdef HAVE_SSSE3 | |||
| @@ -73,5 +75,4 @@ CCOMMON_OPT += -msse4.1 | |||
| FCOMMON_OPT += -msse4.1 | |||
| endif | |||
| endif | |||
| endif | |||
| @@ -20,18 +20,24 @@ ifdef HAVE_SSE4_1 | |||
| CCOMMON_OPT += -msse4.1 | |||
| FCOMMON_OPT += -msse4.1 | |||
| endif | |||
| ifndef OLDGCC | |||
| ifdef HAVE_AVX | |||
| CCOMMON_OPT += -mavx | |||
| FCOMMON_OPT += -mavx | |||
| endif | |||
| endif | |||
| ifndef NO_AVX2 | |||
| ifdef HAVE_AVX2 | |||
| CCOMMON_OPT += -mavx2 | |||
| FCOMMON_OPT += -mavx2 | |||
| endif | |||
| endif | |||
| ifndef OLDGCC | |||
| ifdef HAVE_FMA3 | |||
| CCOMMON_OPT += -mfma | |||
| FCOMMON_OPT += -mfma | |||
| endif | |||
| endif | |||
| ifeq ($(CORE), SKYLAKEX) | |||
| ifndef DYNAMIC_ARCH | |||
| @@ -276,6 +276,15 @@ if ($data =~ /HAVE_C11/) { | |||
| } | |||
| } | |||
| if ($compiler eq "GCC" &&( ($architecture eq "x86") || ($architecture eq "x86_64"))) { | |||
| $no_avx2 = 0; | |||
| $oldgcc = 0; | |||
| $data = `$compiler_name -dumpversion`; | |||
| if ($data <= 4.6) { | |||
| $no_avx2 = 1; | |||
| $oldgcc = 1; | |||
| } | |||
| } | |||
| $data = `$compiler_name $flags -S ctest1.c && grep globl ctest1.s | head -n 1 && rm -f ctest1.s`; | |||
| @@ -368,6 +377,8 @@ print MAKEFILE "CEXTRALIB=$linker_L $linker_l $linker_a\n"; | |||
| print MAKEFILE "HAVE_MSA=1\n" if $have_msa eq 1; | |||
| print MAKEFILE "MSA_FLAGS=$msa_flags\n" if $have_msa eq 1; | |||
| print MAKEFILE "NO_AVX512=1\n" if $no_avx512 eq 1; | |||
| print MAKEFILE "NO_AVX2=1\n" if $no_avx2 eq 1; | |||
| print MAKEFILE "OLDGCC=1\n" if $oldgcc eq 1; | |||
| $os =~ tr/[a-z]/[A-Z]/; | |||
| $architecture =~ tr/[a-z]/[A-Z]/; | |||
| @@ -326,6 +326,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| #define FORCE | |||
| #define FORCE_INTEL | |||
| #define ARCHITECTURE "X86" | |||
| #ifdef NO_AVX2 | |||
| #define SUBARCHITECTURE "SANDYBRIDGE" | |||
| #define ARCHCONFIG "-DSANDYBRIDGE " \ | |||
| "-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=64 " \ | |||
| "-DL2_SIZE=262144 -DL2_LINESIZE=64 " \ | |||
| "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 " \ | |||
| "-DHAVE_CMOV -DHAVE_MMX -DHAVE_SSE -DHAVE_SSE2 -DHAVE_SSE3 -DHAVE_SSSE3 -DHAVE_SSE4_1 -DHAVE_SSE4_2 -DHAVE_AVX" | |||
| #define LIBNAME "sandybridge" | |||
| #define CORENAME "SANDYBRIDGE" | |||
| #else | |||
| #define SUBARCHITECTURE "HASWELL" | |||
| #define ARCHCONFIG "-DHASWELL " \ | |||
| "-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. | |||
| #define LIBNAME "haswell" | |||
| #define CORENAME "HASWELL" | |||
| #endif | |||
| #endif | |||
| #ifdef FORCE_SKYLAKEX | |||
| #ifdef NO_AVX512 | |||
| @@ -551,6 +562,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| #define FORCE | |||
| #define FORCE_INTEL | |||
| #define ARCHITECTURE "X86" | |||
| #ifdef NO_AVX2 | |||
| #define SUBARCHITECTURE "SANDYBRIDGE" | |||
| #define ARCHCONFIG "-DSANDYBRIDGE " \ | |||
| "-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=64 " \ | |||
| "-DL2_SIZE=262144 -DL2_LINESIZE=64 " \ | |||
| "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 " \ | |||
| "-DHAVE_CMOV -DHAVE_MMX -DHAVE_SSE -DHAVE_SSE2 -DHAVE_SSE3 -DHAVE_SSSE3 -DHAVE_SSE4_1 -DHAVE_SSE4_2 -DHAVE_AVX" | |||
| #define LIBNAME "sandybridge" | |||
| #define CORENAME "SANDYBRIDGE" | |||
| #else | |||
| #define SUBARCHITECTURE "ZEN" | |||
| #define ARCHCONFIG "-DZEN " \ | |||
| "-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. | |||
| #define LIBNAME "zen" | |||
| #define CORENAME "ZEN" | |||
| #endif | |||
| #endif | |||
| #ifdef FORCE_SSE_GENERIC | |||