mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-25 21:24:08 +08:00
b55e81b9f8
Let the compiler do stuff like this. Signed-off-by: David S. Miller <davem@davemloft.net>
118 lines
1.2 KiB
ArmAsm
118 lines
1.2 KiB
ArmAsm
/*
|
|
* strncmp.S: Hand optimized Sparc assembly of GCC output from GNU libc
|
|
* generic strncmp routine.
|
|
*/
|
|
|
|
.text
|
|
.align 4
|
|
.global strncmp
|
|
strncmp:
|
|
mov %o0, %g3
|
|
mov 0, %o3
|
|
|
|
cmp %o2, 3
|
|
ble 7f
|
|
mov 0, %g2
|
|
|
|
sra %o2, 2, %o4
|
|
ldub [%g3], %o3
|
|
|
|
0:
|
|
ldub [%o1], %g2
|
|
add %g3, 1, %g3
|
|
and %o3, 0xff, %o0
|
|
|
|
cmp %o0, 0
|
|
be 8f
|
|
add %o1, 1, %o1
|
|
|
|
cmp %o0, %g2
|
|
be,a 1f
|
|
ldub [%g3], %o3
|
|
|
|
retl
|
|
sub %o0, %g2, %o0
|
|
|
|
1:
|
|
ldub [%o1], %g2
|
|
add %g3,1, %g3
|
|
and %o3, 0xff, %o0
|
|
|
|
cmp %o0, 0
|
|
be 8f
|
|
add %o1, 1, %o1
|
|
|
|
cmp %o0, %g2
|
|
be,a 1f
|
|
ldub [%g3], %o3
|
|
|
|
retl
|
|
sub %o0, %g2, %o0
|
|
|
|
1:
|
|
ldub [%o1], %g2
|
|
add %g3, 1, %g3
|
|
and %o3, 0xff, %o0
|
|
|
|
cmp %o0, 0
|
|
be 8f
|
|
add %o1, 1, %o1
|
|
|
|
cmp %o0, %g2
|
|
be,a 1f
|
|
ldub [%g3], %o3
|
|
|
|
retl
|
|
sub %o0, %g2, %o0
|
|
|
|
1:
|
|
ldub [%o1], %g2
|
|
add %g3, 1, %g3
|
|
and %o3, 0xff, %o0
|
|
|
|
cmp %o0, 0
|
|
be 8f
|
|
add %o1, 1, %o1
|
|
|
|
cmp %o0, %g2
|
|
be 1f
|
|
add %o4, -1, %o4
|
|
|
|
retl
|
|
sub %o0, %g2, %o0
|
|
|
|
1:
|
|
|
|
cmp %o4, 0
|
|
bg,a 0b
|
|
ldub [%g3], %o3
|
|
|
|
b 7f
|
|
and %o2, 3, %o2
|
|
|
|
9:
|
|
ldub [%o1], %g2
|
|
add %g3, 1, %g3
|
|
and %o3, 0xff, %o0
|
|
|
|
cmp %o0, 0
|
|
be 8f
|
|
add %o1, 1, %o1
|
|
|
|
cmp %o0, %g2
|
|
be 7f
|
|
add %o2, -1, %o2
|
|
|
|
8:
|
|
retl
|
|
sub %o0, %g2, %o0
|
|
|
|
7:
|
|
cmp %o2, 0
|
|
bg,a 9b
|
|
ldub [%g3], %o3
|
|
|
|
and %g2, 0xff, %o0
|
|
retl
|
|
sub %o3, %o0, %o0
|