xref: /aosp_15_r20/external/musl/src/string/x86_64/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	movzbq %sil,%rax
5*c9945492SAndroid Build Coastguard Worker	mov $0x101010101010101,%r8
6*c9945492SAndroid Build Coastguard Worker	imul %r8,%rax
7*c9945492SAndroid Build Coastguard Worker
8*c9945492SAndroid Build Coastguard Worker	cmp $126,%rdx
9*c9945492SAndroid Build Coastguard Worker	ja 2f
10*c9945492SAndroid Build Coastguard Worker
11*c9945492SAndroid Build Coastguard Worker	test %edx,%edx
12*c9945492SAndroid Build Coastguard Worker	jz 1f
13*c9945492SAndroid Build Coastguard Worker
14*c9945492SAndroid Build Coastguard Worker	mov %sil,(%rdi)
15*c9945492SAndroid Build Coastguard Worker	mov %sil,-1(%rdi,%rdx)
16*c9945492SAndroid Build Coastguard Worker	cmp $2,%edx
17*c9945492SAndroid Build Coastguard Worker	jbe 1f
18*c9945492SAndroid Build Coastguard Worker
19*c9945492SAndroid Build Coastguard Worker	mov %ax,1(%rdi)
20*c9945492SAndroid Build Coastguard Worker	mov %ax,(-1-2)(%rdi,%rdx)
21*c9945492SAndroid Build Coastguard Worker	cmp $6,%edx
22*c9945492SAndroid Build Coastguard Worker	jbe 1f
23*c9945492SAndroid Build Coastguard Worker
24*c9945492SAndroid Build Coastguard Worker	mov %eax,(1+2)(%rdi)
25*c9945492SAndroid Build Coastguard Worker	mov %eax,(-1-2-4)(%rdi,%rdx)
26*c9945492SAndroid Build Coastguard Worker	cmp $14,%edx
27*c9945492SAndroid Build Coastguard Worker	jbe 1f
28*c9945492SAndroid Build Coastguard Worker
29*c9945492SAndroid Build Coastguard Worker	mov %rax,(1+2+4)(%rdi)
30*c9945492SAndroid Build Coastguard Worker	mov %rax,(-1-2-4-8)(%rdi,%rdx)
31*c9945492SAndroid Build Coastguard Worker	cmp $30,%edx
32*c9945492SAndroid Build Coastguard Worker	jbe 1f
33*c9945492SAndroid Build Coastguard Worker
34*c9945492SAndroid Build Coastguard Worker	mov %rax,(1+2+4+8)(%rdi)
35*c9945492SAndroid Build Coastguard Worker	mov %rax,(1+2+4+8+8)(%rdi)
36*c9945492SAndroid Build Coastguard Worker	mov %rax,(-1-2-4-8-16)(%rdi,%rdx)
37*c9945492SAndroid Build Coastguard Worker	mov %rax,(-1-2-4-8-8)(%rdi,%rdx)
38*c9945492SAndroid Build Coastguard Worker	cmp $62,%edx
39*c9945492SAndroid Build Coastguard Worker	jbe 1f
40*c9945492SAndroid Build Coastguard Worker
41*c9945492SAndroid Build Coastguard Worker	mov %rax,(1+2+4+8+16)(%rdi)
42*c9945492SAndroid Build Coastguard Worker	mov %rax,(1+2+4+8+16+8)(%rdi)
43*c9945492SAndroid Build Coastguard Worker	mov %rax,(1+2+4+8+16+16)(%rdi)
44*c9945492SAndroid Build Coastguard Worker	mov %rax,(1+2+4+8+16+24)(%rdi)
45*c9945492SAndroid Build Coastguard Worker	mov %rax,(-1-2-4-8-16-32)(%rdi,%rdx)
46*c9945492SAndroid Build Coastguard Worker	mov %rax,(-1-2-4-8-16-24)(%rdi,%rdx)
47*c9945492SAndroid Build Coastguard Worker	mov %rax,(-1-2-4-8-16-16)(%rdi,%rdx)
48*c9945492SAndroid Build Coastguard Worker	mov %rax,(-1-2-4-8-16-8)(%rdi,%rdx)
49*c9945492SAndroid Build Coastguard Worker
50*c9945492SAndroid Build Coastguard Worker1:	mov %rdi,%rax
51*c9945492SAndroid Build Coastguard Worker	ret
52*c9945492SAndroid Build Coastguard Worker
53*c9945492SAndroid Build Coastguard Worker2:	test $15,%edi
54*c9945492SAndroid Build Coastguard Worker	mov %rdi,%r8
55*c9945492SAndroid Build Coastguard Worker	mov %rax,-8(%rdi,%rdx)
56*c9945492SAndroid Build Coastguard Worker	mov %rdx,%rcx
57*c9945492SAndroid Build Coastguard Worker	jnz 2f
58*c9945492SAndroid Build Coastguard Worker
59*c9945492SAndroid Build Coastguard Worker1:	shr $3,%rcx
60*c9945492SAndroid Build Coastguard Worker	rep
61*c9945492SAndroid Build Coastguard Worker	stosq
62*c9945492SAndroid Build Coastguard Worker	mov %r8,%rax
63*c9945492SAndroid Build Coastguard Worker	ret
64*c9945492SAndroid Build Coastguard Worker
65*c9945492SAndroid Build Coastguard Worker2:	xor %edx,%edx
66*c9945492SAndroid Build Coastguard Worker	sub %edi,%edx
67*c9945492SAndroid Build Coastguard Worker	and $15,%edx
68*c9945492SAndroid Build Coastguard Worker	mov %rax,(%rdi)
69*c9945492SAndroid Build Coastguard Worker	mov %rax,8(%rdi)
70*c9945492SAndroid Build Coastguard Worker	sub %rdx,%rcx
71*c9945492SAndroid Build Coastguard Worker	add %rdx,%rdi
72*c9945492SAndroid Build Coastguard Worker	jmp 1b
73