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