From 7998fa7899a29803ad4512002636332dfee48451 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Fri, 16 Mar 2012 16:07:57 +0100 Subject: Disable use of FMA instructions in branred --- ChangeLog | 16 +++ config.make.in | 1 + configure | 22 +++ configure.in | 9 ++ sysdeps/ieee754/dbl-64/Makefile | 4 + sysdeps/ieee754/ldbl-opt/configure | 161 +++++++++++++++++----- sysdeps/powerpc/configure | 103 ++++++++++++-- sysdeps/powerpc/powerpc32/configure | 114 ++++++++++++--- sysdeps/powerpc/powerpc64/configure | 114 ++++++++++++--- sysdeps/unix/sysv/linux/powerpc/configure | 198 ++++++++++++++++++--------- sysdeps/x86_64/fpu/multiarch/Makefile | 3 +- sysdeps/x86_64/fpu/multiarch/brandred-fma4.c | 4 - sysdeps/x86_64/fpu/multiarch/s_sin-fma4.c | 1 - sysdeps/x86_64/fpu/multiarch/s_tan-fma4.c | 1 - 14 files changed, 595 insertions(+), 156 deletions(-) create mode 100644 sysdeps/ieee754/dbl-64/Makefile delete mode 100644 sysdeps/x86_64/fpu/multiarch/brandred-fma4.c diff --git a/ChangeLog b/ChangeLog index 67e4eccfda..9cbec9c583 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2012-03-21 Andreas Schwab + + * configure.in (libc_cv_cc_nofma): Check for option to disable + generation of FMA instructions. + * configure: Regenerate. + * config.make.in (config-cflags-nofma): Set from libc_cv_cc_nofma. + * sysdeps/ieee754/dbl-64/Makefile: New file. + * sysdeps/x86_64/fpu/multiarch/Makefile (libm-sysdep_routines): + Remove brandred-fma4. + (CFLAGS-brandred-fma4.c): Remove. + * sysdeps/x86_64/fpu/multiarch/brandred-fma4.c: Remove. + * sysdeps/x86_64/fpu/multiarch/s_sin-fma4.c (__branred): Don't + define. + * sysdeps/x86_64/fpu/multiarch/s_tan-fma4.c (__branred): Don't + define. + 2012-03-21 H.J. Lu * stdio-common/_itoa.c: Check _ITOA_NEEDED instead of diff --git a/config.make.in b/config.make.in index 2b9a939e9b..54e83934af 100644 --- a/config.make.in +++ b/config.make.in @@ -38,6 +38,7 @@ config-cflags-sse4 = @libc_cv_cc_sse4@ config-cflags-avx = @libc_cv_cc_avx@ config-cflags-sse2avx = @libc_cv_cc_sse2avx@ config-cflags-novzeroupper = @libc_cv_cc_novzeroupper@ +config-cflags-nofma = @libc_cv_cc_nofma@ config-asflags-i686 = @libc_cv_as_i686@ defines = @DEFINES@ diff --git a/configure b/configure index e131070718..194c4ed984 100755 --- a/configure +++ b/configure @@ -618,6 +618,7 @@ ldd_rewrite_script use_ldconfig libc_cv_sparc_as_vis3 libc_cv_as_i686 +libc_cv_cc_nofma libc_cv_cc_fma4 libc_cv_cc_novzeroupper libc_cv_cc_sse2avx @@ -7035,6 +7036,26 @@ if test "$libc_cv_gcc_tls_model_attr" = no; then as_fn_error $? "support for the tls_model attribute is required" "$LINENO" 5 fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiler option to disable generation of FMA instructions" >&5 +$as_echo_n "checking for compiler option to disable generation of FMA instructions... " >&6; } +if ${libc_cv_cc_nofma+:} false; then : + $as_echo_n "(cached) " >&6 +else + libc_cv_cc_nofma= +for opt in -ffp-contract=off -mno-fused-madd; do + if { ac_try='${CC-cc} $opt -xc /dev/null -S -o /dev/null' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + libc_cv_cc_nofma=$opt; break +fi +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_nofma" >&5 +$as_echo "$libc_cv_cc_nofma" >&6; } + if test -n "$submachine"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiler option for CPU variant" >&5 $as_echo_n "checking for compiler option for CPU variant... " >&6; } @@ -7655,6 +7676,7 @@ fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -fPIC is default" >&5 diff --git a/configure.in b/configure.in index b2fed4bd1c..2363015edb 100644 --- a/configure.in +++ b/configure.in @@ -1992,6 +1992,14 @@ if test "$libc_cv_gcc_tls_model_attr" = no; then AC_MSG_ERROR([support for the tls_model attribute is required]) fi +dnl Determine how to disable generation of FMA instructions. +AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions], + libc_cv_cc_nofma, [dnl +libc_cv_cc_nofma= +for opt in -ffp-contract=off -mno-fused-madd; do + LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break]) +done]) + if test -n "$submachine"; then AC_CACHE_CHECK([for compiler option for CPU variant], libc_cv_cc_submachine, [dnl @@ -2135,6 +2143,7 @@ AC_SUBST(libc_cv_cc_avx) AC_SUBST(libc_cv_cc_sse2avx) AC_SUBST(libc_cv_cc_novzeroupper) AC_SUBST(libc_cv_cc_fma4) +AC_SUBST(libc_cv_cc_nofma) AC_SUBST(libc_cv_as_i686) AC_SUBST(libc_cv_sparc_as_vis3) diff --git a/sysdeps/ieee754/dbl-64/Makefile b/sysdeps/ieee754/dbl-64/Makefile new file mode 100644 index 0000000000..1a7b31158d --- /dev/null +++ b/sysdeps/ieee754/dbl-64/Makefile @@ -0,0 +1,4 @@ +ifeq ($(subdir),math) +# branred depends on precise IEEE double rounding +CFLAGS-branred.c = $(config-cflags-nofma) +endif diff --git a/sysdeps/ieee754/ldbl-opt/configure b/sysdeps/ieee754/ldbl-opt/configure index 065a3c8364..d1f3177cfd 100644 --- a/sysdeps/ieee754/ldbl-opt/configure +++ b/sysdeps/ieee754/ldbl-opt/configure @@ -1,19 +1,135 @@ + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile # This file is generated from configure.in by Autoconf. DO NOT EDIT! # Local configure fragment for sysdeps/ieee754/ldbl-opt/. -{ $as_echo "$as_me:$LINENO: checking whether $CC $CFLAGS supports -mlong-double-128" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC $CFLAGS supports -mlong-double-128" >&5 $as_echo_n "checking whether $CC $CFLAGS supports -mlong-double-128... " >&6; } -if test "${libc_cv_mlong_double_128+set}" = set; then +if ${libc_cv_mlong_double_128+:} false; then : $as_echo_n "(cached) " >&6 else save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -mlong-double-128" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -28,39 +144,16 @@ long double foobar (long double x) { return x; } return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : libc_cv_mlong_double_128=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - libc_cv_mlong_double_128=no + libc_cv_mlong_double_128=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" fi -{ $as_echo "$as_me:$LINENO: result: $libc_cv_mlong_double_128" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mlong_double_128" >&5 $as_echo "$libc_cv_mlong_double_128" >&6; } if test "$libc_cv_mlong_double_128" = no; then - { { $as_echo "$as_me:$LINENO: error: this configuration requires -mlong-double-128 support" >&5 -$as_echo "$as_me: error: this configuration requires -mlong-double-128 support" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "this configuration requires -mlong-double-128 support" "$LINENO" 5 fi diff --git a/sysdeps/powerpc/configure b/sysdeps/powerpc/configure index b347754f35..c3ad67f012 100644 --- a/sysdeps/powerpc/configure +++ b/sysdeps/powerpc/configure @@ -1,10 +1,92 @@ + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + # This file is generated from configure.in by Autoconf. DO NOT EDIT! # Local configure fragment for sysdeps/powerpc. # Accept binutils which knows about ".machine". -{ $as_echo "$as_me:$LINENO: checking for .machine support" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for .machine support" >&5 $as_echo_n "checking for .machine support... " >&6; } -if test "${libc_cv_ppc_machine+set}" = set; then +if ${libc_cv_ppc_machine+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.s <<\EOF @@ -12,27 +94,22 @@ else blr EOF if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 (eval $ac_try) 2>&5 ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then libc_cv_ppc_machine=yes else libc_cv_ppc_machine=no fi rm -f conftest* fi -{ $as_echo "$as_me:$LINENO: result: $libc_cv_ppc_machine" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ppc_machine" >&5 $as_echo "$libc_cv_ppc_machine" >&6; } if test $libc_cv_ppc_machine != yes; then - { { $as_echo "$as_me:$LINENO: error: -*** A binutils version which can handle -*** .machine \"altivec\" -*** is needed." >&5 -$as_echo "$as_me: error: + as_fn_error $? " *** A binutils version which can handle *** .machine \"altivec\" -*** is needed." >&2;} - { (exit 1); exit 1; }; } +*** is needed." "$LINENO" 5 fi diff --git a/sysdeps/powerpc/powerpc32/configure b/sysdeps/powerpc/powerpc32/configure index da8ec0b87c..86ecfdcf4a 100644 --- a/sysdeps/powerpc/powerpc32/configure +++ b/sysdeps/powerpc/powerpc32/configure @@ -1,10 +1,92 @@ + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + # This file is generated from configure.in by Autoconf. DO NOT EDIT! # Local configure fragment for sysdeps/powerpc/powerpc32. # See whether gas has R_PPC_REL16 relocs. -{ $as_echo "$as_me:$LINENO: checking for R_PPC_REL16 gas support" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for R_PPC_REL16 gas support" >&5 $as_echo_n "checking for R_PPC_REL16 gas support... " >&6; } -if test "${libc_cv_ppc_rel16+set}" = set; then +if ${libc_cv_ppc_rel16+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.s <<\EOF @@ -12,50 +94,46 @@ else addis 11,30,_GLOBAL_OFFSET_TABLE_-.@ha EOF if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 (eval $ac_try) 2>&5 ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then libc_cv_ppc_rel16=yes else libc_cv_ppc_rel16=no fi rm -f conftest* fi -{ $as_echo "$as_me:$LINENO: result: $libc_cv_ppc_rel16" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ppc_rel16" >&5 $as_echo "$libc_cv_ppc_rel16" >&6; } if test $libc_cv_ppc_rel16 = no; then - { { $as_echo "$as_me:$LINENO: error: R_PPC_REL16 is not supported. Binutils is too old." >&5 -$as_echo "$as_me: error: R_PPC_REL16 is not supported. Binutils is too old." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "R_PPC_REL16 is not supported. Binutils is too old." "$LINENO" 5 fi # See whether GCC uses -msecure-plt. -{ $as_echo "$as_me:$LINENO: checking for -msecure-plt by default" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -msecure-plt by default" >&5 $as_echo_n "checking for -msecure-plt by default... " >&6; } -if test "${libc_cv_ppc_secure_plt+set}" = set; then +if ${libc_cv_ppc_secure_plt+:} false; then : $as_echo_n "(cached) " >&6 else echo 'int foo (void) { extern int bar; return bar; }' > conftest.c libc_cv_ppc_secure_plt=no if { ac_try='${CC-cc} -S $CFLAGS conftest.c -fpic -o conftest.s 1>&5' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 (eval $ac_try) 2>&5 ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then if grep '_GLOBAL_OFFSET_TABLE_-.*@ha' conftest.s > /dev/null 2>&1; then libc_cv_ppc_secure_plt=yes fi fi rm -rf conftest* fi -{ $as_echo "$as_me:$LINENO: result: $libc_cv_ppc_secure_plt" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ppc_secure_plt" >&5 $as_echo "$libc_cv_ppc_secure_plt" >&6; } if test $libc_cv_ppc_secure_plt = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_PPC_SECURE_PLT 1 -_ACEOF + $as_echo "#define HAVE_PPC_SECURE_PLT 1" >>confdefs.h fi diff --git a/sysdeps/powerpc/powerpc64/configure b/sysdeps/powerpc/powerpc64/configure index a9b6722c11..7cff76141b 100644 --- a/sysdeps/powerpc/powerpc64/configure +++ b/sysdeps/powerpc/powerpc64/configure @@ -1,21 +1,103 @@ + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + # This file is generated from configure.in by Autoconf. DO NOT EDIT! # Local configure fragment for sysdeps/powerpc/powerpc64. # The Aix ld uses global .symbol_names instead of symbol_names # and unfortunately early Linux PPC64 linkers use it as well. -{ $as_echo "$as_me:$LINENO: checking for support for omitting dot symbols" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for support for omitting dot symbols" >&5 $as_echo_n "checking for support for omitting dot symbols... " >&6; } -if test "${libc_cv_omit_dot_syms+set}" = set; then +if ${libc_cv_omit_dot_syms+:} false; then : $as_echo_n "(cached) " >&6 else libc_cv_omit_dot_syms=no echo 'void foo (void) {}' > conftest.c if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c -o conftest.s 1>&5' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 (eval $ac_try) 2>&5 ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then if grep -w '\.foo' conftest.s > /dev/null; then : else @@ -25,28 +107,26 @@ fi rm -f conftest.c conftest.s fi -{ $as_echo "$as_me:$LINENO: result: $libc_cv_omit_dot_syms" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_omit_dot_syms" >&5 $as_echo "$libc_cv_omit_dot_syms" >&6; } if test x$libc_cv_omit_dot_syms != xyes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_ASM_GLOBAL_DOT_NAME 1 -_ACEOF + $as_echo "#define HAVE_ASM_GLOBAL_DOT_NAME 1" >>confdefs.h fi -{ $as_echo "$as_me:$LINENO: checking for linker support for overlapping .opd entries" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker support for overlapping .opd entries" >&5 $as_echo_n "checking for linker support for overlapping .opd entries... " >&6; } -if test "${libc_cv_overlapping_opd+set}" = set; then +if ${libc_cv_overlapping_opd+:} false; then : $as_echo_n "(cached) " >&6 else libc_cv_overlapping_opd=no echo 'void foo (void) {}' > conftest.c if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c -o conftest.s 1>&5' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 (eval $ac_try) 2>&5 ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then if grep '\.TOC\.@tocbase' conftest.s > /dev/null; then if grep '\.TOC\.@tocbase[ ]*,[ ]*0' conftest.s > /dev/null; then : @@ -58,11 +138,9 @@ fi rm -f conftest.c conftest.s fi -{ $as_echo "$as_me:$LINENO: result: $libc_cv_overlapping_opd" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_overlapping_opd" >&5 $as_echo "$libc_cv_overlapping_opd" >&6; } if test x$libc_cv_overlapping_opd = xyes; then - cat >>confdefs.h <<\_ACEOF -#define USE_PPC64_OVERLAPPING_OPD 1 -_ACEOF + $as_echo "#define USE_PPC64_OVERLAPPING_OPD 1" >>confdefs.h fi diff --git a/sysdeps/unix/sysv/linux/powerpc/configure b/sysdeps/unix/sysv/linux/powerpc/configure index df2813d9cd..802b371601 100644 --- a/sysdeps/unix/sysv/linux/powerpc/configure +++ b/sysdeps/unix/sysv/linux/powerpc/configure @@ -1,19 +1,135 @@ + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile # This file is generated from configure.in by Autoconf. DO NOT EDIT! # Local configure fragment for sysdeps/unix/sysv/linux/powerpc/. -{ $as_echo "$as_me:$LINENO: checking whether $CC $CFLAGS -mlong-double-128 uses IBM extended format" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC $CFLAGS -mlong-double-128 uses IBM extended format" >&5 $as_echo_n "checking whether $CC $CFLAGS -mlong-double-128 uses IBM extended format... " >&6; } -if test "${libc_cv_mlong_double_128ibm+set}" = set; then +if ${libc_cv_mlong_double_128ibm+:} false; then : $as_echo_n "(cached) " >&6 else save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -mlong-double-128" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -28,51 +144,26 @@ long double foobar (long double x) { return x; } return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : libc_cv_mlong_double_128ibm=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - libc_cv_mlong_double_128ibm=no + libc_cv_mlong_double_128ibm=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" fi -{ $as_echo "$as_me:$LINENO: result: $libc_cv_mlong_double_128ibm" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mlong_double_128ibm" >&5 $as_echo "$libc_cv_mlong_double_128ibm" >&6; } if test "$libc_cv_mlong_double_128ibm" = no; then - { $as_echo "$as_me:$LINENO: checking whether $CC $CFLAGS supports -mabi=ibmlongdouble" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC $CFLAGS supports -mabi=ibmlongdouble" >&5 $as_echo_n "checking whether $CC $CFLAGS supports -mabi=ibmlongdouble... " >&6; } -if test "${libc_cv_mabi_ibmlongdouble+set}" = set; then +if ${libc_cv_mabi_ibmlongdouble+:} false; then : $as_echo_n "(cached) " >&6 else save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -mlong-double-128 -mabi=ibmlongdouble" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -87,43 +178,20 @@ long double foobar (long double x) { return x; } return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : libc_cv_mabi_ibmlongdouble=yes else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - libc_cv_mabi_ibmlongdouble=no + libc_cv_mabi_ibmlongdouble=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" fi -{ $as_echo "$as_me:$LINENO: result: $libc_cv_mabi_ibmlongdouble" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mabi_ibmlongdouble" >&5 $as_echo "$libc_cv_mabi_ibmlongdouble" >&6; } if test "$libc_cv_mabi_ibmlongdouble" = yes; then CFLAGS="$CFLAGS -mabi=ibmlongdouble" else - { { $as_echo "$as_me:$LINENO: error: this configuration requires -mlong-double-128 IBM extended format support" >&5 -$as_echo "$as_me: error: this configuration requires -mlong-double-128 IBM extended format support" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "this configuration requires -mlong-double-128 IBM extended format support" "$LINENO" 5 fi fi diff --git a/sysdeps/x86_64/fpu/multiarch/Makefile b/sysdeps/x86_64/fpu/multiarch/Makefile index 2a38ffc764..12b0526e50 100644 --- a/sysdeps/x86_64/fpu/multiarch/Makefile +++ b/sysdeps/x86_64/fpu/multiarch/Makefile @@ -7,10 +7,9 @@ libm-sysdep_routines += e_exp-fma4 e_log-fma4 e_pow-fma4 s_atan-fma4 \ e_asin-fma4 e_atan2-fma4 s_sin-fma4 s_tan-fma4 \ mplog-fma4 mpa-fma4 slowexp-fma4 slowpow-fma4 \ sincos32-fma4 doasin-fma4 dosincos-fma4 \ - brandred-fma4 halfulp-fma4 mpexp-fma4 \ + halfulp-fma4 mpexp-fma4 \ mpatan2-fma4 mpatan-fma4 mpsqrt-fma4 mptan-fma4 -CFLAGS-brandred-fma4.c = -mfma4 CFLAGS-doasin-fma4.c = -mfma4 CFLAGS-dosincos-fma4.c = -mfma4 CFLAGS-e_asin-fma4.c = -mfma4 diff --git a/sysdeps/x86_64/fpu/multiarch/brandred-fma4.c b/sysdeps/x86_64/fpu/multiarch/brandred-fma4.c deleted file mode 100644 index f4f68ac962..0000000000 --- a/sysdeps/x86_64/fpu/multiarch/brandred-fma4.c +++ /dev/null @@ -1,4 +0,0 @@ -#define __branred __branred_fma4 -#define SECTION __attribute__ ((section (".text.fma4"))) - -#include diff --git a/sysdeps/x86_64/fpu/multiarch/s_sin-fma4.c b/sysdeps/x86_64/fpu/multiarch/s_sin-fma4.c index 2501af981a..4c35739dc9 100644 --- a/sysdeps/x86_64/fpu/multiarch/s_sin-fma4.c +++ b/sysdeps/x86_64/fpu/multiarch/s_sin-fma4.c @@ -1,6 +1,5 @@ #define __cos __cos_fma4 #define __sin __sin_fma4 -#define __branred __branred_fma4 #define __docos __docos_fma4 #define __dubsin __dubsin_fma4 #define __mpcos __mpcos_fma4 diff --git a/sysdeps/x86_64/fpu/multiarch/s_tan-fma4.c b/sysdeps/x86_64/fpu/multiarch/s_tan-fma4.c index d7dab3ca9e..a805440b46 100644 --- a/sysdeps/x86_64/fpu/multiarch/s_tan-fma4.c +++ b/sysdeps/x86_64/fpu/multiarch/s_tan-fma4.c @@ -1,5 +1,4 @@ #define tan __tan_fma4 -#define __branred __branred_fma4 #define __dbl_mp __dbl_mp_fma4 #define __mpranred __mpranred_fma4 #define __mptan __mptan_fma4 -- cgit 1.4.1