This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, middle-end, i386]: reciprocal rsqrt pass + full recip x86 backend support
- From: Tobias Burnus <burnus at net-b dot de>
- To: Uros Bizjak <ubizjak at gmail dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Fri, 15 Jun 2007 10:55:20 +0200
- Subject: Re: [PATCH, middle-end, i386]: reciprocal rsqrt pass + full recip x86 backend support
- References: <5787cf470706140216p78e731a2o8ad47c5c4d1efc00@mail.gmail.com>
Uros Bizjak wrote:
> This patch implements reciprocal sqrt pass.
I don't know whether this a bug in the patch or only revealed by the
patch, but the "aermod.f90" benchmark from Polyhedron crashes here at
run time (segmentation fault) when compiled with
gfortran -ffast-math -mrecip aermod.f90
Valgrind claims:
==16734== Conditional jump or move depends on uninitialised value(s)
==16734== at 0x4BA046: numrise_ (aermod.f90:35497)
==16734== by 0x4CBC05: prmdelh_ (aermod.f90:39786)
==16734== by 0x41D06F: prmcalc_ (aermod.f90:6787)
[...]
The program does not crash without -mrecip.
Tobias
PS: Polyhedron result on AMD Athlon(tm) 64 X2 Dual Core Processor 4800+
Column 1:
gfortran -march=opteron -ffast-math -funroll-loops -ftree-vectorize
-ftree-loop-linear -msse3 -O3
Column 2:
gfortran -march=opteron -ffast-math -funroll-loops -ftree-vectorize
-ftree-loop-linear -mrecip -msse3 -O3
13.90 13.90 ac
37.17 -- aermod (wrong-code)
13.88 13.92 air
84.56 88.85 capacita (+5%)
12.72 12.72 channel
43.11 41.78 doduc (-3%)
11.70 11.67 fatigue
12.09 9.26 gas_dyn (-24%) great!
51.88 51.85 induct
25.95 25.95 linpk
23.90 23.93 mdbx
28.24 28.19 nf
63.96 64.40 protein
36.72 36.74 rnflow
19.42 19.35 test_fpu
7.82 7.90 tfft