This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM4378: Double precision floating point questions

Part Number: AM4378

Hi everybody , 

on AM437x we have  Neon ( single precision ) and  VFPv3  ( double precision )   (  while on AM57xx we have VFPv4 ) .

so please some questions :

1- you need to invoke  VFPvx  to get HW  double precision support  in  A8-A9-A15  ( 32 bits architecture ) , am I right ?  

2-do you have any benchmark /numbers  showing   VFP capabilities  in handle  double precision ?  I m very interested in particular in filtering 

3- do you have any comparison between   VFPv3  vs  VFPv4 ?

thank you very much 

regards

Carlo

  • The factory team have been notified. They will respond here.
  • Carlo,

    You are correct that AM335x and AM437x devices implemented the ARMv7-A architecture WITH the VFPv3-D16 FPU. The AM57xx devices implemented the VFPv4-D16 FPU. They all support double precision floating-point operations.

    Main enhancement of VFPv4 vs. VFPv3 are the half-precision support and fused multiply-add instructions. See:
    developer.arm.com/.../floating-point
    for further details.

    Regarding to performance benchmark, there are some general benchmarks from independent sources, to name a few below:
    www.youtube.com/watch
    www.anandtech.com/.../exploring-the-floating-point-performance-of-modern-arm-processors

    Also note that compiler options must be specified for given VFP configurations. For example, the gcc compiler would need to specify -mfpu to specify. See details on:
    gcc.gnu.org/.../ARM-Options.html
    The -mfpu=name specifies what floating-point hardware (or hardware emulation) is available on the target. Permissible names are: ‘vfp’, ‘vfpv3’, ‘vfpv3-fp16’, ‘vfpv3-d16’, ‘vfpv3-d16-fp16’, ‘vfpv3xd’, ‘vfpv3xd-fp16’, ‘neon’, ‘neon-fp16’, ‘vfpv4’, ‘vfpv4-d16’, ‘fpv4-sp-d16’, ‘neon-vfpv4’, ‘fp-armv8’, ‘neon-fp-armv8’, and ‘crypto-neon-fp-armv8’.
    If -msoft-float is specified this specifies the format of floating-point values.

    Let us know if you need further clarifications.
    Jian
  • Please forgive me, but I would like to ask a question to further my understanding for the fpu use.  If I want to build a user space application, what settings do I need so that the app will use the fpu on the AM335x, AM437x and the AM57xx.  Meaning, if I set the toolchain to build the app with --with-arch=armv7-a --with-tune=generic-armv7-a --with-fpu=vfpv3-d16 --with-float=hard will the app run on all of the devices without any issues?  Is the vfpv4-d16 backward compatible to vfpv3-d16? 

    Thanks for the help,

    Ben

  • Ben let me check with our team on specific options needed for TI tools.
    Sorry for the delayed response I was sidetracked.
    Jian
  • Ben,

    The TI Linux SDK points to uses gcc, that have built-in options. you can turn-on the "-v" when compile, to report all options. See below from our SDK team:

    > I did this for GCC v7.2 and I got this:
    > $ arm-linux-gnueabihf-gcc -v -c -o hello.o hello.c
    > [lots of stuff]
    > COLLECT_GCC_OPTIONS='-v' '-c' '-o' 'hello.o' '-march=armv7-a'
    > '-mtune=cortex-a9' '-mfloat-abi=hard' '-mfpu=vfpv3-d16' '-mthumb'
    > '-mtls-dialect=gnu'

    to your second question, yes if you build for --with-fpu=vfpv3-d16 that should run on VFPv4 devices.

    regards
    Jian
  • Typo:

    The TI Linux SDK points to uses Linero tools.

    Jian

  • i will close the ticket per our internal tracking. please reopen if you additional questions.
    jian