public inbox for libc-ports@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 00/26] ARM improvements
@ 2013-02-27  3:16 Richard Henderson
  2013-02-27  3:16 ` [PATCH 03/26] arm: Handle armv6 in preconfigure Richard Henderson
                   ` (28 more replies)
  0 siblings, 29 replies; 63+ messages in thread
From: Richard Henderson @ 2013-02-27  3:16 UTC (permalink / raw)
  To: libc-ports; +Cc: Joseph Myers

The first two patches are required to get glibc to build with gcc 4.8
on armv7.  Otherwise it doesn't actually notice armv7 and configures
for the default armv4.

The third patch, I thought I was going to need for an armv6 (not t2)
implementation of addmul_1 (using umaal).  But in the end I managed
to match speed of the umaal version with the default umlal version,
so I opted not to submit it at all.  It could be dropped, but I think
it makes sense to keep it.

Patches 4-18 improve the ability to build libc as a thumb2 binary.
In the end, almost all assembly is done in thumb2 mode if -mthumb
is present in ASFLAGS.  Its that last that's the sticky part: by
default we copy only a couple of flags over from CFLAGS.  I'm not
sure why we're not passing them all to the assembler.  So at the
moment I'm just putting ASFLAGS on the make command-line to get
what I want.

Patches 19-23 add improved string routines for armv6t2.  I've had these
hanging around for almost 2 years without properly submitting them. 
Which is perhaps a bit silly, but the A8 host I was originally doing
testing on has a dreadfully low resolution clock, so it was hard to get
real numbers. Whereas the A15 has a 1ns resolution CLOCK_MONOTONIC_RAW.
I can post the benchmarks under separate cover if you like.

Patches 24-26 add improved gmp routines for armv4.  They're written
from scratch, as I understand that glibc is LGPL2.1, and gmp is GPL3.
They're significantly faster than the generic defaults, and they're
of similar performance to gmp on the A15 (though probably not on the
in-order cores).  For the sizes of multiplies that we're going to
encounter inside glibc, they're probably sufficient.


r~


Richard Henderson (26):
  Sync config.guess and config.sub with upstream
  arm: Update preconfigure fragment for gcc 4.8
  arm: Handle armv6 in preconfigure
  arm: Include libc-do-syscall in sysdep-rtld-routines
  arm: Introduce thumb helpers s and pc_ofs
  arm: Use pc_ofs
  arm: Introduce and use GET_TLS
  arm: Add IT insns for thumb mode
  arm: Mark assembly files that will not use thumb mode
  arm: Introduce and use LDST_PCREL
  arm: Introduce and use NEGOFF series of macros
  arm: Enable thumb2 mode in assembly files
  arm: Store lr in r2 around GET_TLS
  arm: Use push/pop mnemonics
  arm: Delete LOADREGS macro
  arm: Commonize BX conditionals
  arm: Unless arm4t, pop return address directly into pc
  arm: Use GET_TLS more often
  arm: Add optimized ffs for armv6t2
  arm: Implement armv6t2 optimized strlen
  arm: Implement armv6t2 optimized strcpy
  arm: Implement armv6t2 optimized strchr, strrchr, rawmemchr
  arm: Rewrite armv6t2 memchr with uqadd8
  arm: Add optimized addmul_1
  arm: Add optimized submul_1
  arm: Add optimized add_n and sub_n

 ports/sysdeps/arm/__longjmp.S                      |   8 +-
 ports/sysdeps/arm/add_n.S                          |  83 ++++++++
 ports/sysdeps/arm/addmul_1.S                       |  60 ++++++
 ports/sysdeps/arm/arm-mcount.S                     |  19 +-
 ports/sysdeps/arm/armv6t2/ffs.S                    |  34 ++++
 ports/sysdeps/arm/armv6t2/ffsll.S                  |  49 +++++
 ports/sysdeps/arm/armv6t2/memchr.S                 | 216 ++++++++++-----------
 ports/sysdeps/arm/armv6t2/rawmemchr.S              |  81 ++++++++
 ports/sysdeps/arm/armv6t2/stpcpy.S                 |   1 +
 ports/sysdeps/arm/armv6t2/strchr.S                 | 138 +++++++++++++
 ports/sysdeps/arm/armv6t2/strcpy.S                 | 213 ++++++++++++++++++++
 ports/sysdeps/arm/armv6t2/strlen.S                 |  93 +++++++++
 ports/sysdeps/arm/armv6t2/strrchr.S                | 137 +++++++++++++
 ports/sysdeps/arm/crti.S                           |   6 +-
 ports/sysdeps/arm/crtn.S                           |  10 +-
 ports/sysdeps/arm/dl-tlsdesc.S                     |  49 +++--
 ports/sysdeps/arm/dl-trampoline.S                  |  15 +-
 ports/sysdeps/arm/memcpy.S                         |  60 +++---
 ports/sysdeps/arm/memmove.S                        |  60 +++---
 ports/sysdeps/arm/memset.S                         |   2 +
 ports/sysdeps/arm/preconfigure                     |   7 +-
 ports/sysdeps/arm/setjmp.S                         |   6 +-
 ports/sysdeps/arm/start.S                          |  10 +-
 ports/sysdeps/arm/strlen.S                         |   2 +
 ports/sysdeps/arm/sub_n.S                          |   2 +
 ports/sysdeps/arm/submul_1.S                       |  67 +++++++
 ports/sysdeps/arm/sysdep.h                         |  99 +++++++---
 ports/sysdeps/unix/arm/sysdep.S                    |  39 ++--
 ports/sysdeps/unix/sysv/linux/arm/Makefile         |   2 +-
 .../sysdeps/unix/sysv/linux/arm/____longjmp_chk.S  |   6 +-
 ports/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S  |   6 +
 ports/sysdeps/unix/sysv/linux/arm/clone.S          |  17 +-
 ports/sysdeps/unix/sysv/linux/arm/getcontext.S     |   2 +-
 ports/sysdeps/unix/sysv/linux/arm/mmap.S           |   9 +-
 ports/sysdeps/unix/sysv/linux/arm/mmap64.S         |  14 +-
 ports/sysdeps/unix/sysv/linux/arm/nptl/pt-vfork.S  |  23 +--
 .../unix/sysv/linux/arm/nptl/sysdep-cancel.h       |  57 +++---
 .../unix/sysv/linux/arm/nptl/unwind-forcedunwind.c |   4 +-
 .../unix/sysv/linux/arm/nptl/unwind-resume.c       |   4 +-
 ports/sysdeps/unix/sysv/linux/arm/nptl/vfork.S     |  26 ++-
 ports/sysdeps/unix/sysv/linux/arm/setcontext.S     |   4 +-
 ports/sysdeps/unix/sysv/linux/arm/syscall.S        |   5 +-
 ports/sysdeps/unix/sysv/linux/arm/sysdep.h         |  53 +++--
 ports/sysdeps/unix/sysv/linux/arm/vfork.S          |   3 +-
 scripts/config.guess                               |  31 ++-
 scripts/config.sub                                 |  72 +++----
 46 files changed, 1462 insertions(+), 442 deletions(-)
 create mode 100644 ports/sysdeps/arm/add_n.S
 create mode 100644 ports/sysdeps/arm/addmul_1.S
 create mode 100644 ports/sysdeps/arm/armv6t2/ffs.S
 create mode 100644 ports/sysdeps/arm/armv6t2/ffsll.S
 create mode 100644 ports/sysdeps/arm/armv6t2/rawmemchr.S
 create mode 100644 ports/sysdeps/arm/armv6t2/stpcpy.S
 create mode 100644 ports/sysdeps/arm/armv6t2/strchr.S
 create mode 100644 ports/sysdeps/arm/armv6t2/strcpy.S
 create mode 100644 ports/sysdeps/arm/armv6t2/strlen.S
 create mode 100644 ports/sysdeps/arm/armv6t2/strrchr.S
 create mode 100644 ports/sysdeps/arm/sub_n.S
 create mode 100644 ports/sysdeps/arm/submul_1.S
 mode change 100755 => 100644 scripts/config.guess
 mode change 100755 => 100644 scripts/config.sub

-- 
1.8.1.2

^ permalink raw reply	[flat|nested] 63+ messages in thread

end of thread, other threads:[~2013-02-28 22:05 UTC | newest]

Thread overview: 63+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-02-27  3:16 [PATCH 00/26] ARM improvements Richard Henderson
2013-02-27  3:16 ` [PATCH 03/26] arm: Handle armv6 in preconfigure Richard Henderson
2013-02-27 18:02   ` Joseph S. Myers
2013-02-27 18:04     ` Roland McGrath
2013-02-27 18:08       ` Richard Henderson
2013-02-27 18:34     ` Richard Henderson
2013-02-27 19:57       ` Joseph S. Myers
2013-02-27  3:16 ` [PATCH 01/26] Sync config.guess and config.sub with upstream Richard Henderson
2013-02-27 17:03   ` Joseph S. Myers
2013-02-27  3:16 ` [PATCH 05/26] arm: Introduce thumb helpers s and pc_ofs Richard Henderson
2013-02-28  0:20   ` Joseph S. Myers
2013-02-28  0:36     ` Richard Henderson
2013-02-28  1:45       ` Måns Rullgård
2013-02-27  3:16 ` [PATCH 09/26] arm: Mark assembly files that will not use thumb mode Richard Henderson
2013-02-28  0:58   ` Joseph S. Myers
2013-02-27  3:16 ` [PATCH 04/26] arm: Include libc-do-syscall in sysdep-rtld-routines Richard Henderson
2013-02-28  0:15   ` Joseph S. Myers
2013-02-27  3:17 ` [PATCH 07/26] arm: Introduce and use GET_TLS Richard Henderson
2013-02-28  0:34   ` Joseph S. Myers
2013-02-27  3:17 ` [PATCH 14/26] arm: Use push/pop mnemonics Richard Henderson
2013-02-28  1:03   ` Joseph S. Myers
2013-02-27  3:17 ` [PATCH 23/26] arm: Rewrite armv6t2 memchr with uqadd8 Richard Henderson
2013-02-27  7:04   ` Richard Henderson
2013-02-27  3:17 ` [PATCH 20/26] arm: Implement armv6t2 optimized strlen Richard Henderson
2013-02-27 17:12   ` Måns Rullgård
2013-02-27 17:44     ` Richard Henderson
2013-02-27  3:17 ` [PATCH 17/26] arm: Unless arm4t, pop return address directly into pc Richard Henderson
2013-02-28 21:57   ` Joseph S. Myers
2013-02-27  3:17 ` [PATCH 11/26] arm: Introduce and use NEGOFF series of macros Richard Henderson
2013-02-27  3:17 ` [PATCH 18/26] arm: Use GET_TLS more often Richard Henderson
2013-02-28 21:59   ` Joseph S. Myers
2013-02-27  3:17 ` [PATCH 13/26] arm: Store lr in r2 around GET_TLS Richard Henderson
2013-02-27  3:17 ` [PATCH 19/26] arm: Add optimized ffs for armv6t2 Richard Henderson
2013-02-27 15:51   ` Måns Rullgård
2013-02-27 16:34     ` Richard Henderson
2013-02-27 17:49   ` Roland McGrath
2013-02-27  3:17 ` [PATCH 15/26] arm: Delete LOADREGS macro Richard Henderson
2013-02-28  1:24   ` Joseph S. Myers
2013-02-27  3:17 ` [PATCH 12/26] arm: Enable thumb2 mode in assembly files Richard Henderson
2013-02-27  3:17 ` [PATCH 16/26] arm: Commonize BX conditionals Richard Henderson
2013-02-28 21:51   ` Joseph S. Myers
2013-02-27  3:17 ` [PATCH 08/26] arm: Add IT insns for thumb mode Richard Henderson
2013-02-28  0:41   ` Joseph S. Myers
2013-02-27  3:17 ` [PATCH 24/26] arm: Add optimized addmul_1 Richard Henderson
2013-02-28 13:58   ` Måns Rullgård
2013-02-28 18:19     ` Richard Henderson
2013-02-28 19:37       ` Måns Rullgård
2013-02-27  3:17 ` [PATCH 21/26] arm: Implement armv6t2 optimized strcpy Richard Henderson
2013-02-27  3:17 ` [PATCH 22/26] arm: Implement armv6t2 optimized strchr, strrchr, rawmemchr Richard Henderson
2013-02-28  1:31   ` Joseph S. Myers
2013-02-27  3:17 ` [PATCH 10/26] arm: Introduce and use LDST_PCREL Richard Henderson
2013-02-28  1:00   ` Joseph S. Myers
2013-02-27  3:17 ` [PATCH 06/26] arm: Use pc_ofs Richard Henderson
2013-02-28  0:21   ` Joseph S. Myers
2013-02-27  3:17 ` [PATCH 26/26] arm: Add optimized add_n and sub_n Richard Henderson
2013-02-27  3:17 ` [PATCH 25/26] arm: Add optimized submul_1 Richard Henderson
2013-02-27  3:17 ` [PATCH 02/26] arm: Update preconfigure fragment for gcc 4.8 Richard Henderson
2013-02-27 17:54   ` Joseph S. Myers
2013-02-27 18:11     ` Richard Henderson
2013-02-27 15:41 ` [PATCH 00/26] ARM improvements Måns Rullgård
2013-02-27 16:59 ` Joseph S. Myers
2013-02-27 17:34   ` Richard Henderson
2013-02-28 22:05 ` Joseph S. Myers

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).