github.com/zeebo/mon@v0.0.0-20211012163247-13d39bdb54fa/inthist/histogram.s (about)

     1  #include "textflag.h"
     2  
     3  // func sumHistogramAVX2(data *[64]uint32) uint64
     4  TEXT ·sumHistogramAVX2(SB), NOSPLIT, $0-16
     5  	MOVQ         data+0(FP), AX
     6  
     7  	VPMOVZXDQ    (AX), Y0
     8  	VPMOVZXDQ    16(AX), Y1
     9  	VPADDQ       Y0, Y1, Y0
    10  	VPMOVZXDQ    32(AX), Y1
    11  	VPADDQ       Y0, Y1, Y0
    12  	VPMOVZXDQ    48(AX), Y1
    13  	VPADDQ       Y0, Y1, Y0
    14  	VPMOVZXDQ    64(AX), Y1
    15  	VPADDQ       Y0, Y1, Y0
    16  	VPMOVZXDQ    80(AX), Y1
    17  	VPADDQ       Y0, Y1, Y0
    18  	VPMOVZXDQ    96(AX), Y1
    19  	VPADDQ       Y0, Y1, Y0
    20  	VPMOVZXDQ    112(AX), Y1
    21  	VPADDQ       Y0, Y1, Y0
    22  	VPMOVZXDQ    128(AX), Y1
    23  	VPADDQ       Y0, Y1, Y0
    24  	VPMOVZXDQ    144(AX), Y1
    25  	VPADDQ       Y0, Y1, Y0
    26  	VPMOVZXDQ    160(AX), Y1
    27  	VPADDQ       Y0, Y1, Y0
    28  	VPMOVZXDQ    176(AX), Y1
    29  	VPADDQ       Y0, Y1, Y0
    30  	VPMOVZXDQ    192(AX), Y1
    31  	VPADDQ       Y0, Y1, Y0
    32  	VPMOVZXDQ    208(AX), Y1
    33  	VPADDQ       Y0, Y1, Y0
    34  	VPMOVZXDQ    224(AX), Y1
    35  	VPADDQ       Y0, Y1, Y0
    36  	VPMOVZXDQ    240(AX), Y1
    37  	VPADDQ       Y0, Y1, Y0
    38  
    39  	VEXTRACTI128 $0x01, Y0, X1
    40  	VPADDQ       X0, X1, X0
    41  	VPSHUFD      $0x4e, X0, X1
    42  	VPADDQ       X0, X1, X0
    43  	VMOVQ        X0, BX
    44  	MOVQ         BX, ret+8(FP)
    45  
    46  	VZEROUPPER
    47  	RET