.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