File: uint64_avx2.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 (181 lines) | stat: -rw-r--r-- 5,372 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
174
175
176
177
178
179
180
181
	.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