Florian Schmidt
9cf0c4a012
newlib/libc/stdlib/realloc.c: fix variable name
...
The variable doesn't follow the convention of having the same name as
the function it's bundled with. Furthermore, it clashes with the
variable of the same name in newlib/libc/stdlib/calloc.c.
Signed-off-by: Florian Schmidt <florian.schmidt@neclab.eu>
2017-11-14 10:18:30 +01:00
Joel Sherrill
b1a388799d
newlib/.../getreent.c: Allow to be provided by host and do so for RTEMS
...
RTEMS provides the option to have a global or per-thread reentrancy
as part of application configuration. As part of this, RTEMS provides
the implementation of __getreent() as appropriate. Allow the target
to determine if this method is present in libc.a.
2017-11-13 10:19:23 +01:00
Sebastian Huber
1f42dc2bcf
Make ffsl() and ffsll() BSD-visible
...
Since glibc 2.27, they are visible via _DEFAULT_SOURCE (__USE_MISC):
https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/commit/man3/ffs.3?id=247bbcf00c9a425ab0ad6e303ec8718e4ba844a6
In FreeBSD, they are guarded by __BSD_VISIBLE.
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-11-03 10:46:07 +01:00
Joel Sherrill
076ce7098f
newlib/configure.host: Remove obsolete definition of _I386MACH_ALLOW_HW_INTERRUPTS
...
The *-*-rtems* targets defined this even though the conditional
was no longer present in i386/setjmp.S.
2017-11-02 09:27:15 +01:00
Sebastian Huber
ce189d8afe
RTEMS: Remove internal timecounter API
...
Change copyright. Original BSD content moved to
<machine/_kernel_time.h>.
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-10-26 08:47:21 +02:00
Szabolcs Nagy
56e494c074
fix internal __ieee754_expf and __ieee754_logf calls
...
The recently added new math code inlines error handling instead of using
error handling wrappers around __ieee754* internal symbols, and thus the
__ieee754* symbols are no longer provided.
However __ieee754_expf and __ieee754_logf are used in the implementation
of a number of other math functions. These symbols are safe to redirect
to the external expf and logf symbols, because those names are always
reserved when single precision math functions are reserved and the
additional error handling code is either not reached or there will be
an error in the final result that will override an internal spurious
errno setting.
For consistency all of __ieee754_expf, __ieee754_logf and __ieee754_powf
are redirected using a macro.
2017-10-20 11:19:02 +02:00
Szabolcs Nagy
c156098271
New expf, exp2f, logf, log2f and powf implementations
...
Based on code from https://github.com/ARM-software/optimized-routines/
This patch adds a highly optimized generic implementation of expf,
exp2f, logf, log2f and powf. The new functions are not only
faster (6x for powf!), but are also smaller and more accurate.
In order to achieve this, the algorithm uses double precision
arithmetic for accuracy, avoids divisions and uses small table
lookups to minimize the polynomials. Special cases are handled
inline to avoid the unnecessary overhead of wrapper functions and
set errno to POSIX requirements.
The new functions are added under newlib/libm/common, but the old
implementations are kept (in newlib/libm/math) for non-IEEE or
pre-C99 systems. Targets can enable the new math code by defining
__OBSOLETE_MATH_DEFAULT to 0 in newlib/libc/include/machine/ieeefp.h,
users can override the default by defining __OBSOLETE_MATH.
Currently the new code is enabled for AArch64 and AArch32 with VFP.
Targets with a single precision FPU may still prefer the old
implementation.
libm.a size changes:
arm: -1692
arm/thumb/v7-a/nofp: -878
arm/thumb/v7-a+fp/hard: -864
arm/thumb/v7-a+fp/softfp: -908
aarch64: -1476
2017-10-13 10:58:00 +02:00
Sebastian Huber
c165a27c01
RTEMS: Fix _PTHREAD_MUTEX_INITIALIZER
...
Add missing braces around initializer.
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-10-13 08:07:13 +02:00
Michael Haubenwallner
15de9da0b9
Fix typo with newlib-long-time_t default value.
...
Fix typo for newlib-long-time_t to leave newlib-nano-malloc alone.
2017-10-09 17:55:19 +02:00
Sebastian Huber
3a79700c2d
RTEMS: Make pthread_mutex_t self-contained
...
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-10-05 14:56:13 +02:00
Sebastian Huber
55c5dda9b5
RTEMS: Make pthread_cond_t self-contained
...
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-10-05 14:56:13 +02:00
Sebastian Huber
d902eef093
RTEMS: Make pthread_rwlock_t self-contained
...
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-10-05 14:56:13 +02:00
Sebastian Huber
9187bb23a0
RTEMS: Make pthread_barrier_t self-contained
...
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-10-05 14:56:13 +02:00
Sebastian Huber
8253c240cb
RTEMS: Make sem_t self-contained
...
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-10-05 14:56:12 +02:00
Sebastian Huber
4fef7312b3
RTEMS: Optimize pthread_once_t
...
Reduce size of pthread_once_t and make it zero-initialized.
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-10-05 14:56:12 +02:00
Brian Inglis
f9b24fad7c
newlib/libm/complex/cargl.c change imag() real() to cimagl() creall()
2017-09-19 15:36:12 -05:00
Sebastian Huber
1592a0be0c
Fix warnings and documentation in strnstr.c
...
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-09-19 15:35:09 -05:00
Sebastian Huber
4de8754bac
Change time_t to 64-bit by default
...
In order to avoid the year 2038 problem, define time_t to a signed
integer with at least 64-bits. The type for time_t can be forced to
long with the --enable-newlib-long-time_t configure option or with the
_USE_LONG_TIME_T system configuration define.
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-09-07 15:39:34 +02:00
Sebastian Huber
ad45b86533
Remove harmful casts in gmtime_r()
...
In case time_t is long, then the cast to long is a nop. In case time_t
is __int_least64_t, then the cast to long may truncate the value before
the division.
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-09-07 15:39:34 +02:00
Sebastian Huber
f9205f1d47
Let RTEMS provide clock()
...
Newlib uses _times_r() in clock(). The problem is that the _times_r()
clock frequency is defined by sysconf(_SC_CLK_TCK). The clock frequency
of clock() is the constant CLOCKS_PER_SEC.
FreeBSD uses getrusage() for clock(). Since RTEMS has only one process,
the implementation can be simplified.
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-09-07 07:41:07 +02:00
Corinna Vinschen
e18b7ffa48
stdio.h: Don't define unlocked macros using static inline on C++
...
In C++, the usage of static inline functions for getchar_unlocked and
putchar_unlocked may result in error messages like
error: ‘_putchar_unlocked’ was not declared in this scope
Fix this by not using the _getchar_unlocked and _putchar_unlocked
macros in C++.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2017-09-04 10:52:33 +02:00
Yaakov Selkowitz
51d1fb715d
include: fix ffs, fls guards
...
Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2017-08-30 12:29:47 -05:00
Corinna Vinschen
192986ab03
newlib: string/Makefile.am (CHEWOUT_FILES): Add strnstr.def
...
Regenerate strings/Makefile.in
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2017-08-30 16:48:55 +02:00
Corinna Vinschen
5fc315b597
newlib: strnstr: drop traditional synopisis
...
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2017-08-30 16:45:36 +02:00
Sichen Zhao
42885ea4b8
Add man page entry for strnstr.c.
2017-08-30 15:10:07 +02:00
Sichen Zhao
f22054c94d
Modify strnstr.c.
2017-08-30 15:08:58 +02:00
Sebastian Huber
f1863582ed
Fix compile error due to new strnstr()
...
Remove local strnstr() implementation to fix compile error:
newlib/libc/iconv/lib/aliasesi.c:53:8: error: conflicting types for 'strnstr'
_DEFUN(strnstr, (haystack, needle, length),
^
In file included from newlib/libc/iconv/lib/aliasesi.c:29:0:
newlib/libc/include/string.h:125:10:
note: previous declaration of 'strnstr' was here
char *strnstr(const char *, const char *, size_t) __pure;
^~~~~~~
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-08-28 17:31:52 +02:00
Corinna Vinschen
c070326d31
newlib: rebuild string/Makefile.in
...
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2017-08-25 18:00:46 +02:00
Sichen Zhao
c206d04422
Port strnstr.c to newlib.
2017-08-25 18:00:46 +02:00
Sichen Zhao
3437665ac8
Import strnstr.c from FreeBSD.
2017-08-25 18:00:46 +02:00
Eric Blake
a4961ccd3f
Revert "headers: avoid bareword attributes" for clang
...
This reverts most of commit 979d467ff6
.
We cannot avoid some bareword attributes until clang is fixed to
properly support __-decorated attributes; see this bug:
https://bugs.llvm.org/show_bug.cgi?id=34319
The macros in question expand to the empty string under gcc, so
only compilation under clang is affected, and since clang has the
bug, the obvious solution is to roll back the changes, and document
the issue.
Signed-off-by: Eric Blake <eblake@redhat.com>
2017-08-25 09:23:10 -05:00
Sebastian Huber
524eb4dc29
RTEMS: Use __uint64_t for _CLOCK_T_
...
This addresses:
https://devel.rtems.org/ticket/2135
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-08-25 14:25:42 +02:00
Sebastian Huber
7b2c362190
Make _CLOCK_T_ system configurable
...
Let systems optionally provide the _CLOCK_T_ type via
<machine/_types.h>.
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-08-25 14:25:42 +02:00
Brian Inglis
406bd10fb4
newlib/libc/time/strptime.c(strptime_l) add %F %s support for strptime
2017-08-25 14:04:22 +02:00
Kito Cheng
bd86e9de75
Add myself to RISC-V Port Maintainer
2017-08-21 11:09:15 +02:00
Kito Cheng
6864c08b94
Change license to FreeBSD License for RISC-V
...
- For prevent confuse about what BSD license variant we used, 2- or
3-clause license, we change the license to FreeBSD license to make
it unambiguously refers to the 2-clause license.
2017-08-21 11:08:54 +02:00
Ken Brown
f665b1cef3
cygwin: Implement renameat2
...
Define the RENAME_NOREPLACE flag in <cygwin/fs.h> as defined on Linux
in <linux/fs.h>. The other RENAME_* flags defined on Linux are not
supported.
2017-08-19 18:06:49 +02:00
Kito Cheng
7040b2de08
Add RISC-V port for libm
...
Contributor list:
- Michael Neilly <mneilly@yahoo.com>
- Kito Cheng <kito.cheng@gmail.com>
2017-08-17 12:54:56 -04:00
Eric Blake
979d467ff6
headers: avoid bareword attributes
...
Always use the __-decorated form of an attribute name in public
headers, as the bareword form is in the user's namespace, and we
don't want compilation to break just because the user defines the
bareword to mean something else.
Signed-off-by: Eric Blake <eblake@redhat.com>
2017-08-17 07:10:03 -05:00
Kito Cheng
363dbb9e44
Add RISC-V port for newlib
...
Contributor list:
- Andrew Waterman <andrew@sifive.com>
- Palmer Dabbelt <palmer@dabbelt.com>
- Kito Cheng <kito.cheng@gmail.com>
- Scott Beamer <sbeamer@eecs.berkeley.edu>
2017-08-16 18:00:58 -04:00
Corinna Vinschen
9d602b98f8
newlib: regenerate libc/stdlib/Makefile.am
...
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2017-08-11 10:17:16 +02:00
Ken Brown
d7821c045e
Define sigsetjmp/siglongjmp only if __POSIX_VISIBLE
2017-08-07 16:07:46 +02:00
Sebastian Huber
b0f271d1db
Proper locking for getchar() and putchar()
...
Add internal inline functions _getchar_unlocked() and
_putchar_unlocked() if __CUSTOM_FILE_IO__ is not defined. These
functions get _REENT only once. Use them for getchar_unlocked() and
putchar_unlocked(). Define getchar() and putchar() to these unlocked
internal functions if __SINGLE_THREAD__ is defined, otherwise use the
external functions to use proper locking of the FILE object.
Assumes that __SINGLE_THREAD__ is not defined if __CYGWIN__ is defined.
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-08-07 07:54:58 +02:00
Aditya Upadhyay
a1c2491f70
Importing wcstoumax inttypes method from FreeBSD.
2017-08-02 13:02:26 +02:00
Aditya Upadhyay
88abc0958b
Importing wcstoimax inttypes method from FreeBSD.
2017-08-02 13:02:26 +02:00
Aditya Upadhyay
fd1981a7df
Importing strtoumax inttypes method from FreeBSD.
2017-08-02 13:02:26 +02:00
Aditya Upadhyay
910cc30c10
Importing strtoimax inttypes method from FreeBSD.
2017-08-02 13:02:26 +02:00
Yaakov Selkowitz
4aaec3cb88
Add elf.h to newlib
...
This is copied from musl (MIT license). This is newer and more thorough
than that of FreeBSD currently shipped only on Cygwin.
Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2017-08-02 01:18:55 -05:00
Aditya Upadhyay
0e0900cb40
Importing catanl long double complex method from NetBSD.
2017-07-28 20:36:09 +02:00
Aditya Upadhyay
124ccc500e
Fixing HUGE_VALF to HUGE_VALL.
2017-07-28 20:30:30 +02:00
Sebastian Huber
7dad0e441a
stdio: Fix make rule override
...
The Makefile.am contained two rules for the vfwscanf object.
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-07-28 15:05:54 +02:00
Corinna Vinschen
a7a7980f7b
newlib: regenerate stdlib/Makefile.in
...
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2017-07-28 12:44:45 +02:00
Aditya Upadhyay
4b2fc8c55e
Importing imaxdiv inttypes method from FreeBSD.
2017-07-28 12:23:10 +02:00
Aditya Upadhyay
a785f0f69a
Importing imaxabs inttypes method from FreeBSD.
2017-07-28 12:23:08 +02:00
Corinna Vinschen
8322a87c16
cygwin: Set __STDC_ISO_10646__ to Unicode 5.2 value
...
Now that XP is not supported anymore we can freely do that.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2017-07-26 11:49:58 +02:00
Richard Earnshaw
d6cac3e1da
[arm] Fix strcpy for unified syntax on ARMv4t thumb.
...
ARMv4t does not support mov between two low registers. Now we use
unified syntax mov instructions need converting to movs.
2017-07-21 11:23:27 +01:00
Jozef Lawrynowicz
25138cc2a6
MSP430: Define __BUFSIZ__ as 256 to prevent default of 1024 being used
2017-07-20 16:18:54 +02:00
Ian Tessier via newlib
4bce7ecbe1
arm: Update strcpy.c to use UAL syntax.
...
With this change the arm platform can now be fully compiled with Clang.
Tested by comparing the output with GCC 4.8.2, and Clang 4.0, using a
variety of arches, big/little endianness, and arm/thumb mode to verify
the generated assembly output matches between GCC vs Clang with UAL, and
also GCC with UAL vs GCC with non-UAL, for all preprocessor code blocks.
The only difference found is an extra nop at the end of the function
when compiled with GCC using armv7-a/thumb/little-endian/-O2 compared to
Clang. The nop is not emitted when compiled in big-endian mode.
2017-07-20 16:18:29 +02:00
Sebastian Huber
a3617d7bde
Synchronize RTEMS <sys/bitset.h> with FreeBSD
...
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-07-12 08:04:45 +02:00
Sebastian Huber
870dc91de6
Add myself to OS Port Maintainers (RTEMS)
2017-07-10 09:48:50 +02:00
Sebastian Huber
1d49ce4d6b
Synchronize RTEMS <sys/bitset.h> with FreeBSD
...
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-07-10 07:18:10 +02:00
David Macek
bf61b38d98
Rename __in and __out in headers to avoid collision with Windows APIs
...
* string.h: Local variables in expansion of strdupa and strndupa
* sys/wait.h: Fields in anonymous union in expansion of __wait_status_to_int
2017-07-07 16:37:44 +02:00
Aditya Upadhyay
be3ca39474
Fixed warnings for some long double complex methods
2017-07-05 14:40:02 +02:00
Sebastian Huber
461152e4eb
Add ffsl(), ffsll(), fls(), flsl(), flsll()
...
Use compiler builtin for ffs(). Remove duplicate implementation from
Cygwin.
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-07-05 13:49:48 +02:00
Sebastian Huber
2390e71a42
Synchronize <strings.h> with latest FreeBSD
...
Include <strings.h> in <string.h> if __BSD_VISIBLE like on FreeBSD.
Remove redundant declarations from <string.h>. Make ffsl(), ffsll(),
strncasecmp(), strcasecmp_l(), and strncasecmp_l() visible via
__BSD_VISIBLE instead of __GNU_VISIBLE. Add fls(), flsl(), and flsll()
to <strings.h> if __BSD_VISIBLE.
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-07-05 13:49:48 +02:00
Sebastian Huber
d736941a51
Implement bzero() via memset()
...
Use memset() to implement bzero() to profit from machine-specific
memset() optimizations.
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-07-05 13:49:48 +02:00
Yaakov Selkowitz
e4ee6c9aaf
Feature test macros overhaul: unistd.h, part 2
...
This fixes commit f70aad3de4
as well as some
other functions which were never properly guarded.
Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2017-06-30 10:48:23 -05:00
Sebastian Huber
a254c82486
Add --enable-newlib-global-stdio-streams
...
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-06-30 07:45:16 +02:00
Sebastian Huber
d2e256a36a
Enable _REENT_GLOBAL_STDIO_STREAMS for RTEMS
...
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-06-30 07:45:16 +02:00
Sebastian Huber
668a4c8722
Introduce _REENT_GLOBAL_STDIO_STREAMS
...
In Newlib, the stdio streams are defined to thread-specific pointers
_reent::_stdin, _reent::_stdout and _reent::_stderr. In case
_REENT_SMALL is not defined, then these pointers are initialized via
_REENT_INIT_PTR() or _REENT_INIT_PTR_ZEROED() to thread-specific FILE
objects provided via _reent::__sf[3]. There are two problems with this
(at least in case of RTEMS).
(1) The thread-specific FILE objects are closed by _reclaim_reent().
This leads to problems with language run-time libraries that provide
wrappers to the C/POSIX stdio streams (e.g. C++ and Ada), since they
use the thread-specific FILE objects of the initialization thread. In
case the initialization thread is deleted, then they use freed memory.
(2) Since thread-specific FILE objects are used with a common output
device via file descriptors 0, 1 and 2, the locking at FILE object level
cannot ensure atomicity of the output, e.g. a call to printf().
Introduce a new Newlib configuration option _REENT_GLOBAL_STDIO_STREAMS
to enable the use of global stdio FILE objects.
As a side-effect this reduces the size of struct _reent by more than
50%.
The _REENT_GLOBAL_STDIO_STREAMS should not be used without
_STDIO_CLOSE_PER_REENT_STD_STREAMS.
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-06-30 07:45:16 +02:00
Sebastian Huber
79cc9cb8f3
Add stdin_init(), stdout_init() and stderr_init()
...
This simplifies further changes in this area.
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-06-30 07:45:15 +02:00
Sebastian Huber
b70c0bc706
Remove superfluous parameter from std()
...
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2017-06-30 07:45:15 +02:00
Wilco Dijkstra
c86063bdc0
Optimized memcmp
...
This is an optimized memcmp for AArch64. This is a complete rewrite
using a different algorithm. The previous version split into cases
where both inputs were aligned, the inputs were mutually aligned and
unaligned using a byte loop. The new version combines all these cases,
while small inputs of less than 8 bytes are handled separately.
This allows the main code to be sped up using unaligned loads since
there are now at least 8 bytes to be compared. After the first 8 bytes,
align the first input. This ensures each iteration does at most one
unaligned access and mutually aligned inputs behave as aligned.
After the main loop, process the last 8 bytes using unaligned accesses.
This improves performance of (mutually) aligned cases by 25% and
unaligned by >500% (yes >6 times faster) on large inputs.
ChangeLog:
2017-06-28 Wilco Dijkstra <wdijkstr@arm.com>
* newlib/libc/machine/aarch64/memcmp.S (memcmp):
Rewrite of optimized memcmp.
GLIBC benchtests/bench-memcmp.c performance comparison for Cortex-A53:
Length 1, alignment 1/ 1: 153%
Length 1, alignment 1/ 1: 119%
Length 1, alignment 1/ 1: 154%
Length 2, alignment 2/ 2: 121%
Length 2, alignment 2/ 2: 140%
Length 2, alignment 2/ 2: 121%
Length 3, alignment 3/ 3: 105%
Length 3, alignment 3/ 3: 105%
Length 3, alignment 3/ 3: 105%
Length 4, alignment 4/ 4: 155%
Length 4, alignment 4/ 4: 154%
Length 4, alignment 4/ 4: 161%
Length 5, alignment 5/ 5: 173%
Length 5, alignment 5/ 5: 173%
Length 5, alignment 5/ 5: 173%
Length 6, alignment 6/ 6: 145%
Length 6, alignment 6/ 6: 145%
Length 6, alignment 6/ 6: 145%
Length 7, alignment 7/ 7: 125%
Length 7, alignment 7/ 7: 125%
Length 7, alignment 7/ 7: 125%
Length 8, alignment 8/ 8: 111%
Length 8, alignment 8/ 8: 130%
Length 8, alignment 8/ 8: 124%
Length 9, alignment 9/ 9: 160%
Length 9, alignment 9/ 9: 160%
Length 9, alignment 9/ 9: 150%
Length 10, alignment 10/10: 170%
Length 10, alignment 10/10: 137%
Length 10, alignment 10/10: 150%
Length 11, alignment 11/11: 160%
Length 11, alignment 11/11: 160%
Length 11, alignment 11/11: 160%
Length 12, alignment 12/12: 146%
Length 12, alignment 12/12: 168%
Length 12, alignment 12/12: 156%
Length 13, alignment 13/13: 167%
Length 13, alignment 13/13: 167%
Length 13, alignment 13/13: 173%
Length 14, alignment 14/14: 167%
Length 14, alignment 14/14: 168%
Length 14, alignment 14/14: 168%
Length 15, alignment 15/15: 168%
Length 15, alignment 15/15: 173%
Length 15, alignment 15/15: 173%
Length 1, alignment 0/ 0: 134%
Length 1, alignment 0/ 0: 127%
Length 1, alignment 0/ 0: 119%
Length 2, alignment 0/ 0: 94%
Length 2, alignment 0/ 0: 94%
Length 2, alignment 0/ 0: 106%
Length 3, alignment 0/ 0: 82%
Length 3, alignment 0/ 0: 87%
Length 3, alignment 0/ 0: 82%
Length 4, alignment 0/ 0: 115%
Length 4, alignment 0/ 0: 115%
Length 4, alignment 0/ 0: 122%
Length 5, alignment 0/ 0: 127%
Length 5, alignment 0/ 0: 119%
Length 5, alignment 0/ 0: 127%
Length 6, alignment 0/ 0: 103%
Length 6, alignment 0/ 0: 100%
Length 6, alignment 0/ 0: 100%
Length 7, alignment 0/ 0: 82%
Length 7, alignment 0/ 0: 91%
Length 7, alignment 0/ 0: 87%
Length 8, alignment 0/ 0: 111%
Length 8, alignment 0/ 0: 124%
Length 8, alignment 0/ 0: 124%
Length 9, alignment 0/ 0: 136%
Length 9, alignment 0/ 0: 136%
Length 9, alignment 0/ 0: 136%
Length 10, alignment 0/ 0: 136%
Length 10, alignment 0/ 0: 135%
Length 10, alignment 0/ 0: 136%
Length 11, alignment 0/ 0: 136%
Length 11, alignment 0/ 0: 136%
Length 11, alignment 0/ 0: 135%
Length 12, alignment 0/ 0: 136%
Length 12, alignment 0/ 0: 136%
Length 12, alignment 0/ 0: 136%
Length 13, alignment 0/ 0: 135%
Length 13, alignment 0/ 0: 136%
Length 13, alignment 0/ 0: 136%
Length 14, alignment 0/ 0: 136%
Length 14, alignment 0/ 0: 136%
Length 14, alignment 0/ 0: 136%
Length 15, alignment 0/ 0: 136%
Length 15, alignment 0/ 0: 136%
Length 15, alignment 0/ 0: 136%
Length 4, alignment 0/ 0: 115%
Length 4, alignment 0/ 0: 115%
Length 4, alignment 0/ 0: 115%
Length 32, alignment 0/ 0: 127%
Length 32, alignment 7/ 2: 395%
Length 32, alignment 0/ 0: 127%
Length 32, alignment 0/ 0: 127%
Length 8, alignment 0/ 0: 111%
Length 8, alignment 0/ 0: 124%
Length 8, alignment 0/ 0: 124%
Length 64, alignment 0/ 0: 128%
Length 64, alignment 6/ 4: 475%
Length 64, alignment 0/ 0: 131%
Length 64, alignment 0/ 0: 134%
Length 16, alignment 0/ 0: 128%
Length 16, alignment 0/ 0: 119%
Length 16, alignment 0/ 0: 128%
Length 128, alignment 0/ 0: 129%
Length 128, alignment 5/ 6: 475%
Length 128, alignment 0/ 0: 130%
Length 128, alignment 0/ 0: 129%
Length 32, alignment 0/ 0: 126%
Length 32, alignment 0/ 0: 126%
Length 32, alignment 0/ 0: 126%
Length 256, alignment 0/ 0: 127%
Length 256, alignment 4/ 8: 545%
Length 256, alignment 0/ 0: 126%
Length 256, alignment 0/ 0: 128%
Length 64, alignment 0/ 0: 171%
Length 64, alignment 0/ 0: 171%
Length 64, alignment 0/ 0: 174%
Length 512, alignment 0/ 0: 126%
Length 512, alignment 3/10: 585%
Length 512, alignment 0/ 0: 126%
Length 512, alignment 0/ 0: 127%
Length 128, alignment 0/ 0: 129%
Length 128, alignment 0/ 0: 128%
Length 128, alignment 0/ 0: 129%
Length 1024, alignment 0/ 0: 125%
Length 1024, alignment 2/12: 611%
Length 1024, alignment 0/ 0: 126%
Length 1024, alignment 0/ 0: 126%
Length 256, alignment 0/ 0: 128%
Length 256, alignment 0/ 0: 127%
Length 256, alignment 0/ 0: 128%
Length 2048, alignment 0/ 0: 125%
Length 2048, alignment 1/14: 625%
Length 2048, alignment 0/ 0: 125%
Length 2048, alignment 0/ 0: 125%
Length 512, alignment 0/ 0: 126%
Length 512, alignment 0/ 0: 127%
Length 512, alignment 0/ 0: 127%
Length 4096, alignment 0/ 0: 125%
Length 4096, alignment 0/16: 125%
Length 4096, alignment 0/ 0: 125%
Length 4096, alignment 0/ 0: 125%
Length 1024, alignment 0/ 0: 126%
Length 1024, alignment 0/ 0: 126%
Length 1024, alignment 0/ 0: 126%
Length 8192, alignment 0/ 0: 125%
Length 8192, alignment 63/18: 636%
Length 8192, alignment 0/ 0: 125%
Length 8192, alignment 0/ 0: 125%
Length 16, alignment 1/ 2: 317%
Length 16, alignment 1/ 2: 317%
Length 16, alignment 1/ 2: 317%
Length 32, alignment 2/ 4: 395%
Length 32, alignment 2/ 4: 395%
Length 32, alignment 2/ 4: 398%
Length 64, alignment 3/ 6: 475%
Length 64, alignment 3/ 6: 475%
Length 64, alignment 3/ 6: 477%
Length 128, alignment 4/ 8: 479%
Length 128, alignment 4/ 8: 479%
Length 128, alignment 4/ 8: 479%
Length 256, alignment 5/10: 543%
Length 256, alignment 5/10: 539%
Length 256, alignment 5/10: 543%
Length 512, alignment 6/12: 585%
Length 512, alignment 6/12: 585%
Length 512, alignment 6/12: 585%
Length 1024, alignment 7/14: 611%
Length 1024, alignment 7/14: 611%
Length 1024, alignment 7/14: 611%
2017-06-29 20:36:35 +02:00
Corinna Vinschen
181d8393ae
newlib: fix file mode of newly added complex sources
...
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2017-06-29 15:30:35 +02:00
Corinna Vinschen
074ca98595
newlib: libm/complex/Makefile.in: regenerate
2017-06-29 13:55:10 +02:00
Aditya Upadhyay
45ae81fc91
Adding csinl.c in Makefile.am
...
Signed-off-by: Aditya Upadhyay <aadit0402@gmail.com>
2017-06-29 13:54:34 +02:00
Aditya Upadhyay
5bc320d3b5
Importing csinl.c from NetBSD.
2017-06-29 13:54:31 +02:00
Aditya Upadhyay
72b051888e
Importing csinhl.c from NetBSD.
2017-06-29 13:44:32 +02:00
Aditya Upadhyay
0d924f0e02
Importing casinhl.c from NetBSD.
2017-06-29 13:44:32 +02:00
Aditya Upadhyay
f834c77e7d
Importing ctanl.c from NetBSD.
2017-06-29 13:44:32 +02:00
Aditya Upadhyay
67b376ad3f
Importing ctanhl.c from NetBSD.
2017-06-29 13:44:31 +02:00
Aditya Upadhyay
c907007fb0
Importing cpowl.c from NetBSD.
2017-06-29 13:44:31 +02:00
Aditya Upadhyay
716d7107e4
Importing conjl.c from NetBSD.
2017-06-29 13:44:31 +02:00
Aditya Upadhyay
fdf82d6f1b
Importing catanhl.c from NetBSD.
2017-06-29 13:44:31 +02:00
Aditya Upadhyay
a168d244c6
Importing casinl.c from NetBSD.
2017-06-29 13:44:31 +02:00
Aditya Upadhyay
ed09969078
Importing ccosl.c from NetBSD.
2017-06-29 13:44:31 +02:00
Aditya Upadhyay
28daf6d48b
Importing cacosl.c from NetBSD.
2017-06-29 13:44:31 +02:00
Aditya Upadhyay
eee8294c42
Adding cephes_subrl.h and cephes_subrl.c from NetBSD.
2017-06-29 13:44:31 +02:00
Aditya Upadhyay
b1b12e1e00
Importing cexpl.c from NetBSD.
2017-06-29 13:44:31 +02:00
Aditya Upadhyay
4c2556e935
Importing cprojl.c from NetBSD.
2017-06-29 13:44:31 +02:00
Aditya Upadhyay
3f1f3a2299
Importing cargl.c from NetBSD.
2017-06-29 13:44:31 +02:00
Aditya Upadhyay
436bf2929c
Importing csqrtl.c from NetBSD.
2017-06-29 13:44:31 +02:00
Aditya Upadhyay
79c8462d86
Importing clogl.c from NetBSD.
2017-06-29 13:44:31 +02:00
Aditya Upadhyay
934145f311
Importing cacoshl.c from NetBSD.
2017-06-29 13:44:31 +02:00
Dionna Glaze
d12fe7b6da
unistd.h: Remove trailing whitespace
2017-06-29 08:34:19 +02:00
Corinna Vinschen
01a5a306da
unistd.h: remove mktemp
...
mktemp is already correctly declared in stdlib.h
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2017-06-29 08:32:33 +02:00
Dionna Glaze
f70aad3de4
Make gethostname, getdtablesize, mktemp, ualarm available in BSD, XOPEN_SOURCE >= 500.
2017-06-29 08:30:33 +02:00
Sebastian Pop
9938a64ca9
aarch64: optimize the unaligned case of memcmp
...
This brings to newlib a performance improvement that we developed in Bionic
libc. That change has been submitted for review to Bionic libc:
https://android-review.googlesource.com/418279
A similar patch has been submitted for review in glibc:
https://sourceware.org/ml/libc-alpha/2017-06/msg01143.html
Patch written by Vikas Sinha and Sebastian Pop.
The performance was measured on the bionic-benchmarks on a hikey (aarch64 8xA53)
board. There was no performance change to the existing benchmark
and a performance improvement on the new benchmark for memcmp
on the unaligned side. The new benchmark has been submitted for
review at https://android-review.googlesource.com/414860
The overall performance improves by 18% for the small data set 8
and the performance improves by 450% for the large data set 64k.
The base is with the libc from /system/lib64. The bionic libc
with this patch is in /data.
hikey:/data # export LD_LIBRARY_PATH=/system/lib64
hikey:/data # ./bionic-benchmarks --benchmark_filter='BM_string_memcmp*'
Run on (8 X 2.4 MHz CPU s)
Benchmark Time CPU Iterations
----------------------------------------------------------------------
BM_string_memcmp/8 30 ns 30 ns 22955680 251.07MB/s
BM_string_memcmp/64 57 ns 57 ns 12349184 1076.99MB/s
BM_string_memcmp/512 305 ns 305 ns 2297163 1.56496GB/s
BM_string_memcmp/1024 571 ns 571 ns 1225211 1.66912GB/s
BM_string_memcmp/8k 4307 ns 4306 ns 162562 1.77177GB/s
BM_string_memcmp/16k 8676 ns 8675 ns 80676 1.75887GB/s
BM_string_memcmp/32k 19233 ns 19230 ns 36394 1.58695GB/s
BM_string_memcmp/64k 36986 ns 36984 ns 18952 1.65029GB/s
BM_string_memcmp_aligned/8 199 ns 199 ns 3519166 38.3336MB/s
BM_string_memcmp_aligned/64 386 ns 386 ns 1810734 158.073MB/s
BM_string_memcmp_aligned/512 1735 ns 1734 ns 403981 281.525MB/s
BM_string_memcmp_aligned/1024 3200 ns 3200 ns 218838 305.151MB/s
BM_string_memcmp_aligned/8k 25084 ns 25080 ns 28180 311.507MB/s
BM_string_memcmp_aligned/16k 51730 ns 51729 ns 13521 302.057MB/s
BM_string_memcmp_aligned/32k 103228 ns 103228 ns 6782 302.727MB/s
BM_string_memcmp_aligned/64k 207117 ns 207087 ns 3450 301.806MB/s
BM_string_memcmp_unaligned/8 339 ns 339 ns 2070998 22.5302MB/s
BM_string_memcmp_unaligned/64 1392 ns 1392 ns 502796 43.8454MB/s
BM_string_memcmp_unaligned/512 9194 ns 9194 ns 76133 53.1104MB/s
BM_string_memcmp_unaligned/1024 18325 ns 18323 ns 38206 53.2963MB/s
BM_string_memcmp_unaligned/8k 148579 ns 148574 ns 4713 52.5831MB/s
BM_string_memcmp_unaligned/16k 298169 ns 298120 ns 2344 52.4118MB/s
BM_string_memcmp_unaligned/32k 598813 ns 598797 ns 1085 52.188MB/s
BM_string_memcmp_unaligned/64k 1196079 ns 1196083 ns 540 52.2539MB/s
hikey:/data # export LD_LIBRARY_PATH=/data
hikey:/data # ./bionic-benchmarks --benchmark_filter='BM_string_memcmp*'
Run on (8 X 2.4 MHz CPU s)
Benchmark Time CPU Iterations
----------------------------------------------------------------------
BM_string_memcmp/8 30 ns 30 ns 23209918 252.802MB/s
BM_string_memcmp/64 57 ns 57 ns 12348447 1076.95MB/s
BM_string_memcmp/512 305 ns 305 ns 2296878 1.56471GB/s
BM_string_memcmp/1024 572 ns 571 ns 1224426 1.6689GB/s
BM_string_memcmp/8k 4309 ns 4308 ns 162491 1.77109GB/s
BM_string_memcmp/16k 9348 ns 9345 ns 74894 1.63285GB/s
BM_string_memcmp/32k 18329 ns 18322 ns 38249 1.6656GB/s
BM_string_memcmp/64k 36992 ns 36981 ns 18952 1.65045GB/s
BM_string_memcmp_aligned/8 199 ns 199 ns 3513925 38.3162MB/s
BM_string_memcmp_aligned/64 386 ns 386 ns 1814038 158.192MB/s
BM_string_memcmp_aligned/512 1735 ns 1735 ns 402279 281.502MB/s
BM_string_memcmp_aligned/1024 3204 ns 3202 ns 218761 304.941MB/s
BM_string_memcmp_aligned/8k 25577 ns 25569 ns 27406 305.548MB/s
BM_string_memcmp_aligned/16k 52143 ns 52123 ns 13522 299.769MB/s
BM_string_memcmp_aligned/32k 105169 ns 105127 ns 6637 297.26MB/s
BM_string_memcmp_aligned/64k 206508 ns 206383 ns 3417 302.835MB/s
BM_string_memcmp_unaligned/8 282 ns 282 ns 2482953 27.062MB/s
BM_string_memcmp_unaligned/64 542 ns 541 ns 1298317 112.77MB/s
BM_string_memcmp_unaligned/512 2152 ns 2152 ns 325267 226.915MB/s
BM_string_memcmp_unaligned/1024 4025 ns 4025 ns 173904 242.622MB/s
BM_string_memcmp_unaligned/8k 32276 ns 32271 ns 21818 242.09MB/s
BM_string_memcmp_unaligned/16k 65970 ns 65970 ns 10554 236.851MB/s
BM_string_memcmp_unaligned/32k 131241 ns 131242 ns 5129 238.11MB/s
BM_string_memcmp_unaligned/64k 266159 ns 266160 ns 2661 234.821MB/s
2017-06-26 10:22:40 +02:00
Yaakov Selkowitz
ec86124748
string: fix strverscmp doc inclusion
...
Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2017-06-19 11:52:02 -05:00
Yaakov Selkowitz
59e09b6419
string: add strverscmp
...
The actual implementation is from musl (MIT license).
Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2017-06-19 08:16:42 -05:00