2

I am measuring the GFLOPS performance of the Cortex-a57 with the HPLinpack benchmarks and it barely achieves 1 FP/cycle (considering ~2.4 GFLOPS @ 2.4 GHz). Since the old compiler (gcc 4.9.1) complained with several version of the -mfpu= option, I tried to configure gcc 5.0.1 as below

../gcc/configure --with-gmp=/tmp/gcc --with-mpfr=/tmp/gcc --with-mpc=/tmp/gcc --with-libelf=/tmp/gcc --enable-languages=c,c++,fortran,go --target=aarch64-linux-gnu --prefix=/opt/another-gcc5 --with-arch=armv8-a --with-cpu=cortex-a57 --with-fpu=neon-fp-armv8

configuration went fine, but when invoking make the --with-fpu flag crashed in gcc/gcc/config.gcc :4351

echo "This target does not support --with-$option." 2>&1

due to the supported_defaults for the aarch64 architecture as defined in gcc/gcc/config.gcc 3464:3467

supported_defaults= case "${target}" in aarch64*--) supported_defaults="abi cpu arch"

How come the fpu option is not supported? any advice is appreciated, I have never done this before and I am a bit lost :)

  • 2
    I'm somewhat surprised anyone would go for "build a new compiler" before ["read the documentation"](https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/AArch64-Options.html#AArch64-Options)... Floating-point support is an arch or cpu feature modifier - I guess because floating-point is a standardised part of AArch64, so the choice becomes simply "on" or "off" rather than needing to distinguish between a mess of multiple different FPU implementations. – Notlikethat Apr 21 '15 at 12:02

1 Answers1

6

The 32-bit arm and 64-bit aarch64 targets are separate in GCC. The aarch64 target does not support a --with-fpu configure option (or an -mfpu command-line option) because an FPU is assumed to be present by default. So you always get floating-point and AdvancedSIMD support by default.

This is unlike the 32-bit arm target (the arm*-*-* triplets) which also supports a soft-float ABI and can be configured with different levels of FPU support from older versions of the architecture.

In summary: if you're targeting aarch64 you don't need to specify a --with-fpu configure option (and it's not supported on aarch64 anyway)

Kyrill
  • 2,963
  • 1
  • 8
  • 12