mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-25 22:40:05 +00:00
Perform test for Arom x86-64 in central place and handle it.
There will be more than one function which, in multiarch mode, wants to use SSSE3. We should not test in each of them for Atoms with slow SSSE3. Instead, disable the SSSE3 bit in the startup code for such machines.
This commit is contained in:
parent
666a9871f7
commit
d28797e426
@ -1,5 +1,10 @@
|
|||||||
2009-07-23 Ulrich Drepper <drepper@redhat.com>
|
2009-07-23 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): Reset
|
||||||
|
SSSE3 bit for Atoms.
|
||||||
|
* sysdeps/x86_64/multiarch/strcpy.S: New need to perform Atom test
|
||||||
|
here anymore.
|
||||||
|
|
||||||
* posix/tst-rfc3484.c (do_test): Initialize entire sockaddr_in
|
* posix/tst-rfc3484.c (do_test): Initialize entire sockaddr_in
|
||||||
structure before copying it to avoid warning.
|
structure before copying it to avoid warning.
|
||||||
* posix/tst-rfc3484-2.c (do_test): Likewise.
|
* posix/tst-rfc3484-2.c (do_test): Likewise.
|
||||||
|
@ -68,7 +68,13 @@ __init_cpu_features (void)
|
|||||||
__cpu_features.model += extended_model;
|
__cpu_features.model += extended_model;
|
||||||
}
|
}
|
||||||
else if (__cpu_features.family == 0x06)
|
else if (__cpu_features.family == 0x06)
|
||||||
__cpu_features.model += extended_model;
|
{
|
||||||
|
__cpu_features.model += extended_model;
|
||||||
|
|
||||||
|
if (__cpu_features.model == 0x1c)
|
||||||
|
/* Avoid SSSE3 on Atom since it is slow. */
|
||||||
|
__cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx &= ~(1 << 9);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/* This spells out "AuthenticAMD". */
|
/* This spells out "AuthenticAMD". */
|
||||||
else if (ebx == 0x68747541 && ecx == 0x444d4163 && edx == 0x69746e65)
|
else if (ebx == 0x68747541 && ecx == 0x444d4163 && edx == 0x69746e65)
|
||||||
|
@ -64,16 +64,9 @@ ENTRY(STRCPY)
|
|||||||
call __init_cpu_features
|
call __init_cpu_features
|
||||||
1: leaq STRCPY_SSE2(%rip), %rax
|
1: leaq STRCPY_SSE2(%rip), %rax
|
||||||
testl $(1<<9), __cpu_features+CPUID_OFFSET+COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET(%rip)
|
testl $(1<<9), __cpu_features+CPUID_OFFSET+COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET(%rip)
|
||||||
jz 3f
|
jz 2f
|
||||||
/* Avoid SSSE3 strcpy on Atom since it is slow. */
|
leaq STRCPY_SSSE3(%rip), %rax
|
||||||
cmpl $1, __cpu_features+KIND_OFFSET(%rip)
|
2: ret
|
||||||
jne 2f
|
|
||||||
cmpl $6, __cpu_features+FAMILY_OFFSET(%rip)
|
|
||||||
jne 2f
|
|
||||||
cmpl $28, __cpu_features+MODEL_OFFSET(%rip)
|
|
||||||
jz 3f
|
|
||||||
2: leaq STRCPY_SSSE3(%rip), %rax
|
|
||||||
3: ret
|
|
||||||
END(STRCPY)
|
END(STRCPY)
|
||||||
|
|
||||||
.section .text.ssse3,"ax",@progbits
|
.section .text.ssse3,"ax",@progbits
|
||||||
|
Loading…
Reference in New Issue
Block a user