/* SPDX-License-Identifier: GPL-2.0 */
/*
* strncmp.S: Hand optimized Sparc assembly of GCC output from GNU libc
* generic strncmp routine.
*/
#include <linux/export.h>
#include <linux/linkage.h>
.text
ENTRY(strncmp)
mov %o0, %g3
mov 0 , %o3
cmp %o2, 3
ble 7 f
mov 0 , %g2
sra %o2, 2 , %o4
ldub [%g3], %o3
0 :
ldub [%o1], %g2
add %g3, 1 , %g3
and %o3, 0 xff, %o0
cmp %o0, 0
be 8 f
add %o1, 1 , %o1
cmp %o0, %g2
be,a 1 f
ldub [%g3], %o3
retl
sub %o0, %g2, %o0
1 :
ldub [%o1], %g2
add %g3,1 , %g3
and %o3, 0 xff, %o0
cmp %o0, 0
be 8 f
add %o1, 1 , %o1
cmp %o0, %g2
be,a 1 f
ldub [%g3], %o3
retl
sub %o0, %g2, %o0
1 :
ldub [%o1], %g2
add %g3, 1 , %g3
and %o3, 0 xff, %o0
cmp %o0, 0
be 8 f
add %o1, 1 , %o1
cmp %o0, %g2
be,a 1 f
ldub [%g3], %o3
retl
sub %o0, %g2, %o0
1 :
ldub [%o1], %g2
add %g3, 1 , %g3
and %o3, 0 xff, %o0
cmp %o0, 0
be 8 f
add %o1, 1 , %o1
cmp %o0, %g2
be 1 f
add %o4, -1 , %o4
retl
sub %o0, %g2, %o0
1 :
cmp %o4, 0
bg,a 0 b
ldub [%g3], %o3
b 7 f
and %o2, 3 , %o2
9 :
ldub [%o1], %g2
add %g3, 1 , %g3
and %o3, 0 xff, %o0
cmp %o0, 0
be 8 f
add %o1, 1 , %o1
cmp %o0, %g2
be 7 f
add %o2, -1 , %o2
8 :
retl
sub %o0, %g2, %o0
7 :
cmp %o2, 0
bg,a 9 b
ldub [%g3], %o3
and %g2, 0 xff, %o0
retl
sub %o3, %o0, %o0
ENDPROC(strncmp)
EXPORT_SYMBOL(strncmp)
Messung V0.5 in Prozent C=90 H=94 G=91
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-08)
¤
*© Formatika GbR, Deutschland