github.com/afumu/libc@v0.0.6/musl/src/string/x86_64/memset.s (about) 1 .global memset 2 .type memset,@function 3 memset: 4 movzbq %sil,%rax 5 mov $0x101010101010101,%r8 6 imul %r8,%rax 7 8 cmp $126,%rdx 9 ja 2f 10 11 test %edx,%edx 12 jz 1f 13 14 mov %sil,(%rdi) 15 mov %sil,-1(%rdi,%rdx) 16 cmp $2,%edx 17 jbe 1f 18 19 mov %ax,1(%rdi) 20 mov %ax,(-1-2)(%rdi,%rdx) 21 cmp $6,%edx 22 jbe 1f 23 24 mov %eax,(1+2)(%rdi) 25 mov %eax,(-1-2-4)(%rdi,%rdx) 26 cmp $14,%edx 27 jbe 1f 28 29 mov %rax,(1+2+4)(%rdi) 30 mov %rax,(-1-2-4-8)(%rdi,%rdx) 31 cmp $30,%edx 32 jbe 1f 33 34 mov %rax,(1+2+4+8)(%rdi) 35 mov %rax,(1+2+4+8+8)(%rdi) 36 mov %rax,(-1-2-4-8-16)(%rdi,%rdx) 37 mov %rax,(-1-2-4-8-8)(%rdi,%rdx) 38 cmp $62,%edx 39 jbe 1f 40 41 mov %rax,(1+2+4+8+16)(%rdi) 42 mov %rax,(1+2+4+8+16+8)(%rdi) 43 mov %rax,(1+2+4+8+16+16)(%rdi) 44 mov %rax,(1+2+4+8+16+24)(%rdi) 45 mov %rax,(-1-2-4-8-16-32)(%rdi,%rdx) 46 mov %rax,(-1-2-4-8-16-24)(%rdi,%rdx) 47 mov %rax,(-1-2-4-8-16-16)(%rdi,%rdx) 48 mov %rax,(-1-2-4-8-16-8)(%rdi,%rdx) 49 50 1: mov %rdi,%rax 51 ret 52 53 2: test $15,%edi 54 mov %rdi,%r8 55 mov %rax,-8(%rdi,%rdx) 56 mov %rdx,%rcx 57 jnz 2f 58 59 1: shr $3,%rcx 60 rep 61 stosq 62 mov %r8,%rax 63 ret 64 65 2: xor %edx,%edx 66 sub %edi,%edx 67 and $15,%edx 68 mov %rax,(%rdi) 69 mov %rax,8(%rdi) 70 sub %rdx,%rcx 71 add %rdx,%rdi 72 jmp 1b