Re: [PATCH 0/3] ARM with only 32-bit floats do not have fast 64-bit FMA
Sebastian Huber <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <[email protected]> |
On 01/09/2020 18:32, Sebastian Huber wrote: > Hello, > > with the latest Newlib, I get a linker error in the RTEMS test suite: > > > undefined reference to `fma' > undefined reference to `fmaf' > > The following machine flags are used: > > '-march=armv7-a', '-mthumb', '-mfpu=neon', '-mfloat-abi=hard', > '-mtune=cortex-a9' > > It seems to be missing in the corresponding multilib: > > nm /build/rtems/6/arm-rtems6/lib/thumb/armv7-a+simd/hard/libm.a | grep > fma > lib_a-fmal.o: > U fma > 00000000 T fmal > lib_a-fmaxl.o: > U fmax > 00000000 T fmaxl > lib_a-s_fma.o: > lib_a-s_fmax.o: > 00000000 T fmax > lib_a-sf_fma.o: > lib_a-sf_fmax.o: > 00000000 T fmaxf > It seems to be present in only some multilibs: for i in $(find /build/rtems/6/arm-rtems6/lib -name libm.a); do echo $i ; nm --defined-only $i | grep 'T.*\<fma\>'; done /build/rtems/6/arm-rtems6/lib/eb/thumb/armv7-r+fp/hard/libm.a /build/rtems/6/arm-rtems6/lib/eb/thumb/armv7-r/libm.a /build/rtems/6/arm-rtems6/lib/libm.a /build/rtems/6/arm-rtems6/lib/thumb/cortex-m4/hard/libm.a /build/rtems/6/arm-rtems6/lib/thumb/cortex-m3/libm.a /build/rtems/6/arm-rtems6/lib/thumb/cortex-m7/hard/libm.a 00000000 T fma /build/rtems/6/arm-rtems6/lib/thumb/armv6-m/libm.a /build/rtems/6/arm-rtems6/lib/thumb/armv7-r+fp/hard/libm.a /build/rtems/6/arm-rtems6/lib/thumb/armv7-r/libm.a /build/rtems/6/arm-rtems6/lib/thumb/cortex-m4+nofp/libm.a /build/rtems/6/arm-rtems6/lib/thumb/libm.a /build/rtems/6/arm-rtems6/lib/thumb/armv7-a+simd/hard/libm.a /build/rtems/6/arm-rtems6/lib/thumb/armv7-a/libm.a /build/rtems/6/arm-rtems6/lib/armv5te+fp/hard/libm.a for i in $(find /build/rtems/6/arm-rtems6/lib -name libm.a); do echo $i ; nm --defined-only $i | grep 'T.*\<fmaf\>'; done /build/rtems/6/arm-rtems6/lib/eb/thumb/armv7-r+fp/hard/libm.a /build/rtems/6/arm-rtems6/lib/eb/thumb/armv7-r/libm.a /build/rtems/6/arm-rtems6/lib/libm.a /build/rtems/6/arm-rtems6/lib/thumb/cortex-m4/hard/libm.a 00000000 T fmaf /build/rtems/6/arm-rtems6/lib/thumb/cortex-m3/libm.a /build/rtems/6/arm-rtems6/lib/thumb/cortex-m7/hard/libm.a 00000000 T fmaf /build/rtems/6/arm-rtems6/lib/thumb/armv6-m/libm.a /build/rtems/6/arm-rtems6/lib/thumb/armv7-r+fp/hard/libm.a /build/rtems/6/arm-rtems6/lib/thumb/armv7-r/libm.a /build/rtems/6/arm-rtems6/lib/thumb/cortex-m4+nofp/libm.a /build/rtems/6/arm-rtems6/lib/thumb/libm.a /build/rtems/6/arm-rtems6/lib/thumb/armv7-a+simd/hard/libm.a /build/rtems/6/arm-rtems6/lib/thumb/armv7-a/libm.a /build/rtems/6/arm-rtems6/lib/armv5te+fp/hard/libm.a