mirror of git://sourceware.org/git/glibc.git
x86-64: Fix SSE2 memcmp and SSSE3 memmove for x32
Clear the upper 32 bits in RDX (memory size) for x32 to fix FAIL: string/tst-size_t-memcmp FAIL: string/tst-size_t-memcmp-2 FAIL: string/tst-size_t-memcpy FAIL: wcsmbs/tst-size_t-wmemcmp on x32 introduced by8804157ad9
x86: Optimize memcmp SSE2 in memcmp.S26b2478322
x86: Reduce code size of mem{move|pcpy|cpy}-ssse3 Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
This commit is contained in:
parent
198abcbb94
commit
8ea20ee5f6
|
@ -46,6 +46,10 @@
|
||||||
|
|
||||||
.text
|
.text
|
||||||
ENTRY(MEMCMP)
|
ENTRY(MEMCMP)
|
||||||
|
# ifdef __ILP32__
|
||||||
|
/* Clear the upper 32 bits. */
|
||||||
|
movl %edx, %edx
|
||||||
|
# endif
|
||||||
#ifdef USE_AS_WMEMCMP
|
#ifdef USE_AS_WMEMCMP
|
||||||
/* Use 0xffff to test for mismatches on pmovmskb bitmask. Store
|
/* Use 0xffff to test for mismatches on pmovmskb bitmask. Store
|
||||||
in ecx for code size. This is preferable to using `incw` as
|
in ecx for code size. This is preferable to using `incw` as
|
||||||
|
|
|
@ -27,6 +27,10 @@ ENTRY(MEMMOVE_CHK)
|
||||||
END(MEMMOVE_CHK)
|
END(MEMMOVE_CHK)
|
||||||
|
|
||||||
ENTRY_P2ALIGN(MEMMOVE, 6)
|
ENTRY_P2ALIGN(MEMMOVE, 6)
|
||||||
|
# ifdef __ILP32__
|
||||||
|
/* Clear the upper 32 bits. */
|
||||||
|
movl %edx, %edx
|
||||||
|
# endif
|
||||||
movq %rdi, %rax
|
movq %rdi, %rax
|
||||||
L(start):
|
L(start):
|
||||||
cmpq $16, %rdx
|
cmpq $16, %rdx
|
||||||
|
|
Loading…
Reference in New Issue