.text | |
.align 4 | |
.global __memcmp, memcmp | |
__memcmp: | |
memcmp: | |
#if 1 | |
cmp %o2, 0 | |
ble L3 | |
mov 0, %g3 | |
L5: | |
ldub [%o0], %g2 | |
ldub [%o1], %g3 | |
sub %g2, %g3, %g2 | |
mov %g2, %g3 | |
sll %g2, 24, %g2 | |
cmp %g2, 0 | |
bne L3 | |
add %o0, 1, %o0 | |
add %o2, -1, %o2 | |
cmp %o2, 0 | |
bg L5 | |
add %o1, 1, %o1 | |
L3: | |
sll %g3, 24, %o0 | |
sra %o0, 24, %o0 | |
retl | |
nop | |
#else | |
save %sp, -104, %sp | |
mov %i2, %o4 | |
mov %i0, %o0 | |
cmp %o4, 15 | |
ble L72 | |
mov %i1, %i2 | |
andcc %i2, 3, %g0 | |
be L161 | |
andcc %o0, 3, %g2 | |
L75: | |
ldub [%o0], %g3 | |
ldub [%i2], %g2 | |
add %o0,1, %o0 | |
subcc %g3, %g2, %i0 | |
bne L156 | |
add %i2, 1, %i2 | |
andcc %i2, 3, %g0 | |
bne L75 | |
add %o4, -1, %o4 | |
andcc %o0, 3, %g2 | |
L161: | |
bne,a L78 | |
mov %i2, %i1 | |
mov %o0, %i5 | |
mov %i2, %i3 | |
srl %o4, 2, %i4 | |
cmp %i4, 0 | |
bge L93 | |
mov %i4, %g2 | |
add %i4, 3, %g2 | |
L93: | |
sra %g2, 2, %g2 | |
sll %g2, 2, %g2 | |
sub %i4, %g2, %g2 | |
cmp %g2, 1 | |
be,a L88 | |
add %o0, 4, %i5 | |
bg L94 | |
cmp %g2, 2 | |
cmp %g2, 0 | |
be,a L86 | |
ld [%o0], %g3 | |
b L162 | |
ld [%i5], %g3 | |
L94: | |
be L81 | |
cmp %g2, 3 | |
be,a L83 | |
add %o0, -4, %i5 | |
b L162 | |
ld [%i5], %g3 | |
L81: | |
add %o0, -8, %i5 | |
ld [%o0], %g3 | |
add %i2, -8, %i3 | |
ld [%i2], %g2 | |
b L82 | |
add %i4, 2, %i4 | |
L83: | |
ld [%o0], %g4 | |
add %i2, -4, %i3 | |
ld [%i2], %g1 | |
b L84 | |
add %i4, 1, %i4 | |
L86: | |
b L87 | |
ld [%i2], %g2 | |
L88: | |
add %i2, 4, %i3 | |
ld [%o0], %g4 | |
add %i4, -1, %i4 | |
ld [%i2], %g1 | |
L95: | |
ld [%i5], %g3 | |
L162: | |
cmp %g4, %g1 | |
be L87 | |
ld [%i3], %g2 | |
cmp %g4, %g1 | |
L163: | |
bleu L114 | |
mov -1, %i0 | |
b L114 | |
mov 1, %i0 | |
L87: | |
ld [%i5 + 4], %g4 | |
cmp %g3, %g2 | |
bne L163 | |
ld [%i3 + 4], %g1 | |
L84: | |
ld [%i5 + 8], %g3 | |
cmp %g4, %g1 | |
bne L163 | |
ld [%i3 + 8], %g2 | |
L82: | |
ld [%i5 + 12], %g4 | |
cmp %g3, %g2 | |
bne L163 | |
ld [%i3 + 12], %g1 | |
add %i5, 16, %i5 | |
addcc %i4, -4, %i4 | |
bne L95 | |
add %i3, 16, %i3 | |
cmp %g4, %g1 | |
bne L163 | |
nop | |
b L114 | |
mov 0, %i0 | |
L78: | |
srl %o4, 2, %i0 | |
and %o0, -4, %i3 | |
orcc %i0, %g0, %g3 | |
sll %g2, 3, %o7 | |
mov 32, %g2 | |
bge L129 | |
sub %g2, %o7, %o1 | |
add %i0, 3, %g3 | |
L129: | |
sra %g3, 2, %g2 | |
sll %g2, 2, %g2 | |
sub %i0, %g2, %g2 | |
cmp %g2, 1 | |
be,a L124 | |
ld [%i3], %o3 | |
bg L130 | |
cmp %g2, 2 | |
cmp %g2, 0 | |
be,a L122 | |
ld [%i3], %o2 | |
b L164 | |
sll %o3, %o7, %g3 | |
L130: | |
be L117 | |
cmp %g2, 3 | |
be,a L119 | |
ld [%i3], %g1 | |
b L164 | |
sll %o3, %o7, %g3 | |
L117: | |
ld [%i3], %g4 | |
add %i2, -8, %i1 | |
ld [%i3 + 4], %o3 | |
add %i0, 2, %i0 | |
ld [%i2], %i4 | |
b L118 | |
add %i3, -4, %i3 | |
L119: | |
ld [%i3 + 4], %g4 | |
add %i2, -4, %i1 | |
ld [%i2], %i5 | |
b L120 | |
add %i0, 1, %i0 | |
L122: | |
ld [%i3 + 4], %g1 | |
ld [%i2], %i4 | |
b L123 | |
add %i3, 4, %i3 | |
L124: | |
add %i2, 4, %i1 | |
ld [%i3 + 4], %o2 | |
add %i0, -1, %i0 | |
ld [%i2], %i5 | |
add %i3, 8, %i3 | |
L131: | |
sll %o3, %o7, %g3 | |
L164: | |
srl %o2, %o1, %g2 | |
ld [%i3], %g1 | |
or %g3, %g2, %g3 | |
cmp %g3, %i5 | |
bne L163 | |
ld [%i1], %i4 | |
L123: | |
sll %o2, %o7, %g3 | |
srl %g1, %o1, %g2 | |
ld [%i3 + 4], %g4 | |
or %g3, %g2, %g3 | |
cmp %g3, %i4 | |
bne L163 | |
ld [%i1 + 4], %i5 | |
L120: | |
sll %g1, %o7, %g3 | |
srl %g4, %o1, %g2 | |
ld [%i3 + 8], %o3 | |
or %g3, %g2, %g3 | |
cmp %g3, %i5 | |
bne L163 | |
ld [%i1 + 8], %i4 | |
L118: | |
sll %g4, %o7, %g3 | |
srl %o3, %o1, %g2 | |
ld [%i3 + 12], %o2 | |
or %g3, %g2, %g3 | |
cmp %g3, %i4 | |
bne L163 | |
ld [%i1 + 12], %i5 | |
add %i3, 16, %i3 | |
addcc %i0, -4, %i0 | |
bne L131 | |
add %i1, 16, %i1 | |
sll %o3, %o7, %g3 | |
srl %o2, %o1, %g2 | |
or %g3, %g2, %g3 | |
cmp %g3, %i5 | |
be,a L114 | |
mov 0, %i0 | |
b,a L163 | |
L114: | |
cmp %i0, 0 | |
bne L156 | |
and %o4, -4, %g2 | |
add %o0, %g2, %o0 | |
add %i2, %g2, %i2 | |
and %o4, 3, %o4 | |
L72: | |
cmp %o4, 0 | |
be L156 | |
mov 0, %i0 | |
ldub [%o0], %g3 | |
L165: | |
ldub [%i2], %g2 | |
add %o0, 1, %o0 | |
subcc %g3, %g2, %i0 | |
bne L156 | |
add %i2, 1, %i2 | |
addcc %o4, -1, %o4 | |
bne,a L165 | |
ldub [%o0], %g3 | |
mov 0, %i0 | |
L156: | |
ret | |
restore | |
#endif |