]>
Commit | Line | Data |
---|---|---|
1d09f67e TL |
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 |