public inbox for glibc-cvs@sourceware.org
help / color / mirror / Atom feed
* [glibc] Remove all assembly optimizations for htonl and htons
@ 2022-10-24 14:48 Adhemerval Zanella
0 siblings, 0 replies; only message in thread
From: Adhemerval Zanella @ 2022-10-24 14:48 UTC (permalink / raw)
To: glibc-cvs
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=be930668eccf842d5a1a068a3e01b660d5bcb813
commit be930668eccf842d5a1a068a3e01b660d5bcb813
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date: Mon Oct 24 11:35:04 2022 -0300
Remove all assembly optimizations for htonl and htons
The builtin bswap is already used if optimziation is enabled for
GCC 4.8+, so glibc symbols will be used in a very limited scenarios.
Also, gcc generated code is quite similar to all but ia64 and i386
htons.
Checked on alpha, i686, and ia64.
Diff:
---
sysdeps/alpha/htonl.S | 43 -------------------------------------------
sysdeps/alpha/htons.S | 39 ---------------------------------------
sysdeps/i386/htons.S | 35 -----------------------------------
sysdeps/ia64/htonl.S | 29 -----------------------------
sysdeps/ia64/htons.S | 29 -----------------------------
5 files changed, 175 deletions(-)
diff --git a/sysdeps/alpha/htonl.S b/sysdeps/alpha/htonl.S
deleted file mode 100644
index e205295933..0000000000
--- a/sysdeps/alpha/htonl.S
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright (C) 1996-2022 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/>. */
-
-#include <sysdep.h>
-
-ENTRY(htonl)
-#ifdef PROF
- ldgp gp, 0(pv)
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
- .prologue 1
-#else
- .prologue 0
-#endif
-
- inslh a0, 7, t0 # t0 = 0000000000AABBCC
- inswl a0, 3, t1 # t1 = 000000CCDD000000
- or t1, t0, t1 # t1 = 000000CCDDAABBCC
- srl t1, 16, t2 # t2 = 0000000000CCDDAA
- zapnot t1, 0x0A, t0 # t0 = 00000000DD00BB00
- zapnot t2, 0x05, t3 # t3 = 0000000000CC00AA
- addl t0, t3, v0 # v0 = ssssssssDDCCBBAA
- ret
-
- END(htonl)
-
-weak_alias (htonl, ntohl)
diff --git a/sysdeps/alpha/htons.S b/sysdeps/alpha/htons.S
deleted file mode 100644
index e44824ef9c..0000000000
--- a/sysdeps/alpha/htons.S
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Copyright (C) 1996-2022 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/>. */
-
-#include <sysdep.h>
-
-ENTRY(htons)
-#ifdef PROF
- ldgp gp, 0(pv)
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
- .prologue 1
-#else
- .prologue 0
-#endif
-
- extwh a0, 7, t1 # t1 = bb00
- extbl a0, 1, v0 # v0 = 00aa
- bis v0, t1, v0 # v0 = bbaa
- ret
-
- END(htons)
-
-weak_alias (htons, ntohs)
diff --git a/sysdeps/i386/htons.S b/sysdeps/i386/htons.S
deleted file mode 100644
index c53de9df1c..0000000000
--- a/sysdeps/i386/htons.S
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Change byte order in word. For Intel 80x86, x >= 3.
- Copyright (C) 1997-2022 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/>. */
-
-#include <sysdep.h>
-#include "asm-syntax.h"
-
-/*
- INPUT PARAMETERS:
- word (sp + 4)
-*/
-
- .text
-ENTRY (htons)
- movl 4(%esp), %eax
- andl $0xffff, %eax
- rorw $8, %ax
- ret
-END (htons)
-
-weak_alias (htons, ntohs)
diff --git a/sysdeps/ia64/htonl.S b/sysdeps/ia64/htonl.S
deleted file mode 100644
index 109802967d..0000000000
--- a/sysdeps/ia64/htonl.S
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Change byte order in 32-bit value. ia64 version.
- Copyright (C) 2000-2022 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/>. */
-
-
-#include <sysdep.h>
-
-ENTRY(htonl)
- shl ret0 = r32, 32
- ;;
- mux1 ret0 = ret0, @rev
- ret
-END(htonl)
-
-weak_alias (htonl, ntohl)
diff --git a/sysdeps/ia64/htons.S b/sysdeps/ia64/htons.S
deleted file mode 100644
index 5d53b33a06..0000000000
--- a/sysdeps/ia64/htons.S
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Change byte order in 16-bit value. ia64 version.
- Copyright (C) 2000-2022 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/>. */
-
-
-#include <sysdep.h>
-
-ENTRY(htons)
- shl ret0 = r32, 48
- ;;
- mux1 ret0 = ret0, @rev
- ret
-END(htons)
-
-weak_alias (htons, ntohs)
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-10-24 14:48 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-24 14:48 [glibc] Remove all assembly optimizations for htonl and htons Adhemerval Zanella
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).