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