mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-25 22:40:05 +00:00
Better DLA_FMS
It's better to use __builtin_fma if it works. Use it for gcc 4.6 and higher. Move the x86-64 dla.h to the correct place.
This commit is contained in:
parent
485683c35f
commit
202c9deb15
@ -1,7 +1,9 @@
|
||||
2011-10-24 Ulrich Drepper <drepper@gmail.com>
|
||||
|
||||
* sysdeps/x86_64/dla.h (DLA_FMS): Some compilers fail to inline
|
||||
__builtin_fma in some situations. Have to use an asm.
|
||||
* sysdeps/x86_64/dla.h: Move to ...
|
||||
* sysdeps/x86_64/fpu/dla.h: ...here.
|
||||
(DLA_FMS): Some compilers fail to inline __builtin_fma in some
|
||||
situations. Use __builtin_fma only for gcc 4.6 and up.
|
||||
|
||||
* config.make.in: Add have-mfma4 entry.
|
||||
* configure.in: Substitute libc_cv_cc_fma4.
|
||||
|
@ -1,10 +1,17 @@
|
||||
#include <features.h>
|
||||
|
||||
#ifdef __FMA4__
|
||||
# define DLA_FMS(x,y,z) \
|
||||
# if __GNUC_PREREQ (4, 6)
|
||||
# define DLA_FMS(x,y,z) \
|
||||
__builtin_fma (x, y, -(z))
|
||||
# else
|
||||
# define DLA_FMS(x,y,z) \
|
||||
({ double __z; \
|
||||
asm ("vfmsubsd %3, %2, %1, %0" \
|
||||
: "=x" (__z) \
|
||||
: "x" ((double) (x)), "xm" ((double) (y)) , "x" ((double) (z))); \
|
||||
__z; })
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#include "sysdeps/ieee754/dbl-64/dla.h"
|
Loading…
Reference in New Issue
Block a user