]> git.proxmox.com Git - ceph.git/blob - ceph/src/arrow/go/arrow/math/uint64_avx2_amd64.s
import quincy 17.2.0
[ceph.git] / ceph / src / arrow / go / arrow / math / uint64_avx2_amd64.s
1 //+build !noasm !appengine
2 // AUTO-GENERATED BY C2GOASM -- DO NOT EDIT
3
4 TEXT ยท_sum_uint64_avx2(SB), $0-24
5
6 MOVQ buf+0(FP), DI
7 MOVQ len+8(FP), SI
8 MOVQ res+16(FP), DX
9
10 WORD $0x8548; BYTE $0xf6 // test rsi, rsi
11 JE LBB0_1
12 LONG $0x1ffe8348 // cmp rsi, 31
13 JBE LBB0_3
14 WORD $0x8949; BYTE $0xf1 // mov r9, rsi
15 LONG $0xe0e18349 // and r9, -32
16 JE LBB0_3
17 LONG $0xe0418d4d // lea r8, [r9 - 32]
18 WORD $0x8944; BYTE $0xc0 // mov eax, r8d
19 WORD $0xe8c1; BYTE $0x05 // shr eax, 5
20 WORD $0xc0ff // inc eax
21 LONG $0x07e08348 // and rax, 7
22 JE LBB0_8
23 WORD $0xf748; BYTE $0xd8 // neg rax
24 LONG $0xc0effdc5 // vpxor ymm0, ymm0, ymm0
25 WORD $0xc931 // xor ecx, ecx
26 LONG $0xc9eff5c5 // vpxor ymm1, ymm1, ymm1
27 LONG $0xd2efedc5 // vpxor ymm2, ymm2, ymm2
28 LONG $0xdbefe5c5 // vpxor ymm3, ymm3, ymm3
29 LONG $0xe4efddc5 // vpxor ymm4, ymm4, ymm4
30 LONG $0xedefd5c5 // vpxor ymm5, ymm5, ymm5
31 LONG $0xf6efcdc5 // vpxor ymm6, ymm6, ymm6
32 LONG $0xffefc5c5 // vpxor ymm7, ymm7, ymm7
33
34 LBB0_10:
35 LONG $0x04d4fdc5; BYTE $0xcf // vpaddq ymm0, ymm0, yword [rdi + 8*rcx]
36 LONG $0x4cd4f5c5; WORD $0x20cf // vpaddq ymm1, ymm1, yword [rdi + 8*rcx + 32]
37 LONG $0x54d4edc5; WORD $0x40cf // vpaddq ymm2, ymm2, yword [rdi + 8*rcx + 64]
38 LONG $0x5cd4e5c5; WORD $0x60cf // vpaddq ymm3, ymm3, yword [rdi + 8*rcx + 96]
39 QUAD $0x000080cfa4d4ddc5; BYTE $0x00 // vpaddq ymm4, ymm4, yword [rdi + 8*rcx + 128]
40 QUAD $0x0000a0cfacd4d5c5; BYTE $0x00 // vpaddq ymm5, ymm5, yword [rdi + 8*rcx + 160]
41 QUAD $0x0000c0cfb4d4cdc5; BYTE $0x00 // vpaddq ymm6, ymm6, yword [rdi + 8*rcx + 192]
42 QUAD $0x0000e0cfbcd4c5c5; BYTE $0x00 // vpaddq ymm7, ymm7, yword [rdi + 8*rcx + 224]
43 LONG $0x20c18348 // add rcx, 32
44 WORD $0xff48; BYTE $0xc0 // inc rax
45 JNE LBB0_10
46 JMP LBB0_11
47
48 LBB0_3:
49 WORD $0x3145; BYTE $0xc9 // xor r9d, r9d
50 WORD $0xc031 // xor eax, eax
51
52 LBB0_4:
53 LONG $0xcf0c8d4a // lea rcx, [rdi + 8*r9]
54 WORD $0x294c; BYTE $0xce // sub rsi, r9
55
56 LBB0_5:
57 WORD $0x0348; BYTE $0x01 // add rax, qword [rcx]
58 LONG $0x08c18348 // add rcx, 8
59 WORD $0xff48; BYTE $0xce // dec rsi
60 JNE LBB0_5
61 JMP LBB0_15
62
63 LBB0_1:
64 WORD $0xc031 // xor eax, eax
65
66 LBB0_15:
67 WORD $0x8948; BYTE $0x02 // mov qword [rdx], rax
68 VZEROUPPER
69 RET
70
71 LBB0_8:
72 WORD $0xc931 // xor ecx, ecx
73 LONG $0xc0effdc5 // vpxor ymm0, ymm0, ymm0
74 LONG $0xc9eff5c5 // vpxor ymm1, ymm1, ymm1
75 LONG $0xd2efedc5 // vpxor ymm2, ymm2, ymm2
76 LONG $0xdbefe5c5 // vpxor ymm3, ymm3, ymm3
77 LONG $0xe4efddc5 // vpxor ymm4, ymm4, ymm4
78 LONG $0xedefd5c5 // vpxor ymm5, ymm5, ymm5
79 LONG $0xf6efcdc5 // vpxor ymm6, ymm6, ymm6
80 LONG $0xffefc5c5 // vpxor ymm7, ymm7, ymm7
81
82 LBB0_11:
83 LONG $0xe0f88149; WORD $0x0000; BYTE $0x00 // cmp r8, 224
84 JB LBB0_14
85 WORD $0x894c; BYTE $0xc8 // mov rax, r9
86 WORD $0x2948; BYTE $0xc8 // sub rax, rcx
87 QUAD $0x00000700cf8c8d48 // lea rcx, [rdi + 8*rcx + 1792]
88
89 LBB0_13:
90 QUAD $0xfffff9e0b9d4c5c5 // vpaddq ymm7, ymm7, yword [rcx - 1568]
91 QUAD $0xfffff9c0b1d4cdc5 // vpaddq ymm6, ymm6, yword [rcx - 1600]
92 QUAD $0xfffff9a0a9d4d5c5 // vpaddq ymm5, ymm5, yword [rcx - 1632]
93 QUAD $0xfffff980a1d4ddc5 // vpaddq ymm4, ymm4, yword [rcx - 1664]
94 QUAD $0xfffff96099d4e5c5 // vpaddq ymm3, ymm3, yword [rcx - 1696]
95 QUAD $0xfffff94091d4edc5 // vpaddq ymm2, ymm2, yword [rcx - 1728]
96 QUAD $0xfffff92089d4f5c5 // vpaddq ymm1, ymm1, yword [rcx - 1760]
97 QUAD $0xfffff90081d4fdc5 // vpaddq ymm0, ymm0, yword [rcx - 1792]
98 QUAD $0xfffffa0081d4fdc5 // vpaddq ymm0, ymm0, yword [rcx - 1536]
99 QUAD $0xfffffa2089d4f5c5 // vpaddq ymm1, ymm1, yword [rcx - 1504]
100 QUAD $0xfffffa4091d4edc5 // vpaddq ymm2, ymm2, yword [rcx - 1472]
101 QUAD $0xfffffa6099d4e5c5 // vpaddq ymm3, ymm3, yword [rcx - 1440]
102 QUAD $0xfffffa80a1d4ddc5 // vpaddq ymm4, ymm4, yword [rcx - 1408]
103 QUAD $0xfffffaa0a9d4d5c5 // vpaddq ymm5, ymm5, yword [rcx - 1376]
104 QUAD $0xfffffac0b1d4cdc5 // vpaddq ymm6, ymm6, yword [rcx - 1344]
105 QUAD $0xfffffae0b9d4c5c5 // vpaddq ymm7, ymm7, yword [rcx - 1312]
106 QUAD $0xfffffbe0b9d4c5c5 // vpaddq ymm7, ymm7, yword [rcx - 1056]
107 QUAD $0xfffffbc0b1d4cdc5 // vpaddq ymm6, ymm6, yword [rcx - 1088]
108 QUAD $0xfffffba0a9d4d5c5 // vpaddq ymm5, ymm5, yword [rcx - 1120]
109 QUAD $0xfffffb80a1d4ddc5 // vpaddq ymm4, ymm4, yword [rcx - 1152]
110 QUAD $0xfffffb6099d4e5c5 // vpaddq ymm3, ymm3, yword [rcx - 1184]
111 QUAD $0xfffffb4091d4edc5 // vpaddq ymm2, ymm2, yword [rcx - 1216]
112 QUAD $0xfffffb2089d4f5c5 // vpaddq ymm1, ymm1, yword [rcx - 1248]
113 QUAD $0xfffffb0081d4fdc5 // vpaddq ymm0, ymm0, yword [rcx - 1280]
114 QUAD $0xfffffc0081d4fdc5 // vpaddq ymm0, ymm0, yword [rcx - 1024]
115 QUAD $0xfffffc2089d4f5c5 // vpaddq ymm1, ymm1, yword [rcx - 992]
116 QUAD $0xfffffc4091d4edc5 // vpaddq ymm2, ymm2, yword [rcx - 960]
117 QUAD $0xfffffc6099d4e5c5 // vpaddq ymm3, ymm3, yword [rcx - 928]
118 QUAD $0xfffffc80a1d4ddc5 // vpaddq ymm4, ymm4, yword [rcx - 896]
119 QUAD $0xfffffca0a9d4d5c5 // vpaddq ymm5, ymm5, yword [rcx - 864]
120 QUAD $0xfffffcc0b1d4cdc5 // vpaddq ymm6, ymm6, yword [rcx - 832]
121 QUAD $0xfffffce0b9d4c5c5 // vpaddq ymm7, ymm7, yword [rcx - 800]
122 QUAD $0xfffffde0b9d4c5c5 // vpaddq ymm7, ymm7, yword [rcx - 544]
123 QUAD $0xfffffdc0b1d4cdc5 // vpaddq ymm6, ymm6, yword [rcx - 576]
124 QUAD $0xfffffda0a9d4d5c5 // vpaddq ymm5, ymm5, yword [rcx - 608]
125 QUAD $0xfffffd80a1d4ddc5 // vpaddq ymm4, ymm4, yword [rcx - 640]
126 QUAD $0xfffffd6099d4e5c5 // vpaddq ymm3, ymm3, yword [rcx - 672]
127 QUAD $0xfffffd4091d4edc5 // vpaddq ymm2, ymm2, yword [rcx - 704]
128 QUAD $0xfffffd2089d4f5c5 // vpaddq ymm1, ymm1, yword [rcx - 736]
129 QUAD $0xfffffd0081d4fdc5 // vpaddq ymm0, ymm0, yword [rcx - 768]
130 QUAD $0xfffffe0081d4fdc5 // vpaddq ymm0, ymm0, yword [rcx - 512]
131 QUAD $0xfffffe2089d4f5c5 // vpaddq ymm1, ymm1, yword [rcx - 480]
132 QUAD $0xfffffe4091d4edc5 // vpaddq ymm2, ymm2, yword [rcx - 448]
133 QUAD $0xfffffe6099d4e5c5 // vpaddq ymm3, ymm3, yword [rcx - 416]
134 QUAD $0xfffffe80a1d4ddc5 // vpaddq ymm4, ymm4, yword [rcx - 384]
135 QUAD $0xfffffea0a9d4d5c5 // vpaddq ymm5, ymm5, yword [rcx - 352]
136 QUAD $0xfffffec0b1d4cdc5 // vpaddq ymm6, ymm6, yword [rcx - 320]
137 QUAD $0xfffffee0b9d4c5c5 // vpaddq ymm7, ymm7, yword [rcx - 288]
138 LONG $0x79d4c5c5; BYTE $0xe0 // vpaddq ymm7, ymm7, yword [rcx - 32]
139 LONG $0x71d4cdc5; BYTE $0xc0 // vpaddq ymm6, ymm6, yword [rcx - 64]
140 LONG $0x69d4d5c5; BYTE $0xa0 // vpaddq ymm5, ymm5, yword [rcx - 96]
141 LONG $0x61d4ddc5; BYTE $0x80 // vpaddq ymm4, ymm4, yword [rcx - 128]
142 QUAD $0xffffff6099d4e5c5 // vpaddq ymm3, ymm3, yword [rcx - 160]
143 QUAD $0xffffff4091d4edc5 // vpaddq ymm2, ymm2, yword [rcx - 192]
144 QUAD $0xffffff2089d4f5c5 // vpaddq ymm1, ymm1, yword [rcx - 224]
145 QUAD $0xffffff0081d4fdc5 // vpaddq ymm0, ymm0, yword [rcx - 256]
146 LONG $0x01d4fdc5 // vpaddq ymm0, ymm0, yword [rcx]
147 LONG $0x49d4f5c5; BYTE $0x20 // vpaddq ymm1, ymm1, yword [rcx + 32]
148 LONG $0x51d4edc5; BYTE $0x40 // vpaddq ymm2, ymm2, yword [rcx + 64]
149 LONG $0x59d4e5c5; BYTE $0x60 // vpaddq ymm3, ymm3, yword [rcx + 96]
150 QUAD $0x00000080a1d4ddc5 // vpaddq ymm4, ymm4, yword [rcx + 128]
151 QUAD $0x000000a0a9d4d5c5 // vpaddq ymm5, ymm5, yword [rcx + 160]
152 QUAD $0x000000c0b1d4cdc5 // vpaddq ymm6, ymm6, yword [rcx + 192]
153 QUAD $0x000000e0b9d4c5c5 // vpaddq ymm7, ymm7, yword [rcx + 224]
154 LONG $0x00c18148; WORD $0x0008; BYTE $0x00 // add rcx, 2048
155 LONG $0xff000548; WORD $0xffff // add rax, -256
156 JNE LBB0_13
157
158 LBB0_14:
159 LONG $0xcdd4f5c5 // vpaddq ymm1, ymm1, ymm5
160 LONG $0xdfd4e5c5 // vpaddq ymm3, ymm3, ymm7
161 LONG $0xc4d4fdc5 // vpaddq ymm0, ymm0, ymm4
162 LONG $0xd6d4edc5 // vpaddq ymm2, ymm2, ymm6
163 LONG $0xc2d4fdc5 // vpaddq ymm0, ymm0, ymm2
164 LONG $0xcbd4f5c5 // vpaddq ymm1, ymm1, ymm3
165 LONG $0xc1d4fdc5 // vpaddq ymm0, ymm0, ymm1
166 LONG $0x397de3c4; WORD $0x01c1 // vextracti128 xmm1, ymm0, 1
167 LONG $0xc1d4fdc5 // vpaddq ymm0, ymm0, ymm1
168 LONG $0xc870f9c5; BYTE $0x4e // vpshufd xmm1, xmm0, 78
169 LONG $0xc1d4fdc5 // vpaddq ymm0, ymm0, ymm1
170 LONG $0x7ef9e1c4; BYTE $0xc0 // vmovq rax, xmm0
171 WORD $0x3949; BYTE $0xf1 // cmp r9, rsi
172 JNE LBB0_4
173 JMP LBB0_15