This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 4/4] arm: Enable ARM mode for armv6 strlen


On Thu, 2018-04-12 at 17:49 -0300, Adhemerval Zanella wrote:
> Even though it configure the toolchain to not emit thumb, if user
> tries to optimize for armv7 (by tinkering with CC or CFLAGS) it will
> still emit thumb instructions because of the optimized assembly
> implementations.
> And the expectation imho is to if user explicit builds with -marm
> the resulting library should not user thumb instructions.

I think the precedent on other architectures is that glibc will use the
instruction set appropriate to the target triple it was given.  For
example, if you configure glibc for i686-linux-gnu then it will use
CMOV instructions, and setting -march=i586 in CFLAGS won't prevent
this.

I continue to feel that the scenario mentioned in the bug report you
linked to (configuring for armv7 but disabling Thumb in the kernel) is
just silly and we should not be indicating to users that this is
supported.  T32 is an integral part of ARMv7 (indeed, the M profile
doesn't support A32 at all) and if you take it out then the resulting
architecture is no longer ARMv7.  It seems undesirable to force all the
ARMv7-optimised assembly routines to also provide an ARM-only version
even if the resulting performance is the same or worse than the Thumb
implementation.  This code is never going to get tested in practice
(witness the fact that you found it's been broken for several years)
and it's just a liability.

> In fact, the whole idea of current code is indeed to prevent thumb
> instructions in such cases

That's true.  It's not entirely clear to me why Roland made that change
 in the first place but I think it was roughly contemporaneous with the
NaCl port and I'm sort of guessing it was something to do with that. 
Does anybody else know/remember?

p.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]