diff options
author | David S. Miller <davem@davemloft.net> | 2011-09-25 21:28:51 +0000 |
---|---|---|
committer | David S. Miller <davem@gcc.gnu.org> | 2011-09-25 14:28:51 -0700 |
commit | e8b141b593cea20857b5041b4c4f1139e7c67712 (patch) | |
tree | bed5b88ace72ee9f25edf67d046c725807af7b3a /gcc/configure | |
parent | 7cbcf85bf976f8eaeb2beee113b1ea60bdb39f99 (diff) | |
download | gcc-e8b141b593cea20857b5041b4c4f1139e7c67712.tar.gz |
Add support for floating-point fused multiply-add on Sparc.
* configure.ac: Add feature check to make sure the assembler
supports the FMAF, HPC, and VIS 3.0 instructions found on
Niagara-3 and later cpus.
* configure: Rebuild.
* config.in: Likewise.
* config/sparc/sparc.opt: New option '-mfmaf'.
* config/sparc/sparc.md: Add float fused multiply-add patterns.
* config/sparc/sparc.h (AS_NIAGARA3_FLAG): New macro.
(ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC): Use it, as needed.
* config/sparc/sol2.h (ASM_CPU32_DEFAULT_SPEC,
ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC): Likewise.
* config/sparc/sparc.c (sparc_option_override): Turn MASK_FMAF on
by default for Niagara-3 and later. Turn it off if TARGET_FPU is
disabled.
(sparc_rtx_costs): Handle 'FMA'.
* doc/invoke.texi: Document -mfmaf.
From-SVN: r179174
Diffstat (limited to 'gcc/configure')
-rwxr-xr-x | gcc/configure | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc/configure b/gcc/configure index 651471ca9c8..c1838813ed9 100755 --- a/gcc/configure +++ b/gcc/configure @@ -24043,6 +24043,42 @@ if test $gcc_cv_as_sparc_offsetable_lo10 = yes; then $as_echo "#define HAVE_AS_OFFSETABLE_LO10 1" >>confdefs.h fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for FMAF, HPC, and VIS 3.0 instructions" >&5 +$as_echo_n "checking assembler for FMAF, HPC, and VIS 3.0 instructions... " >&6; } +if test "${gcc_cv_as_sparc_fmaf+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + gcc_cv_as_sparc_fmaf=no + if test x$gcc_cv_as != x; then + $as_echo '.text + .align 4 + fmaddd %f0, %f2, %f4, %f6 + addxccc %g1, %g2, %g3 + fsrl32 %f2, %f4, %f8 + fnaddd %f10, %f12, %f14' > conftest.s + if { ac_try='$gcc_cv_as $gcc_cv_as_flags -xarch=v9d -o conftest.o conftest.s >&5' + { { 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 + gcc_cv_as_sparc_fmaf=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_sparc_fmaf" >&5 +$as_echo "$gcc_cv_as_sparc_fmaf" >&6; } +if test $gcc_cv_as_sparc_fmaf = yes; then + +$as_echo "#define HAVE_AS_FMAF_HPC_VIS3 1" >>confdefs.h + +fi ;; i[34567]86-*-* | x86_64-*-*) |