Untitled

 avatar
unknown
plain_text
2 years ago
2.4 kB
4
Indexable
strlen_avx2:                            # @strlen_avx2
        pushq   %rbp
        movq    %rsp, %rbp
        andq    $-32, %rsp
        subq    $320, %rsp                      # imm = 0x140
        movq    %rdi, 112(%rsp)
        vxorps  %xmm0, %xmm0, %xmm0
        vmovaps %ymm0, 128(%rsp)
        vmovdqa 128(%rsp), %ymm0
        vmovdqa %ymm0, 64(%rsp)
        movq    112(%rsp), %rax
        movq    %rax, 48(%rsp)
.LBB0_1:                                # =>This Inner Loop Header: Depth=1
        movq    48(%rsp), %rax
        andq    $31, %rax
        cmpq    $0, %rax
        je      .LBB0_6
        movq    48(%rsp), %rax
        movsbl  (%rax), %eax
        cmpl    $0, %eax
        jne     .LBB0_4
        movq    48(%rsp), %rax
        movq    112(%rsp), %rcx
        subq    %rcx, %rax
        movq    %rax, 120(%rsp)
        jmp     .LBB0_11
.LBB0_4:                                #   in Loop: Header=BB0_1 Depth=1
        jmp     .LBB0_5
.LBB0_5:                                #   in Loop: Header=BB0_1 Depth=1
        movq    48(%rsp), %rax
        addq    $1, %rax
        movq    %rax, 48(%rsp)
        jmp     .LBB0_1
.LBB0_6:
        movq    48(%rsp), %rax
        movq    %rax, 56(%rsp)
.LBB0_7:                                # =>This Inner Loop Header: Depth=1
        movq    56(%rsp), %rax
        movq    %rax, 184(%rsp)
        movq    184(%rsp), %rax
        vmovaps (%rax), %ymm0
        vmovaps %ymm0, (%rsp)
        vmovaps (%rsp), %ymm1
        vmovaps 64(%rsp), %ymm0
        vmovaps %ymm1, 256(%rsp)
        vmovaps %ymm0, 224(%rsp)
        vmovaps 256(%rsp), %ymm0
        vmovaps 224(%rsp), %ymm1
        vpcmpeqb        %ymm1, %ymm0, %ymm0
        vmovdqa %ymm0, 192(%rsp)
        vmovdqa 192(%rsp), %ymm0
        vpmovmskb       %ymm0, %eax
        movl    %eax, 44(%rsp)
        cmpl    $0, 44(%rsp)
        je      .LBB0_9
        jmp     .LBB0_10
.LBB0_9:                                #   in Loop: Header=BB0_7 Depth=1
        movq    56(%rsp), %rax
        addq    $32, %rax
        movq    %rax, 56(%rsp)
        jmp     .LBB0_7
.LBB0_10:
        movq    56(%rsp), %rax
        movq    112(%rsp), %rcx
        subq    %rcx, %rax
        movl    44(%rsp), %ecx
        bsfl    %ecx, %ecx
        movslq  %ecx, %rcx
        addq    %rcx, %rax
        movq    %rax, 120(%rsp)
.LBB0_11:
        movq    120(%rsp), %rax
        movq    %rbp, %rsp
        popq    %rbp
        vzeroupper
        retq
Editor is loading...