Merge "Remove optimized code for bzero, which was removed from POSIX in 2008."
This commit is contained in:
commit
6809af0375
16 changed files with 20 additions and 205 deletions
|
@ -40,7 +40,7 @@
|
|||
|
||||
ENTRY(__memset_chk)
|
||||
cmp r2, r3
|
||||
bls .L_done
|
||||
bls memset
|
||||
|
||||
// Preserve lr for backtrace.
|
||||
push {lr}
|
||||
|
@ -50,13 +50,6 @@ ENTRY(__memset_chk)
|
|||
bl __memset_chk_fail
|
||||
END(__memset_chk)
|
||||
|
||||
ENTRY(bzero)
|
||||
mov r2, r1
|
||||
mov r1, #0
|
||||
.L_done:
|
||||
// Fall through to memset...
|
||||
END(bzero)
|
||||
|
||||
ENTRY(memset)
|
||||
stmfd sp!, {r0}
|
||||
.cfi_def_cfa_offset 4
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
ENTRY(__memset_chk)
|
||||
cmp r2, r3
|
||||
bls .L_done
|
||||
bls memset
|
||||
|
||||
// Preserve lr for backtrace.
|
||||
push {lr}
|
||||
|
@ -50,13 +50,6 @@ ENTRY(__memset_chk)
|
|||
bl __memset_chk_fail
|
||||
END(__memset_chk)
|
||||
|
||||
ENTRY(bzero)
|
||||
mov r2, r1
|
||||
mov r1, #0
|
||||
.L_done:
|
||||
// Fall through to memset...
|
||||
END(bzero)
|
||||
|
||||
ENTRY(memset)
|
||||
mov r3, r0
|
||||
// At this point only d0, d1 are going to be used below.
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
|
||||
ENTRY(__memset_chk)
|
||||
cmp r2, r3
|
||||
bls .L_done
|
||||
bls memset
|
||||
|
||||
// Preserve lr for backtrace.
|
||||
push {lr}
|
||||
|
@ -48,14 +48,6 @@ ENTRY(__memset_chk)
|
|||
bl __memset_chk_fail
|
||||
END(__memset_chk)
|
||||
|
||||
ENTRY(bzero)
|
||||
mov r2, r1
|
||||
mov r1, #0
|
||||
|
||||
.L_done:
|
||||
// Fall through to memset...
|
||||
END(bzero)
|
||||
|
||||
/* memset() returns its first argument. */
|
||||
ENTRY(memset)
|
||||
// The neon memset only wins for less than 132.
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
|
||||
ENTRY(__memset_chk)
|
||||
cmp r2, r3
|
||||
bls .L_done
|
||||
bls memset
|
||||
|
||||
// Preserve lr for backtrace.
|
||||
push {lr}
|
||||
|
@ -52,13 +52,6 @@ ENTRY(__memset_chk)
|
|||
bl __memset_chk_fail
|
||||
END(__memset_chk)
|
||||
|
||||
ENTRY(bzero)
|
||||
mov r2, r1
|
||||
mov r1, #0
|
||||
.L_done:
|
||||
// Fall through to memset...
|
||||
END(bzero)
|
||||
|
||||
ENTRY(memset)
|
||||
pldw [r0]
|
||||
mov r3, r0
|
||||
|
|
|
@ -38,19 +38,11 @@
|
|||
|
||||
ENTRY(__memset_chk)
|
||||
cmp r2, r3
|
||||
bls done
|
||||
bls memset
|
||||
|
||||
bl __memset_chk_fail
|
||||
END(__memset_chk)
|
||||
|
||||
ENTRY(bzero)
|
||||
mov r2, r1
|
||||
mov r1, #0
|
||||
|
||||
done:
|
||||
// Fall through to memset...
|
||||
END(bzero)
|
||||
|
||||
ENTRY(memset)
|
||||
/* compute the offset to align the destination
|
||||
* offset = (4-(src&3))&3 = -src & 3
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
ENTRY(__memset_chk)
|
||||
cmp r2, r3
|
||||
bls .L_done
|
||||
bls memset
|
||||
|
||||
// Preserve lr for backtrace.
|
||||
push {lr}
|
||||
|
@ -50,14 +50,6 @@ ENTRY(__memset_chk)
|
|||
bl __memset_chk_fail
|
||||
END(__memset_chk)
|
||||
|
||||
ENTRY(bzero)
|
||||
mov r2, r1
|
||||
mov r1, #0
|
||||
|
||||
.L_done:
|
||||
// Fall through to memset...
|
||||
END(bzero)
|
||||
|
||||
/* memset() returns its first argument. */
|
||||
ENTRY(memset)
|
||||
mov r3, r0
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <private/bionic_asm.h>
|
||||
|
||||
// void bzero(void*, size_t);
|
||||
ENTRY(bzero)
|
||||
.set noreorder
|
||||
.cpload t9
|
||||
move a2,a1
|
||||
la t9,memset
|
||||
j t9
|
||||
move a1,zero
|
||||
END(bzero)
|
|
@ -12,7 +12,6 @@ libc_bionic_src_files_mips += \
|
|||
|
||||
libc_bionic_src_files_mips += \
|
||||
arch-mips/bionic/__bionic_clone.S \
|
||||
arch-mips/bionic/bzero.S \
|
||||
arch-mips/bionic/cacheflush.cpp \
|
||||
arch-mips/bionic/_exit_with_stack_teardown.S \
|
||||
arch-mips/bionic/libgcc_compat.c \
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
libc_bionic_src_files_x86 += \
|
||||
arch-x86/atom/string/sse2-bzero-atom.S \
|
||||
arch-x86/atom/string/sse2-memset-atom.S \
|
||||
arch-x86/atom/string/sse2-strlen-atom.S \
|
||||
arch-x86/atom/string/ssse3-bcopy-atom.S \
|
||||
|
@ -15,7 +14,6 @@ libc_bionic_src_files_exclude_x86 += \
|
|||
|
||||
libc_bionic_src_files_exclude_x86 += \
|
||||
arch-x86/silvermont/string/sse2-bcopy-slm.S \
|
||||
arch-x86/silvermont/string/sse2-bzero-slm.S \
|
||||
arch-x86/silvermont/string/sse2-memcpy-slm.S \
|
||||
arch-x86/silvermont/string/sse2-memmove-slm.S \
|
||||
arch-x86/silvermont/string/sse2-memset-slm.S \
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
/*
|
||||
Copyright (c) 2010, Intel Corporation
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of Intel Corporation nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#define USE_AS_BZERO
|
||||
#define MEMSET bzero
|
||||
#include "sse2-memset-atom.S"
|
|
@ -84,16 +84,10 @@ name: \
|
|||
#define PUSH(REG) pushl REG; CFI_PUSH (REG)
|
||||
#define POP(REG) popl REG; CFI_POP (REG)
|
||||
|
||||
#ifdef USE_AS_BZERO
|
||||
# define DEST PARMS
|
||||
# define LEN DEST+4
|
||||
# define SETRTNVAL
|
||||
#else
|
||||
# define DEST PARMS
|
||||
# define CHR DEST+4
|
||||
# define LEN CHR+4
|
||||
# define SETRTNVAL movl DEST(%esp), %eax
|
||||
#endif
|
||||
#define DEST PARMS
|
||||
#define CHR DEST+4
|
||||
#define LEN CHR+4
|
||||
#define SETRTNVAL movl DEST(%esp), %eax
|
||||
|
||||
#if (defined SHARED || defined __PIC__)
|
||||
# define ENTRANCE PUSH (%ebx);
|
||||
|
@ -148,16 +142,12 @@ ENTRY (MEMSET)
|
|||
ENTRANCE
|
||||
|
||||
movl LEN(%esp), %ecx
|
||||
#ifdef USE_AS_BZERO
|
||||
xor %eax, %eax
|
||||
#else
|
||||
movzbl CHR(%esp), %eax
|
||||
movb %al, %ah
|
||||
/* Fill the whole EAX with pattern. */
|
||||
movl %eax, %edx
|
||||
shl $16, %eax
|
||||
or %edx, %eax
|
||||
#endif
|
||||
movl DEST(%esp), %edx
|
||||
cmp $32, %ecx
|
||||
jae L(32bytesormore)
|
||||
|
@ -287,12 +277,8 @@ L(write_3bytes):
|
|||
/* ECX > 32 and EDX is 4 byte aligned. */
|
||||
L(32bytesormore):
|
||||
/* Fill xmm0 with the pattern. */
|
||||
#ifdef USE_AS_BZERO
|
||||
pxor %xmm0, %xmm0
|
||||
#else
|
||||
movd %eax, %xmm0
|
||||
pshufd $0, %xmm0, %xmm0
|
||||
#endif
|
||||
testl $0xf, %edx
|
||||
jz L(aligned_16)
|
||||
/* ECX > 32 and EDX is not 16 byte aligned. */
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
/*
|
||||
Copyright (c) 2014, Intel Corporation
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of Intel Corporation nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#define USE_AS_BZERO
|
||||
#define MEMSET bzero
|
||||
#include "sse2-memset-slm.S"
|
|
@ -88,16 +88,10 @@ name: \
|
|||
#define PUSH(REG) pushl REG; CFI_PUSH (REG)
|
||||
#define POP(REG) popl REG; CFI_POP (REG)
|
||||
|
||||
#ifdef USE_AS_BZERO
|
||||
# define DEST PARMS
|
||||
# define LEN DEST+4
|
||||
# define SETRTNVAL
|
||||
#else
|
||||
# define DEST PARMS
|
||||
# define CHR DEST+4
|
||||
# define LEN CHR+4
|
||||
# define SETRTNVAL movl DEST(%esp), %eax
|
||||
#endif
|
||||
#define DEST PARMS
|
||||
#define CHR DEST+4
|
||||
#define LEN CHR+4
|
||||
#define SETRTNVAL movl DEST(%esp), %eax
|
||||
|
||||
#if (defined SHARED || defined __PIC__)
|
||||
# define ENTRANCE PUSH (%ebx);
|
||||
|
@ -154,16 +148,12 @@ ENTRY (MEMSET)
|
|||
RETURN
|
||||
|
||||
L(1byteormore):
|
||||
#ifdef USE_AS_BZERO
|
||||
xor %eax, %eax
|
||||
#else
|
||||
movzbl CHR(%esp), %eax
|
||||
movb %al, %ah
|
||||
/* Fill the whole EAX with pattern. */
|
||||
movl %eax, %edx
|
||||
shl $16, %eax
|
||||
or %edx, %eax
|
||||
#endif
|
||||
movl DEST(%esp), %edx
|
||||
cmp $1, %ecx
|
||||
je L(1byte)
|
||||
|
@ -195,12 +185,8 @@ L(1byte):
|
|||
|
||||
ALIGN (4)
|
||||
L(16bytesormore):
|
||||
#ifdef USE_AS_BZERO
|
||||
pxor %xmm0, %xmm0
|
||||
#else
|
||||
movd %eax, %xmm0
|
||||
pshufd $0, %xmm0, %xmm0
|
||||
#endif
|
||||
|
||||
cmp $64, %ecx
|
||||
ja L(64bytesmore)
|
||||
|
|
|
@ -15,7 +15,6 @@ libc_bionic_src_files_x86 += \
|
|||
arch-x86/atom/string/sse2-wcslen-atom.S \
|
||||
arch-x86/atom/string/sse2-wcscmp-atom.S \
|
||||
arch-x86/silvermont/string/sse2-bcopy-slm.S \
|
||||
arch-x86/silvermont/string/sse2-bzero-slm.S \
|
||||
arch-x86/silvermont/string/sse2-memcpy-slm.S \
|
||||
arch-x86/silvermont/string/sse2-memmove-slm.S \
|
||||
arch-x86/silvermont/string/sse2-memset-slm.S \
|
||||
|
|
|
@ -67,14 +67,9 @@ name: \
|
|||
.section .text.sse2,"ax",@progbits
|
||||
ENTRY (MEMSET)
|
||||
movq %rdi, %rax
|
||||
#ifdef USE_AS_BZERO_P
|
||||
mov %rsi, %rdx
|
||||
xor %rcx, %rcx
|
||||
#else
|
||||
and $0xff, %rsi
|
||||
mov $0x0101010101010101, %rcx
|
||||
imul %rsi, %rcx
|
||||
#endif
|
||||
cmpq $16, %rdx
|
||||
jae L(16bytesormore)
|
||||
testb $8, %dl
|
||||
|
@ -106,12 +101,8 @@ L(2_3bytes):
|
|||
|
||||
ALIGN (4)
|
||||
L(16bytesormore):
|
||||
#ifdef USE_AS_BZERO_P
|
||||
pxor %xmm0, %xmm0
|
||||
#else
|
||||
movd %rcx, %xmm0
|
||||
pshufd $0, %xmm0, %xmm0
|
||||
#endif
|
||||
movdqu %xmm0, (%rdi)
|
||||
movdqu %xmm0, -16(%rdi, %rdx)
|
||||
cmpq $32, %rdx
|
||||
|
|
|
@ -250,6 +250,12 @@ void bcopy(const void* src, void* dst, size_t n) {
|
|||
// x86 has an assembler implementation.
|
||||
#endif
|
||||
|
||||
// This was removed from POSIX 2008.
|
||||
#undef bzero
|
||||
void bzero(void* dst, size_t n) {
|
||||
memset(dst, 0, n);
|
||||
}
|
||||
|
||||
// sysv_signal() was never in POSIX.
|
||||
extern "C++" sighandler_t _signal(int signum, sighandler_t handler, int flags);
|
||||
sighandler_t sysv_signal(int signum, sighandler_t handler) {
|
||||
|
|
Loading…
Reference in a new issue