Message ID | 20211028194738.82344-1-goldstein.w.n@gmail.com |
---|---|
State | New |
Headers | show |
Series | [v1] x86_64: Add memcmpeq.S to fix disable-multi-arch build | expand |
On Thu, Oct 28, 2021 at 12:47 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote: > > The following commit: > > commit cf4fd28ea453d1a9cec93939bc88b58ccef5437a > Author: Noah Goldstein <goldstein.w.n@gmail.com> > Date: Tue Oct 26 19:43:18 2021 -0500 > > Broke --disable-multi-arch build for x86_64 because x86_64/memcmpeq.S > was not defined outside of multiarch and the alias for __memcmpeq in > x86_64/memcmp.S was removed. > > This commit fixes that issue by adding x86_64/memcmpeq.S. > > make xcheck passes on x86_64 with and without --disable-multi-arch > --- > sysdeps/x86_64/memcmpeq.S | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) > create mode 100644 sysdeps/x86_64/memcmpeq.S > > diff --git a/sysdeps/x86_64/memcmpeq.S b/sysdeps/x86_64/memcmpeq.S > new file mode 100644 > index 0000000000..f3dd1d0085 > --- /dev/null > +++ b/sysdeps/x86_64/memcmpeq.S > @@ -0,0 +1,23 @@ > +/* __memcmpeq optimized with SSE2. > + Copyright (C) 2017-2021 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/>. */ > + > +#ifndef memcmp > +# define memcmp __memcmpeq > +#endif Why is this needed? Does the simple #define memcmp __memcmpeq work? > +#define USE_AS_MEMCMPEQ 1 > +#include "multiarch/memcmp-sse2.S" > -- > 2.25.1 >
On Thu, Oct 28, 2021 at 3:19 PM H.J. Lu <hjl.tools@gmail.com> wrote: > > On Thu, Oct 28, 2021 at 12:47 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote: > > > > The following commit: > > > > commit cf4fd28ea453d1a9cec93939bc88b58ccef5437a > > Author: Noah Goldstein <goldstein.w.n@gmail.com> > > Date: Tue Oct 26 19:43:18 2021 -0500 > > > > Broke --disable-multi-arch build for x86_64 because x86_64/memcmpeq.S > > was not defined outside of multiarch and the alias for __memcmpeq in > > x86_64/memcmp.S was removed. > > > > This commit fixes that issue by adding x86_64/memcmpeq.S. > > > > make xcheck passes on x86_64 with and without --disable-multi-arch > > --- > > sysdeps/x86_64/memcmpeq.S | 23 +++++++++++++++++++++++ > > 1 file changed, 23 insertions(+) > > create mode 100644 sysdeps/x86_64/memcmpeq.S > > > > diff --git a/sysdeps/x86_64/memcmpeq.S b/sysdeps/x86_64/memcmpeq.S > > new file mode 100644 > > index 0000000000..f3dd1d0085 > > --- /dev/null > > +++ b/sysdeps/x86_64/memcmpeq.S > > @@ -0,0 +1,23 @@ > > +/* __memcmpeq optimized with SSE2. > > + Copyright (C) 2017-2021 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/>. */ > > + > > +#ifndef memcmp > > +# define memcmp __memcmpeq > > +#endif > > Why is this needed? Does the simple > > #define memcmp __memcmpeq > > work? It's not inherently needed. Generally just think it's easier to protect these definitions so it's easier to include the file. Do you want me to remove it? > > > +#define USE_AS_MEMCMPEQ 1 > > +#include "multiarch/memcmp-sse2.S" > > -- > > 2.25.1 > > > > > -- > H.J.
On Thu, Oct 28, 2021 at 1:22 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote: > > On Thu, Oct 28, 2021 at 3:19 PM H.J. Lu <hjl.tools@gmail.com> wrote: > > > > On Thu, Oct 28, 2021 at 12:47 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote: > > > > > > The following commit: > > > > > > commit cf4fd28ea453d1a9cec93939bc88b58ccef5437a > > > Author: Noah Goldstein <goldstein.w.n@gmail.com> > > > Date: Tue Oct 26 19:43:18 2021 -0500 > > > > > > Broke --disable-multi-arch build for x86_64 because x86_64/memcmpeq.S > > > was not defined outside of multiarch and the alias for __memcmpeq in > > > x86_64/memcmp.S was removed. > > > > > > This commit fixes that issue by adding x86_64/memcmpeq.S. > > > > > > make xcheck passes on x86_64 with and without --disable-multi-arch > > > --- > > > sysdeps/x86_64/memcmpeq.S | 23 +++++++++++++++++++++++ > > > 1 file changed, 23 insertions(+) > > > create mode 100644 sysdeps/x86_64/memcmpeq.S > > > > > > diff --git a/sysdeps/x86_64/memcmpeq.S b/sysdeps/x86_64/memcmpeq.S > > > new file mode 100644 > > > index 0000000000..f3dd1d0085 > > > --- /dev/null > > > +++ b/sysdeps/x86_64/memcmpeq.S > > > @@ -0,0 +1,23 @@ > > > +/* __memcmpeq optimized with SSE2. > > > + Copyright (C) 2017-2021 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/>. */ > > > + > > > +#ifndef memcmp > > > +# define memcmp __memcmpeq > > > +#endif > > > > Why is this needed? Does the simple > > > > #define memcmp __memcmpeq > > > > work? > > It's not inherently needed. > > Generally just think it's easier to protect these > definitions so it's easier to include the file. > > Do you want me to remove it? Yes, please remove it. OK with that change. Thanks. > > > > > +#define USE_AS_MEMCMPEQ 1 > > > +#include "multiarch/memcmp-sse2.S" > > > -- > > > 2.25.1 > > > > > > > > > -- > > H.J.
On Thu, Oct 28, 2021 at 3:40 PM H.J. Lu <hjl.tools@gmail.com> wrote: > > On Thu, Oct 28, 2021 at 1:22 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote: > > > > On Thu, Oct 28, 2021 at 3:19 PM H.J. Lu <hjl.tools@gmail.com> wrote: > > > > > > On Thu, Oct 28, 2021 at 12:47 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote: > > > > > > > > The following commit: > > > > > > > > commit cf4fd28ea453d1a9cec93939bc88b58ccef5437a > > > > Author: Noah Goldstein <goldstein.w.n@gmail.com> > > > > Date: Tue Oct 26 19:43:18 2021 -0500 > > > > > > > > Broke --disable-multi-arch build for x86_64 because x86_64/memcmpeq.S > > > > was not defined outside of multiarch and the alias for __memcmpeq in > > > > x86_64/memcmp.S was removed. > > > > > > > > This commit fixes that issue by adding x86_64/memcmpeq.S. > > > > > > > > make xcheck passes on x86_64 with and without --disable-multi-arch > > > > --- > > > > sysdeps/x86_64/memcmpeq.S | 23 +++++++++++++++++++++++ > > > > 1 file changed, 23 insertions(+) > > > > create mode 100644 sysdeps/x86_64/memcmpeq.S > > > > > > > > diff --git a/sysdeps/x86_64/memcmpeq.S b/sysdeps/x86_64/memcmpeq.S > > > > new file mode 100644 > > > > index 0000000000..f3dd1d0085 > > > > --- /dev/null > > > > +++ b/sysdeps/x86_64/memcmpeq.S > > > > @@ -0,0 +1,23 @@ > > > > +/* __memcmpeq optimized with SSE2. > > > > + Copyright (C) 2017-2021 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/>. */ > > > > + > > > > +#ifndef memcmp > > > > +# define memcmp __memcmpeq > > > > +#endif > > > > > > Why is this needed? Does the simple > > > > > > #define memcmp __memcmpeq > > > > > > work? > > > > It's not inherently needed. > > > > Generally just think it's easier to protect these > > definitions so it's easier to include the file. > > > > Do you want me to remove it? > > Yes, please remove it. OK with that change. > > Thanks. Got it. Fixed in v2. > > > > > > > > +#define USE_AS_MEMCMPEQ 1 > > > > +#include "multiarch/memcmp-sse2.S" > > > > -- > > > > 2.25.1 > > > > > > > > > > > > > -- > > > H.J. > > > > -- > H.J.
diff --git a/sysdeps/x86_64/memcmpeq.S b/sysdeps/x86_64/memcmpeq.S new file mode 100644 index 0000000000..f3dd1d0085 --- /dev/null +++ b/sysdeps/x86_64/memcmpeq.S @@ -0,0 +1,23 @@ +/* __memcmpeq optimized with SSE2. + Copyright (C) 2017-2021 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/>. */ + +#ifndef memcmp +# define memcmp __memcmpeq +#endif +#define USE_AS_MEMCMPEQ 1 +#include "multiarch/memcmp-sse2.S"