xref: /aosp_15_r20/external/musl/src/string/i386/memset.s (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker.global memset
2*c9945492SAndroid Build Coastguard Worker.type memset,@function
3*c9945492SAndroid Build Coastguard Workermemset:
4*c9945492SAndroid Build Coastguard Worker	mov 12(%esp),%ecx
5*c9945492SAndroid Build Coastguard Worker	cmp $62,%ecx
6*c9945492SAndroid Build Coastguard Worker	ja 2f
7*c9945492SAndroid Build Coastguard Worker
8*c9945492SAndroid Build Coastguard Worker	mov 8(%esp),%dl
9*c9945492SAndroid Build Coastguard Worker	mov 4(%esp),%eax
10*c9945492SAndroid Build Coastguard Worker	test %ecx,%ecx
11*c9945492SAndroid Build Coastguard Worker	jz 1f
12*c9945492SAndroid Build Coastguard Worker
13*c9945492SAndroid Build Coastguard Worker	mov %dl,%dh
14*c9945492SAndroid Build Coastguard Worker
15*c9945492SAndroid Build Coastguard Worker	mov %dl,(%eax)
16*c9945492SAndroid Build Coastguard Worker	mov %dl,-1(%eax,%ecx)
17*c9945492SAndroid Build Coastguard Worker	cmp $2,%ecx
18*c9945492SAndroid Build Coastguard Worker	jbe 1f
19*c9945492SAndroid Build Coastguard Worker
20*c9945492SAndroid Build Coastguard Worker	mov %dx,1(%eax)
21*c9945492SAndroid Build Coastguard Worker	mov %dx,(-1-2)(%eax,%ecx)
22*c9945492SAndroid Build Coastguard Worker	cmp $6,%ecx
23*c9945492SAndroid Build Coastguard Worker	jbe 1f
24*c9945492SAndroid Build Coastguard Worker
25*c9945492SAndroid Build Coastguard Worker	shl $16,%edx
26*c9945492SAndroid Build Coastguard Worker	mov 8(%esp),%dl
27*c9945492SAndroid Build Coastguard Worker	mov 8(%esp),%dh
28*c9945492SAndroid Build Coastguard Worker
29*c9945492SAndroid Build Coastguard Worker	mov %edx,(1+2)(%eax)
30*c9945492SAndroid Build Coastguard Worker	mov %edx,(-1-2-4)(%eax,%ecx)
31*c9945492SAndroid Build Coastguard Worker	cmp $14,%ecx
32*c9945492SAndroid Build Coastguard Worker	jbe 1f
33*c9945492SAndroid Build Coastguard Worker
34*c9945492SAndroid Build Coastguard Worker	mov %edx,(1+2+4)(%eax)
35*c9945492SAndroid Build Coastguard Worker	mov %edx,(1+2+4+4)(%eax)
36*c9945492SAndroid Build Coastguard Worker	mov %edx,(-1-2-4-8)(%eax,%ecx)
37*c9945492SAndroid Build Coastguard Worker	mov %edx,(-1-2-4-4)(%eax,%ecx)
38*c9945492SAndroid Build Coastguard Worker	cmp $30,%ecx
39*c9945492SAndroid Build Coastguard Worker	jbe 1f
40*c9945492SAndroid Build Coastguard Worker
41*c9945492SAndroid Build Coastguard Worker	mov %edx,(1+2+4+8)(%eax)
42*c9945492SAndroid Build Coastguard Worker	mov %edx,(1+2+4+8+4)(%eax)
43*c9945492SAndroid Build Coastguard Worker	mov %edx,(1+2+4+8+8)(%eax)
44*c9945492SAndroid Build Coastguard Worker	mov %edx,(1+2+4+8+12)(%eax)
45*c9945492SAndroid Build Coastguard Worker	mov %edx,(-1-2-4-8-16)(%eax,%ecx)
46*c9945492SAndroid Build Coastguard Worker	mov %edx,(-1-2-4-8-12)(%eax,%ecx)
47*c9945492SAndroid Build Coastguard Worker	mov %edx,(-1-2-4-8-8)(%eax,%ecx)
48*c9945492SAndroid Build Coastguard Worker	mov %edx,(-1-2-4-8-4)(%eax,%ecx)
49*c9945492SAndroid Build Coastguard Worker
50*c9945492SAndroid Build Coastguard Worker1:	ret
51*c9945492SAndroid Build Coastguard Worker
52*c9945492SAndroid Build Coastguard Worker2:	movzbl 8(%esp),%eax
53*c9945492SAndroid Build Coastguard Worker	mov %edi,12(%esp)
54*c9945492SAndroid Build Coastguard Worker	imul $0x1010101,%eax
55*c9945492SAndroid Build Coastguard Worker	mov 4(%esp),%edi
56*c9945492SAndroid Build Coastguard Worker	test $15,%edi
57*c9945492SAndroid Build Coastguard Worker	mov %eax,-4(%edi,%ecx)
58*c9945492SAndroid Build Coastguard Worker	jnz 2f
59*c9945492SAndroid Build Coastguard Worker
60*c9945492SAndroid Build Coastguard Worker1:	shr $2, %ecx
61*c9945492SAndroid Build Coastguard Worker	rep
62*c9945492SAndroid Build Coastguard Worker	stosl
63*c9945492SAndroid Build Coastguard Worker	mov 4(%esp),%eax
64*c9945492SAndroid Build Coastguard Worker	mov 12(%esp),%edi
65*c9945492SAndroid Build Coastguard Worker	ret
66*c9945492SAndroid Build Coastguard Worker
67*c9945492SAndroid Build Coastguard Worker2:	xor %edx,%edx
68*c9945492SAndroid Build Coastguard Worker	sub %edi,%edx
69*c9945492SAndroid Build Coastguard Worker	and $15,%edx
70*c9945492SAndroid Build Coastguard Worker	mov %eax,(%edi)
71*c9945492SAndroid Build Coastguard Worker	mov %eax,4(%edi)
72*c9945492SAndroid Build Coastguard Worker	mov %eax,8(%edi)
73*c9945492SAndroid Build Coastguard Worker	mov %eax,12(%edi)
74*c9945492SAndroid Build Coastguard Worker	sub %edx,%ecx
75*c9945492SAndroid Build Coastguard Worker	add %edx,%edi
76*c9945492SAndroid Build Coastguard Worker	jmp 1b
77