| .text |
| .intel_syntax noprefix |
| .file "_lib/uint64.c" |
| .globl sum_uint64_avx2 |
| .p2align 4, 0x90 |
| .type sum_uint64_avx2,@function |
| sum_uint64_avx2: # @sum_uint64_avx2 |
| # BB#0: |
| push rbp |
| mov rbp, rsp |
| and rsp, -8 |
| test rsi, rsi |
| je .LBB0_1 |
| # BB#2: |
| cmp rsi, 31 |
| jbe .LBB0_3 |
| # BB#6: |
| mov r9, rsi |
| and r9, -32 |
| je .LBB0_3 |
| # BB#7: |
| lea r8, [r9 - 32] |
| mov eax, r8d |
| shr eax, 5 |
| inc eax |
| and rax, 7 |
| je .LBB0_8 |
| # BB#9: |
| neg rax |
| vpxor ymm0, ymm0, ymm0 |
| xor ecx, ecx |
| vpxor ymm1, ymm1, ymm1 |
| vpxor ymm2, ymm2, ymm2 |
| vpxor ymm3, ymm3, ymm3 |
| vpxor ymm4, ymm4, ymm4 |
| vpxor ymm5, ymm5, ymm5 |
| vpxor ymm6, ymm6, ymm6 |
| vpxor ymm7, ymm7, ymm7 |
| .p2align 4, 0x90 |
| .LBB0_10: # =>This Inner Loop Header: Depth=1 |
| vpaddq ymm0, ymm0, ymmword ptr [rdi + 8*rcx] |
| vpaddq ymm1, ymm1, ymmword ptr [rdi + 8*rcx + 32] |
| vpaddq ymm2, ymm2, ymmword ptr [rdi + 8*rcx + 64] |
| vpaddq ymm3, ymm3, ymmword ptr [rdi + 8*rcx + 96] |
| vpaddq ymm4, ymm4, ymmword ptr [rdi + 8*rcx + 128] |
| vpaddq ymm5, ymm5, ymmword ptr [rdi + 8*rcx + 160] |
| vpaddq ymm6, ymm6, ymmword ptr [rdi + 8*rcx + 192] |
| vpaddq ymm7, ymm7, ymmword ptr [rdi + 8*rcx + 224] |
| add rcx, 32 |
| inc rax |
| jne .LBB0_10 |
| jmp .LBB0_11 |
| .LBB0_3: |
| xor r9d, r9d |
| xor eax, eax |
| .LBB0_4: |
| lea rcx, [rdi + 8*r9] |
| sub rsi, r9 |
| .p2align 4, 0x90 |
| .LBB0_5: # =>This Inner Loop Header: Depth=1 |
| add rax, qword ptr [rcx] |
| add rcx, 8 |
| dec rsi |
| jne .LBB0_5 |
| jmp .LBB0_15 |
| .LBB0_1: |
| xor eax, eax |
| .LBB0_15: |
| mov qword ptr [rdx], rax |
| mov rsp, rbp |
| pop rbp |
| vzeroupper |
| ret |
| .LBB0_8: |
| xor ecx, ecx |
| vpxor ymm0, ymm0, ymm0 |
| vpxor ymm1, ymm1, ymm1 |
| vpxor ymm2, ymm2, ymm2 |
| vpxor ymm3, ymm3, ymm3 |
| vpxor ymm4, ymm4, ymm4 |
| vpxor ymm5, ymm5, ymm5 |
| vpxor ymm6, ymm6, ymm6 |
| vpxor ymm7, ymm7, ymm7 |
| .LBB0_11: |
| cmp r8, 224 |
| jb .LBB0_14 |
| # BB#12: |
| mov rax, r9 |
| sub rax, rcx |
| lea rcx, [rdi + 8*rcx + 1792] |
| .p2align 4, 0x90 |
| .LBB0_13: # =>This Inner Loop Header: Depth=1 |
| vpaddq ymm7, ymm7, ymmword ptr [rcx - 1568] |
| vpaddq ymm6, ymm6, ymmword ptr [rcx - 1600] |
| vpaddq ymm5, ymm5, ymmword ptr [rcx - 1632] |
| vpaddq ymm4, ymm4, ymmword ptr [rcx - 1664] |
| vpaddq ymm3, ymm3, ymmword ptr [rcx - 1696] |
| vpaddq ymm2, ymm2, ymmword ptr [rcx - 1728] |
| vpaddq ymm1, ymm1, ymmword ptr [rcx - 1760] |
| vpaddq ymm0, ymm0, ymmword ptr [rcx - 1792] |
| vpaddq ymm0, ymm0, ymmword ptr [rcx - 1536] |
| vpaddq ymm1, ymm1, ymmword ptr [rcx - 1504] |
| vpaddq ymm2, ymm2, ymmword ptr [rcx - 1472] |
| vpaddq ymm3, ymm3, ymmword ptr [rcx - 1440] |
| vpaddq ymm4, ymm4, ymmword ptr [rcx - 1408] |
| vpaddq ymm5, ymm5, ymmword ptr [rcx - 1376] |
| vpaddq ymm6, ymm6, ymmword ptr [rcx - 1344] |
| vpaddq ymm7, ymm7, ymmword ptr [rcx - 1312] |
| vpaddq ymm7, ymm7, ymmword ptr [rcx - 1056] |
| vpaddq ymm6, ymm6, ymmword ptr [rcx - 1088] |
| vpaddq ymm5, ymm5, ymmword ptr [rcx - 1120] |
| vpaddq ymm4, ymm4, ymmword ptr [rcx - 1152] |
| vpaddq ymm3, ymm3, ymmword ptr [rcx - 1184] |
| vpaddq ymm2, ymm2, ymmword ptr [rcx - 1216] |
| vpaddq ymm1, ymm1, ymmword ptr [rcx - 1248] |
| vpaddq ymm0, ymm0, ymmword ptr [rcx - 1280] |
| vpaddq ymm0, ymm0, ymmword ptr [rcx - 1024] |
| vpaddq ymm1, ymm1, ymmword ptr [rcx - 992] |
| vpaddq ymm2, ymm2, ymmword ptr [rcx - 960] |
| vpaddq ymm3, ymm3, ymmword ptr [rcx - 928] |
| vpaddq ymm4, ymm4, ymmword ptr [rcx - 896] |
| vpaddq ymm5, ymm5, ymmword ptr [rcx - 864] |
| vpaddq ymm6, ymm6, ymmword ptr [rcx - 832] |
| vpaddq ymm7, ymm7, ymmword ptr [rcx - 800] |
| vpaddq ymm7, ymm7, ymmword ptr [rcx - 544] |
| vpaddq ymm6, ymm6, ymmword ptr [rcx - 576] |
| vpaddq ymm5, ymm5, ymmword ptr [rcx - 608] |
| vpaddq ymm4, ymm4, ymmword ptr [rcx - 640] |
| vpaddq ymm3, ymm3, ymmword ptr [rcx - 672] |
| vpaddq ymm2, ymm2, ymmword ptr [rcx - 704] |
| vpaddq ymm1, ymm1, ymmword ptr [rcx - 736] |
| vpaddq ymm0, ymm0, ymmword ptr [rcx - 768] |
| vpaddq ymm0, ymm0, ymmword ptr [rcx - 512] |
| vpaddq ymm1, ymm1, ymmword ptr [rcx - 480] |
| vpaddq ymm2, ymm2, ymmword ptr [rcx - 448] |
| vpaddq ymm3, ymm3, ymmword ptr [rcx - 416] |
| vpaddq ymm4, ymm4, ymmword ptr [rcx - 384] |
| vpaddq ymm5, ymm5, ymmword ptr [rcx - 352] |
| vpaddq ymm6, ymm6, ymmword ptr [rcx - 320] |
| vpaddq ymm7, ymm7, ymmword ptr [rcx - 288] |
| vpaddq ymm7, ymm7, ymmword ptr [rcx - 32] |
| vpaddq ymm6, ymm6, ymmword ptr [rcx - 64] |
| vpaddq ymm5, ymm5, ymmword ptr [rcx - 96] |
| vpaddq ymm4, ymm4, ymmword ptr [rcx - 128] |
| vpaddq ymm3, ymm3, ymmword ptr [rcx - 160] |
| vpaddq ymm2, ymm2, ymmword ptr [rcx - 192] |
| vpaddq ymm1, ymm1, ymmword ptr [rcx - 224] |
| vpaddq ymm0, ymm0, ymmword ptr [rcx - 256] |
| vpaddq ymm0, ymm0, ymmword ptr [rcx] |
| vpaddq ymm1, ymm1, ymmword ptr [rcx + 32] |
| vpaddq ymm2, ymm2, ymmword ptr [rcx + 64] |
| vpaddq ymm3, ymm3, ymmword ptr [rcx + 96] |
| vpaddq ymm4, ymm4, ymmword ptr [rcx + 128] |
| vpaddq ymm5, ymm5, ymmword ptr [rcx + 160] |
| vpaddq ymm6, ymm6, ymmword ptr [rcx + 192] |
| vpaddq ymm7, ymm7, ymmword ptr [rcx + 224] |
| add rcx, 2048 |
| add rax, -256 |
| jne .LBB0_13 |
| .LBB0_14: |
| vpaddq ymm1, ymm1, ymm5 |
| vpaddq ymm3, ymm3, ymm7 |
| vpaddq ymm0, ymm0, ymm4 |
| vpaddq ymm2, ymm2, ymm6 |
| vpaddq ymm0, ymm0, ymm2 |
| vpaddq ymm1, ymm1, ymm3 |
| vpaddq ymm0, ymm0, ymm1 |
| vextracti128 xmm1, ymm0, 1 |
| vpaddq ymm0, ymm0, ymm1 |
| vpshufd xmm1, xmm0, 78 # xmm1 = xmm0[2,3,0,1] |
| vpaddq ymm0, ymm0, ymm1 |
| vmovq rax, xmm0 |
| cmp r9, rsi |
| jne .LBB0_4 |
| jmp .LBB0_15 |
| .Lfunc_end0: |
| .size sum_uint64_avx2, .Lfunc_end0-sum_uint64_avx2 |
| |
| |
| .ident "Apple LLVM version 9.0.0 (clang-900.0.39.2)" |
| .section ".note.GNU-stack","",@progbits |