xref: /aosp_15_r20/external/musl/src/string/i386/memcpy.s (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker.global memcpy
2*c9945492SAndroid Build Coastguard Worker.global __memcpy_fwd
3*c9945492SAndroid Build Coastguard Worker.hidden __memcpy_fwd
4*c9945492SAndroid Build Coastguard Worker.type memcpy,@function
5*c9945492SAndroid Build Coastguard Workermemcpy:
6*c9945492SAndroid Build Coastguard Worker__memcpy_fwd:
7*c9945492SAndroid Build Coastguard Worker	push %esi
8*c9945492SAndroid Build Coastguard Worker	push %edi
9*c9945492SAndroid Build Coastguard Worker	mov 12(%esp),%edi
10*c9945492SAndroid Build Coastguard Worker	mov 16(%esp),%esi
11*c9945492SAndroid Build Coastguard Worker	mov 20(%esp),%ecx
12*c9945492SAndroid Build Coastguard Worker	mov %edi,%eax
13*c9945492SAndroid Build Coastguard Worker	cmp $4,%ecx
14*c9945492SAndroid Build Coastguard Worker	jc 1f
15*c9945492SAndroid Build Coastguard Worker	test $3,%edi
16*c9945492SAndroid Build Coastguard Worker	jz 1f
17*c9945492SAndroid Build Coastguard Worker2:	movsb
18*c9945492SAndroid Build Coastguard Worker	dec %ecx
19*c9945492SAndroid Build Coastguard Worker	test $3,%edi
20*c9945492SAndroid Build Coastguard Worker	jnz 2b
21*c9945492SAndroid Build Coastguard Worker1:	mov %ecx,%edx
22*c9945492SAndroid Build Coastguard Worker	shr $2,%ecx
23*c9945492SAndroid Build Coastguard Worker	rep
24*c9945492SAndroid Build Coastguard Worker	movsl
25*c9945492SAndroid Build Coastguard Worker	and $3,%edx
26*c9945492SAndroid Build Coastguard Worker	jz 1f
27*c9945492SAndroid Build Coastguard Worker2:	movsb
28*c9945492SAndroid Build Coastguard Worker	dec %edx
29*c9945492SAndroid Build Coastguard Worker	jnz 2b
30*c9945492SAndroid Build Coastguard Worker1:	pop %edi
31*c9945492SAndroid Build Coastguard Worker	pop %esi
32*c9945492SAndroid Build Coastguard Worker	ret
33