Message ID | 20240614232859.64512-1-syq@debian.org |
---|---|
State | New |
Headers | show |
Series | [v5] MIPSr6/math: Use builtin fma and fmaf | expand |
YunQiang Su <syq@debian.org> 于2024年6月15日周六 07:29写道: > > From: YunQiang Su <syq@gcc.gnu.org> > > MIPSr6 has MADDF.s/MADDF.d instructions, which are fused. > > In MIPS ISA, double support can be subsetted. Only FMAF is enabled > for this case. > > * sysdeps/mips/fpu/math-use-builtins-fma.h > > Signed-off-by: YunQiang Su <syq@gcc.gnu.org> > --- Gently ping.
On 14/06/24 20:28, YunQiang Su wrote: > From: YunQiang Su <syq@gcc.gnu.org> > > MIPSr6 has MADDF.s/MADDF.d instructions, which are fused. > > In MIPS ISA, double support can be subsetted. Only FMAF is enabled > for this case. > > * sysdeps/mips/fpu/math-use-builtins-fma.h > > Signed-off-by: YunQiang Su <syq@gcc.gnu.org> > --- > sysdeps/mips/fpu/math-use-builtins-fma.h | 34 ++++++++++++++++++++++++ > 1 file changed, 34 insertions(+) > create mode 100644 sysdeps/mips/fpu/math-use-builtins-fma.h > > diff --git a/sysdeps/mips/fpu/math-use-builtins-fma.h b/sysdeps/mips/fpu/math-use-builtins-fma.h > new file mode 100644 > index 0000000000..ff6ba34576 > --- /dev/null > +++ b/sysdeps/mips/fpu/math-use-builtins-fma.h > @@ -0,0 +1,34 @@ > +/* Copyright (C) 2024 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + <https://www.gnu.org/licenses/>. */ > + > +/* MIPSr6 has MADDF.s/MADDF.d instructions, which are fused. In MIPS > +ISA, double support can be subsetted. Only FMAF is enabled for this > +case. */ As for ffs patch, you will need to include sysdep.h to avoid undefine __mips_isa_rev: In file included from ../sysdeps/generic/math-use-builtins.h:36, from ../sysdeps/ieee754/ldbl-128/s_copysignl.c:29: ../sysdeps/mips/fpu/math-use-builtins-fma.h:22:5: error: "__mips_isa_rev" is not defined, evaluates to 0 [-Werror=undef] 22 | #if __mips_isa_rev >= 6 | ^~~~~~~~~~~~~~ cc1: all warnings being treated as errors > + > +#if __mips_isa_rev >= 6 > +# ifdef __mips_single_float > +# define USE_FMA_BUILTIN 0 > +# else > +# define USE_FMA_BUILTIN 1 > +# endif > +# define USE_FMAF_BUILTIN 1 > +#else > +# define USE_FMA_BUILTIN 0 > +# define USE_FMAF_BUILTIN 0 > +#endif > +#define USE_FMAL_BUILTIN 0 > +#define USE_FMAF128_BUILTIN 0
diff --git a/sysdeps/mips/fpu/math-use-builtins-fma.h b/sysdeps/mips/fpu/math-use-builtins-fma.h new file mode 100644 index 0000000000..ff6ba34576 --- /dev/null +++ b/sysdeps/mips/fpu/math-use-builtins-fma.h @@ -0,0 +1,34 @@ +/* Copyright (C) 2024 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +/* MIPSr6 has MADDF.s/MADDF.d instructions, which are fused. In MIPS +ISA, double support can be subsetted. Only FMAF is enabled for this +case. */ + +#if __mips_isa_rev >= 6 +# ifdef __mips_single_float +# define USE_FMA_BUILTIN 0 +# else +# define USE_FMA_BUILTIN 1 +# endif +# define USE_FMAF_BUILTIN 1 +#else +# define USE_FMA_BUILTIN 0 +# define USE_FMAF_BUILTIN 0 +#endif +#define USE_FMAL_BUILTIN 0 +#define USE_FMAF128_BUILTIN 0