File: int64_avx2_amd64.s

package info (click to toggle)
golang-github-apache-arrow-go 18.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 32,200 kB
  • sloc: asm: 477,547; ansic: 5,369; cpp: 759; sh: 585; makefile: 319; python: 190; sed: 5
file content (173 lines) | stat: -rw-r--r-- 9,765 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
//+build !noasm !appengine
// AUTO-GENERATED BY C2GOASM -- DO NOT EDIT

TEXT ยท_sum_int64_avx2(SB), $0-24

	MOVQ buf+0(FP), DI
	MOVQ len+8(FP), SI
	MOVQ res+16(FP), DX

	WORD $0x8548; BYTE $0xf6 // test    rsi, rsi
	JE   LBB0_1
	LONG $0x1ffe8348         // cmp    rsi, 31
	JBE  LBB0_3
	WORD $0x8949; BYTE $0xf1 // mov    r9, rsi
	LONG $0xe0e18349         // and    r9, -32
	JE   LBB0_3
	LONG $0xe0418d4d         // lea    r8, [r9 - 32]
	WORD $0x8944; BYTE $0xc0 // mov    eax, r8d
	WORD $0xe8c1; BYTE $0x05 // shr    eax, 5
	WORD $0xc0ff             // inc    eax
	LONG $0x07e08348         // and    rax, 7
	JE   LBB0_8
	WORD $0xf748; BYTE $0xd8 // neg    rax
	LONG $0xc0effdc5         // vpxor    ymm0, ymm0, ymm0
	WORD $0xc931             // xor    ecx, ecx
	LONG $0xc9eff5c5         // vpxor    ymm1, ymm1, ymm1
	LONG $0xd2efedc5         // vpxor    ymm2, ymm2, ymm2
	LONG $0xdbefe5c5         // vpxor    ymm3, ymm3, ymm3
	LONG $0xe4efddc5         // vpxor    ymm4, ymm4, ymm4
	LONG $0xedefd5c5         // vpxor    ymm5, ymm5, ymm5
	LONG $0xf6efcdc5         // vpxor    ymm6, ymm6, ymm6
	LONG $0xffefc5c5         // vpxor    ymm7, ymm7, ymm7

LBB0_10:
	LONG $0x04d4fdc5; BYTE $0xcf         // vpaddq    ymm0, ymm0, yword [rdi + 8*rcx]
	LONG $0x4cd4f5c5; WORD $0x20cf       // vpaddq    ymm1, ymm1, yword [rdi + 8*rcx + 32]
	LONG $0x54d4edc5; WORD $0x40cf       // vpaddq    ymm2, ymm2, yword [rdi + 8*rcx + 64]
	LONG $0x5cd4e5c5; WORD $0x60cf       // vpaddq    ymm3, ymm3, yword [rdi + 8*rcx + 96]
	QUAD $0x000080cfa4d4ddc5; BYTE $0x00 // vpaddq    ymm4, ymm4, yword [rdi + 8*rcx + 128]
	QUAD $0x0000a0cfacd4d5c5; BYTE $0x00 // vpaddq    ymm5, ymm5, yword [rdi + 8*rcx + 160]
	QUAD $0x0000c0cfb4d4cdc5; BYTE $0x00 // vpaddq    ymm6, ymm6, yword [rdi + 8*rcx + 192]
	QUAD $0x0000e0cfbcd4c5c5; BYTE $0x00 // vpaddq    ymm7, ymm7, yword [rdi + 8*rcx + 224]
	LONG $0x20c18348                     // add    rcx, 32
	WORD $0xff48; BYTE $0xc0             // inc    rax
	JNE  LBB0_10
	JMP  LBB0_11

LBB0_3:
	WORD $0x3145; BYTE $0xc9 // xor    r9d, r9d
	WORD $0xc031             // xor    eax, eax

LBB0_4:
	LONG $0xcf0c8d4a         // lea    rcx, [rdi + 8*r9]
	WORD $0x294c; BYTE $0xce // sub    rsi, r9

LBB0_5:
	WORD $0x0348; BYTE $0x01 // add    rax, qword [rcx]
	LONG $0x08c18348         // add    rcx, 8
	WORD $0xff48; BYTE $0xce // dec    rsi
	JNE  LBB0_5
	JMP  LBB0_15

LBB0_1:
	WORD $0xc031 // xor    eax, eax

LBB0_15:
	WORD $0x8948; BYTE $0x02 // mov    qword [rdx], rax
	VZEROUPPER
	RET

LBB0_8:
	WORD $0xc931     // xor    ecx, ecx
	LONG $0xc0effdc5 // vpxor    ymm0, ymm0, ymm0
	LONG $0xc9eff5c5 // vpxor    ymm1, ymm1, ymm1
	LONG $0xd2efedc5 // vpxor    ymm2, ymm2, ymm2
	LONG $0xdbefe5c5 // vpxor    ymm3, ymm3, ymm3
	LONG $0xe4efddc5 // vpxor    ymm4, ymm4, ymm4
	LONG $0xedefd5c5 // vpxor    ymm5, ymm5, ymm5
	LONG $0xf6efcdc5 // vpxor    ymm6, ymm6, ymm6
	LONG $0xffefc5c5 // vpxor    ymm7, ymm7, ymm7

LBB0_11:
	LONG $0xe0f88149; WORD $0x0000; BYTE $0x00 // cmp    r8, 224
	JB   LBB0_14
	WORD $0x894c; BYTE $0xc8                   // mov    rax, r9
	WORD $0x2948; BYTE $0xc8                   // sub    rax, rcx
	QUAD $0x00000700cf8c8d48                   // lea    rcx, [rdi + 8*rcx + 1792]

LBB0_13:
	QUAD $0xfffff9e0b9d4c5c5                   // vpaddq    ymm7, ymm7, yword [rcx - 1568]
	QUAD $0xfffff9c0b1d4cdc5                   // vpaddq    ymm6, ymm6, yword [rcx - 1600]
	QUAD $0xfffff9a0a9d4d5c5                   // vpaddq    ymm5, ymm5, yword [rcx - 1632]
	QUAD $0xfffff980a1d4ddc5                   // vpaddq    ymm4, ymm4, yword [rcx - 1664]
	QUAD $0xfffff96099d4e5c5                   // vpaddq    ymm3, ymm3, yword [rcx - 1696]
	QUAD $0xfffff94091d4edc5                   // vpaddq    ymm2, ymm2, yword [rcx - 1728]
	QUAD $0xfffff92089d4f5c5                   // vpaddq    ymm1, ymm1, yword [rcx - 1760]
	QUAD $0xfffff90081d4fdc5                   // vpaddq    ymm0, ymm0, yword [rcx - 1792]
	QUAD $0xfffffa0081d4fdc5                   // vpaddq    ymm0, ymm0, yword [rcx - 1536]
	QUAD $0xfffffa2089d4f5c5                   // vpaddq    ymm1, ymm1, yword [rcx - 1504]
	QUAD $0xfffffa4091d4edc5                   // vpaddq    ymm2, ymm2, yword [rcx - 1472]
	QUAD $0xfffffa6099d4e5c5                   // vpaddq    ymm3, ymm3, yword [rcx - 1440]
	QUAD $0xfffffa80a1d4ddc5                   // vpaddq    ymm4, ymm4, yword [rcx - 1408]
	QUAD $0xfffffaa0a9d4d5c5                   // vpaddq    ymm5, ymm5, yword [rcx - 1376]
	QUAD $0xfffffac0b1d4cdc5                   // vpaddq    ymm6, ymm6, yword [rcx - 1344]
	QUAD $0xfffffae0b9d4c5c5                   // vpaddq    ymm7, ymm7, yword [rcx - 1312]
	QUAD $0xfffffbe0b9d4c5c5                   // vpaddq    ymm7, ymm7, yword [rcx - 1056]
	QUAD $0xfffffbc0b1d4cdc5                   // vpaddq    ymm6, ymm6, yword [rcx - 1088]
	QUAD $0xfffffba0a9d4d5c5                   // vpaddq    ymm5, ymm5, yword [rcx - 1120]
	QUAD $0xfffffb80a1d4ddc5                   // vpaddq    ymm4, ymm4, yword [rcx - 1152]
	QUAD $0xfffffb6099d4e5c5                   // vpaddq    ymm3, ymm3, yword [rcx - 1184]
	QUAD $0xfffffb4091d4edc5                   // vpaddq    ymm2, ymm2, yword [rcx - 1216]
	QUAD $0xfffffb2089d4f5c5                   // vpaddq    ymm1, ymm1, yword [rcx - 1248]
	QUAD $0xfffffb0081d4fdc5                   // vpaddq    ymm0, ymm0, yword [rcx - 1280]
	QUAD $0xfffffc0081d4fdc5                   // vpaddq    ymm0, ymm0, yword [rcx - 1024]
	QUAD $0xfffffc2089d4f5c5                   // vpaddq    ymm1, ymm1, yword [rcx - 992]
	QUAD $0xfffffc4091d4edc5                   // vpaddq    ymm2, ymm2, yword [rcx - 960]
	QUAD $0xfffffc6099d4e5c5                   // vpaddq    ymm3, ymm3, yword [rcx - 928]
	QUAD $0xfffffc80a1d4ddc5                   // vpaddq    ymm4, ymm4, yword [rcx - 896]
	QUAD $0xfffffca0a9d4d5c5                   // vpaddq    ymm5, ymm5, yword [rcx - 864]
	QUAD $0xfffffcc0b1d4cdc5                   // vpaddq    ymm6, ymm6, yword [rcx - 832]
	QUAD $0xfffffce0b9d4c5c5                   // vpaddq    ymm7, ymm7, yword [rcx - 800]
	QUAD $0xfffffde0b9d4c5c5                   // vpaddq    ymm7, ymm7, yword [rcx - 544]
	QUAD $0xfffffdc0b1d4cdc5                   // vpaddq    ymm6, ymm6, yword [rcx - 576]
	QUAD $0xfffffda0a9d4d5c5                   // vpaddq    ymm5, ymm5, yword [rcx - 608]
	QUAD $0xfffffd80a1d4ddc5                   // vpaddq    ymm4, ymm4, yword [rcx - 640]
	QUAD $0xfffffd6099d4e5c5                   // vpaddq    ymm3, ymm3, yword [rcx - 672]
	QUAD $0xfffffd4091d4edc5                   // vpaddq    ymm2, ymm2, yword [rcx - 704]
	QUAD $0xfffffd2089d4f5c5                   // vpaddq    ymm1, ymm1, yword [rcx - 736]
	QUAD $0xfffffd0081d4fdc5                   // vpaddq    ymm0, ymm0, yword [rcx - 768]
	QUAD $0xfffffe0081d4fdc5                   // vpaddq    ymm0, ymm0, yword [rcx - 512]
	QUAD $0xfffffe2089d4f5c5                   // vpaddq    ymm1, ymm1, yword [rcx - 480]
	QUAD $0xfffffe4091d4edc5                   // vpaddq    ymm2, ymm2, yword [rcx - 448]
	QUAD $0xfffffe6099d4e5c5                   // vpaddq    ymm3, ymm3, yword [rcx - 416]
	QUAD $0xfffffe80a1d4ddc5                   // vpaddq    ymm4, ymm4, yword [rcx - 384]
	QUAD $0xfffffea0a9d4d5c5                   // vpaddq    ymm5, ymm5, yword [rcx - 352]
	QUAD $0xfffffec0b1d4cdc5                   // vpaddq    ymm6, ymm6, yword [rcx - 320]
	QUAD $0xfffffee0b9d4c5c5                   // vpaddq    ymm7, ymm7, yword [rcx - 288]
	LONG $0x79d4c5c5; BYTE $0xe0               // vpaddq    ymm7, ymm7, yword [rcx - 32]
	LONG $0x71d4cdc5; BYTE $0xc0               // vpaddq    ymm6, ymm6, yword [rcx - 64]
	LONG $0x69d4d5c5; BYTE $0xa0               // vpaddq    ymm5, ymm5, yword [rcx - 96]
	LONG $0x61d4ddc5; BYTE $0x80               // vpaddq    ymm4, ymm4, yword [rcx - 128]
	QUAD $0xffffff6099d4e5c5                   // vpaddq    ymm3, ymm3, yword [rcx - 160]
	QUAD $0xffffff4091d4edc5                   // vpaddq    ymm2, ymm2, yword [rcx - 192]
	QUAD $0xffffff2089d4f5c5                   // vpaddq    ymm1, ymm1, yword [rcx - 224]
	QUAD $0xffffff0081d4fdc5                   // vpaddq    ymm0, ymm0, yword [rcx - 256]
	LONG $0x01d4fdc5                           // vpaddq    ymm0, ymm0, yword [rcx]
	LONG $0x49d4f5c5; BYTE $0x20               // vpaddq    ymm1, ymm1, yword [rcx + 32]
	LONG $0x51d4edc5; BYTE $0x40               // vpaddq    ymm2, ymm2, yword [rcx + 64]
	LONG $0x59d4e5c5; BYTE $0x60               // vpaddq    ymm3, ymm3, yword [rcx + 96]
	QUAD $0x00000080a1d4ddc5                   // vpaddq    ymm4, ymm4, yword [rcx + 128]
	QUAD $0x000000a0a9d4d5c5                   // vpaddq    ymm5, ymm5, yword [rcx + 160]
	QUAD $0x000000c0b1d4cdc5                   // vpaddq    ymm6, ymm6, yword [rcx + 192]
	QUAD $0x000000e0b9d4c5c5                   // vpaddq    ymm7, ymm7, yword [rcx + 224]
	LONG $0x00c18148; WORD $0x0008; BYTE $0x00 // add    rcx, 2048
	LONG $0xff000548; WORD $0xffff             // add    rax, -256
	JNE  LBB0_13

LBB0_14:
	LONG $0xcdd4f5c5               // vpaddq    ymm1, ymm1, ymm5
	LONG $0xdfd4e5c5               // vpaddq    ymm3, ymm3, ymm7
	LONG $0xc4d4fdc5               // vpaddq    ymm0, ymm0, ymm4
	LONG $0xd6d4edc5               // vpaddq    ymm2, ymm2, ymm6
	LONG $0xc2d4fdc5               // vpaddq    ymm0, ymm0, ymm2
	LONG $0xcbd4f5c5               // vpaddq    ymm1, ymm1, ymm3
	LONG $0xc1d4fdc5               // vpaddq    ymm0, ymm0, ymm1
	LONG $0x397de3c4; WORD $0x01c1 // vextracti128    xmm1, ymm0, 1
	LONG $0xc1d4fdc5               // vpaddq    ymm0, ymm0, ymm1
	LONG $0xc870f9c5; BYTE $0x4e   // vpshufd    xmm1, xmm0, 78
	LONG $0xc1d4fdc5               // vpaddq    ymm0, ymm0, ymm1
	LONG $0x7ef9e1c4; BYTE $0xc0   // vmovq    rax, xmm0
	WORD $0x3949; BYTE $0xf1       // cmp    r9, rsi
	JNE  LBB0_4
	JMP  LBB0_15