Mercurial > hg > sv-dependency-builds
diff src/fftw-3.3.8/m4/ax_cc_maxopt.m4 @ 82:d0c2a83c1364
Add FFTW 3.3.8 source, and a Linux build
author | Chris Cannam |
---|---|
date | Tue, 19 Nov 2019 14:52:55 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/fftw-3.3.8/m4/ax_cc_maxopt.m4 Tue Nov 19 14:52:55 2019 +0000 @@ -0,0 +1,128 @@ +dnl @synopsis AX_CC_MAXOPT +dnl @summary turn on optimization flags for the C compiler +dnl @category C +dnl +dnl Try to turn on "good" C optimization flags for various compilers +dnl and architectures, for some definition of "good". (In our case, +dnl good for FFTW and hopefully for other scientific codes. Modify +dnl as needed.) +dnl +dnl The user can override the flags by setting the CFLAGS environment +dnl variable. +dnl +dnl Note also that the flags assume that ANSI C aliasing rules are +dnl followed by the code (e.g. for gcc's -fstrict-aliasing), and that +dnl floating-point computations can be re-ordered as needed. +dnl +dnl Requires macros: AX_CHECK_COMPILER_FLAGS, AX_COMPILER_VENDOR, +dnl +dnl @version 2011-06-22 +dnl @license GPLWithACException +dnl @author Steven G. Johnson <stevenj@alum.mit.edu> and Matteo Frigo. +AC_DEFUN([AX_CC_MAXOPT], +[ +AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([AX_COMPILER_VENDOR]) +AC_REQUIRE([AC_CANONICAL_HOST]) + +# Try to determine "good" native compiler flags if none specified via CFLAGS +if test "$ac_test_CFLAGS" != "set"; then + CFLAGS="" + case $ax_cv_c_compiler_vendor in + dec) CFLAGS="-newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host" + ;; + + sun) CFLAGS="-native -fast -xO5 -dalign" + ;; + + hp) CFLAGS="+Oall +Optrs_ansi +DSnative" + ;; + + ibm) xlc_opt="-qarch=auto -qtune=auto" + AX_CHECK_COMPILER_FLAGS($xlc_opt, + CFLAGS="-O3 -qalias=ansi -w $xlc_opt", + [CFLAGS="-O3 -qalias=ansi -w"]) + ;; + + intel) CFLAGS="-O3" + # Intel seems to have changed the spelling of this flag recently + icc_ansi_alias="unknown" + for flag in -ansi-alias -ansi_alias; do + AX_CHECK_COMPILER_FLAGS($flag, [icc_ansi_alias=$flag; break]) + done + if test "x$icc_ansi_alias" != xunknown; then + CFLAGS="$CFLAGS $icc_ansi_alias" + fi + AX_CHECK_COMPILER_FLAGS(-malign-double, CFLAGS="$CFLAGS -malign-double") + # We used to check for architecture flags here, e.g. -xHost etc., + # but these flags are problematic. On icc-12.0.0, "-mavx -xHost" + # overrides -mavx with -xHost, generating SSE2 code instead of AVX + # code. ICC does not seem to support -mtune=host or equivalent + # non-ABI changing flag. + ;; + + clang) + CFLAGS="-O3 -fomit-frame-pointer" + AX_CHECK_COMPILER_FLAGS(-mtune=native, CFLAGS="$CFLAGS -mtune=native") + AX_CHECK_COMPILER_FLAGS(-fstrict-aliasing,CFLAGS="$CFLAGS -fstrict-aliasing") + ;; + + gnu) + # Default optimization flags for gcc on all systems. + # Somehow -O3 does not imply -fomit-frame-pointer on ia32 + CFLAGS="-O3 -fomit-frame-pointer" + + # tune for the host by default + AX_CHECK_COMPILER_FLAGS(-mtune=native, CFLAGS="$CFLAGS -mtune=native") + + # -malign-double for x86 systems + AX_CHECK_COMPILER_FLAGS(-malign-double, CFLAGS="$CFLAGS -malign-double") + + # -fstrict-aliasing for gcc-2.95+ + AX_CHECK_COMPILER_FLAGS(-fstrict-aliasing, + CFLAGS="$CFLAGS -fstrict-aliasing") + + # -fno-schedule-insns is pretty much required on all risc + # processors. + # + # gcc performs one pass of instruction scheduling, then a pass of + # register allocation, then another pass of instruction + # scheduling. The first pass reorders instructions in a way that + # is pretty much the worst possible for the purposes of register + # allocation. We disable the first pass. + AX_CHECK_COMPILER_FLAGS(-fno-schedule-insns, CFLAGS="$CFLAGS -fno-schedule-insns") + + # flags to enable power ISA 2.07 instructions with gcc (always true with vsx) + if test "$have_vsx" = "yes"; then + AX_CHECK_COMPILER_FLAGS(-mcpu=power8, CFLAGS="$CFLAGS -mcpu=power8") + AX_CHECK_COMPILER_FLAGS(-mpower8-fusion, CFLAGS="$CFLAGS -mpower8-fusion") + AX_CHECK_COMPILER_FLAGS(-mpower8-vector, CFLAGS="$CFLAGS -mpower8-vector") + AX_CHECK_COMPILER_FLAGS(-mdirect-move, CFLAGS="$CFLAGS -mdirect-move") + fi + ;; + esac + + if test -z "$CFLAGS"; then + echo "" + echo "********************************************************" + echo "* WARNING: Don't know the best CFLAGS for this system *" + echo "* Use ./configure CFLAGS=... to specify your own flags *" + echo "* (otherwise, a default of CFLAGS=-O3 will be used) *" + echo "********************************************************" + echo "" + CFLAGS="-O3" + fi + + AX_CHECK_COMPILER_FLAGS($CFLAGS, [], [ + echo "" + echo "********************************************************" + echo "* WARNING: The guessed CFLAGS don't seem to work with *" + echo "* your compiler. *" + echo "* Use ./configure CFLAGS=... to specify your own flags *" + echo "********************************************************" + echo "" + CFLAGS="" + ]) + +fi +])