I checked with several gcc versions. Some of the spec2k benchmarks has a considerable performance loss when the benchmark is compiled with a 64 bits tool.
Ex:
175.vpr using:
Reading specs from /usr/lib/gcc-lib/ppc64-yellowdog-linux/3.3.3/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --enable-symvers=gnu --host=ppc64-yellowdog-linux --build=ppc64-yellowdog-linux --target=ppc64-yellowdog-linux --with-cpu=default32 --enable-biarch
Thread model: posix
gcc version 3.3.3 (Yellow Dog Linux 3.3.3-16.ydl.7)
for 32 bits: 266 seconds for 64 bits: 318 seconds (20% slower)
I looked into the assembler code generated for try_route (route.c) (compiled with: gcc -S -DSPEC_CPU2000 -O3 -m64 route.c) and notice a considerable number of load instructions in the 64 bits one.
Does anyone have an insight on why this is happening ?
Thanks Edmar