github.com/apache/arrow/go/v16@v16.1.0/arrow/math/_lib/uint64_avx2.s (about) 1 .text 2 .intel_syntax noprefix 3 .file "_lib/uint64.c" 4 .globl sum_uint64_avx2 5 .p2align 4, 0x90 6 .type sum_uint64_avx2,@function 7 sum_uint64_avx2: # @sum_uint64_avx2 8 # BB#0: 9 push rbp 10 mov rbp, rsp 11 and rsp, -8 12 test rsi, rsi 13 je .LBB0_1 14 # BB#2: 15 cmp rsi, 31 16 jbe .LBB0_3 17 # BB#6: 18 mov r9, rsi 19 and r9, -32 20 je .LBB0_3 21 # BB#7: 22 lea r8, [r9 - 32] 23 mov eax, r8d 24 shr eax, 5 25 inc eax 26 and rax, 7 27 je .LBB0_8 28 # BB#9: 29 neg rax 30 vpxor ymm0, ymm0, ymm0 31 xor ecx, ecx 32 vpxor ymm1, ymm1, ymm1 33 vpxor ymm2, ymm2, ymm2 34 vpxor ymm3, ymm3, ymm3 35 vpxor ymm4, ymm4, ymm4 36 vpxor ymm5, ymm5, ymm5 37 vpxor ymm6, ymm6, ymm6 38 vpxor ymm7, ymm7, ymm7 39 .p2align 4, 0x90 40 .LBB0_10: # =>This Inner Loop Header: Depth=1 41 vpaddq ymm0, ymm0, ymmword ptr [rdi + 8*rcx] 42 vpaddq ymm1, ymm1, ymmword ptr [rdi + 8*rcx + 32] 43 vpaddq ymm2, ymm2, ymmword ptr [rdi + 8*rcx + 64] 44 vpaddq ymm3, ymm3, ymmword ptr [rdi + 8*rcx + 96] 45 vpaddq ymm4, ymm4, ymmword ptr [rdi + 8*rcx + 128] 46 vpaddq ymm5, ymm5, ymmword ptr [rdi + 8*rcx + 160] 47 vpaddq ymm6, ymm6, ymmword ptr [rdi + 8*rcx + 192] 48 vpaddq ymm7, ymm7, ymmword ptr [rdi + 8*rcx + 224] 49 add rcx, 32 50 inc rax 51 jne .LBB0_10 52 jmp .LBB0_11 53 .LBB0_3: 54 xor r9d, r9d 55 xor eax, eax 56 .LBB0_4: 57 lea rcx, [rdi + 8*r9] 58 sub rsi, r9 59 .p2align 4, 0x90 60 .LBB0_5: # =>This Inner Loop Header: Depth=1 61 add rax, qword ptr [rcx] 62 add rcx, 8 63 dec rsi 64 jne .LBB0_5 65 jmp .LBB0_15 66 .LBB0_1: 67 xor eax, eax 68 .LBB0_15: 69 mov qword ptr [rdx], rax 70 mov rsp, rbp 71 pop rbp 72 vzeroupper 73 ret 74 .LBB0_8: 75 xor ecx, ecx 76 vpxor ymm0, ymm0, ymm0 77 vpxor ymm1, ymm1, ymm1 78 vpxor ymm2, ymm2, ymm2 79 vpxor ymm3, ymm3, ymm3 80 vpxor ymm4, ymm4, ymm4 81 vpxor ymm5, ymm5, ymm5 82 vpxor ymm6, ymm6, ymm6 83 vpxor ymm7, ymm7, ymm7 84 .LBB0_11: 85 cmp r8, 224 86 jb .LBB0_14 87 # BB#12: 88 mov rax, r9 89 sub rax, rcx 90 lea rcx, [rdi + 8*rcx + 1792] 91 .p2align 4, 0x90 92 .LBB0_13: # =>This Inner Loop Header: Depth=1 93 vpaddq ymm7, ymm7, ymmword ptr [rcx - 1568] 94 vpaddq ymm6, ymm6, ymmword ptr [rcx - 1600] 95 vpaddq ymm5, ymm5, ymmword ptr [rcx - 1632] 96 vpaddq ymm4, ymm4, ymmword ptr [rcx - 1664] 97 vpaddq ymm3, ymm3, ymmword ptr [rcx - 1696] 98 vpaddq ymm2, ymm2, ymmword ptr [rcx - 1728] 99 vpaddq ymm1, ymm1, ymmword ptr [rcx - 1760] 100 vpaddq ymm0, ymm0, ymmword ptr [rcx - 1792] 101 vpaddq ymm0, ymm0, ymmword ptr [rcx - 1536] 102 vpaddq ymm1, ymm1, ymmword ptr [rcx - 1504] 103 vpaddq ymm2, ymm2, ymmword ptr [rcx - 1472] 104 vpaddq ymm3, ymm3, ymmword ptr [rcx - 1440] 105 vpaddq ymm4, ymm4, ymmword ptr [rcx - 1408] 106 vpaddq ymm5, ymm5, ymmword ptr [rcx - 1376] 107 vpaddq ymm6, ymm6, ymmword ptr [rcx - 1344] 108 vpaddq ymm7, ymm7, ymmword ptr [rcx - 1312] 109 vpaddq ymm7, ymm7, ymmword ptr [rcx - 1056] 110 vpaddq ymm6, ymm6, ymmword ptr [rcx - 1088] 111 vpaddq ymm5, ymm5, ymmword ptr [rcx - 1120] 112 vpaddq ymm4, ymm4, ymmword ptr [rcx - 1152] 113 vpaddq ymm3, ymm3, ymmword ptr [rcx - 1184] 114 vpaddq ymm2, ymm2, ymmword ptr [rcx - 1216] 115 vpaddq ymm1, ymm1, ymmword ptr [rcx - 1248] 116 vpaddq ymm0, ymm0, ymmword ptr [rcx - 1280] 117 vpaddq ymm0, ymm0, ymmword ptr [rcx - 1024] 118 vpaddq ymm1, ymm1, ymmword ptr [rcx - 992] 119 vpaddq ymm2, ymm2, ymmword ptr [rcx - 960] 120 vpaddq ymm3, ymm3, ymmword ptr [rcx - 928] 121 vpaddq ymm4, ymm4, ymmword ptr [rcx - 896] 122 vpaddq ymm5, ymm5, ymmword ptr [rcx - 864] 123 vpaddq ymm6, ymm6, ymmword ptr [rcx - 832] 124 vpaddq ymm7, ymm7, ymmword ptr [rcx - 800] 125 vpaddq ymm7, ymm7, ymmword ptr [rcx - 544] 126 vpaddq ymm6, ymm6, ymmword ptr [rcx - 576] 127 vpaddq ymm5, ymm5, ymmword ptr [rcx - 608] 128 vpaddq ymm4, ymm4, ymmword ptr [rcx - 640] 129 vpaddq ymm3, ymm3, ymmword ptr [rcx - 672] 130 vpaddq ymm2, ymm2, ymmword ptr [rcx - 704] 131 vpaddq ymm1, ymm1, ymmword ptr [rcx - 736] 132 vpaddq ymm0, ymm0, ymmword ptr [rcx - 768] 133 vpaddq ymm0, ymm0, ymmword ptr [rcx - 512] 134 vpaddq ymm1, ymm1, ymmword ptr [rcx - 480] 135 vpaddq ymm2, ymm2, ymmword ptr [rcx - 448] 136 vpaddq ymm3, ymm3, ymmword ptr [rcx - 416] 137 vpaddq ymm4, ymm4, ymmword ptr [rcx - 384] 138 vpaddq ymm5, ymm5, ymmword ptr [rcx - 352] 139 vpaddq ymm6, ymm6, ymmword ptr [rcx - 320] 140 vpaddq ymm7, ymm7, ymmword ptr [rcx - 288] 141 vpaddq ymm7, ymm7, ymmword ptr [rcx - 32] 142 vpaddq ymm6, ymm6, ymmword ptr [rcx - 64] 143 vpaddq ymm5, ymm5, ymmword ptr [rcx - 96] 144 vpaddq ymm4, ymm4, ymmword ptr [rcx - 128] 145 vpaddq ymm3, ymm3, ymmword ptr [rcx - 160] 146 vpaddq ymm2, ymm2, ymmword ptr [rcx - 192] 147 vpaddq ymm1, ymm1, ymmword ptr [rcx - 224] 148 vpaddq ymm0, ymm0, ymmword ptr [rcx - 256] 149 vpaddq ymm0, ymm0, ymmword ptr [rcx] 150 vpaddq ymm1, ymm1, ymmword ptr [rcx + 32] 151 vpaddq ymm2, ymm2, ymmword ptr [rcx + 64] 152 vpaddq ymm3, ymm3, ymmword ptr [rcx + 96] 153 vpaddq ymm4, ymm4, ymmword ptr [rcx + 128] 154 vpaddq ymm5, ymm5, ymmword ptr [rcx + 160] 155 vpaddq ymm6, ymm6, ymmword ptr [rcx + 192] 156 vpaddq ymm7, ymm7, ymmword ptr [rcx + 224] 157 add rcx, 2048 158 add rax, -256 159 jne .LBB0_13 160 .LBB0_14: 161 vpaddq ymm1, ymm1, ymm5 162 vpaddq ymm3, ymm3, ymm7 163 vpaddq ymm0, ymm0, ymm4 164 vpaddq ymm2, ymm2, ymm6 165 vpaddq ymm0, ymm0, ymm2 166 vpaddq ymm1, ymm1, ymm3 167 vpaddq ymm0, ymm0, ymm1 168 vextracti128 xmm1, ymm0, 1 169 vpaddq ymm0, ymm0, ymm1 170 vpshufd xmm1, xmm0, 78 # xmm1 = xmm0[2,3,0,1] 171 vpaddq ymm0, ymm0, ymm1 172 vmovq rax, xmm0 173 cmp r9, rsi 174 jne .LBB0_4 175 jmp .LBB0_15 176 .Lfunc_end0: 177 .size sum_uint64_avx2, .Lfunc_end0-sum_uint64_avx2 178 179 180 .ident "Apple LLVM version 9.0.0 (clang-900.0.39.2)" 181 .section ".note.GNU-stack","",@progbits