Skip to content

Commit

Permalink
Perform test for Arom x86-64 in central place and handle it.
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Ulrich Drepper committed Jul 23, 2009
1 parent 666a987 commit d28797e
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 11 deletions.
5 changes: 5 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
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
structure before copying it to avoid warning.
* posix/tst-rfc3484-2.c (do_test): Likewise.
Expand Down
8 changes: 7 additions & 1 deletion sysdeps/x86_64/multiarch/init-arch.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,13 @@ __init_cpu_features (void)
__cpu_features.model += extended_model;
}
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". */
else if (ebx == 0x68747541 && ecx == 0x444d4163 && edx == 0x69746e65)
Expand Down
13 changes: 3 additions & 10 deletions sysdeps/x86_64/multiarch/strcpy.S
Original file line number Diff line number Diff line change
Expand Up @@ -64,16 +64,9 @@ ENTRY(STRCPY)
call __init_cpu_features
1: leaq STRCPY_SSE2(%rip), %rax
testl $(1<<9), __cpu_features+CPUID_OFFSET+COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET(%rip)
jz 3f
/* Avoid SSSE3 strcpy on Atom since it is slow. */
cmpl $1, __cpu_features+KIND_OFFSET(%rip)
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
jz 2f
leaq STRCPY_SSSE3(%rip), %rax
2: ret
END(STRCPY)

.section .text.ssse3,"ax",@progbits
Expand Down

0 comments on commit d28797e

Please sign in to comment.