mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2025-01-10 13:01:21 +00:00
ebdac3a192
* Profile all stages * Try to recover senders with 8 goroutines * fix CPU profiling for stage_bodies * fix out-of-index * Try full DAG for verfication of header seals * Try to unroll fnvHash for performance * SSE2 assembly for fnvHash16 * fnvHash16AVX2 * Revert changes to state.go * check we're on 64-bit in useAVX2 * Shave a move off fnvHash16AVX2 * asmdecl doesn't know about VMOVD * disable linter in the right place
22 lines
352 B
ArmAsm
22 lines
352 B
ArmAsm
#include "textflag.h"
|
|
|
|
// func fnvHash16AVX2(data, mix *uint32, prime uint32)
|
|
TEXT ·fnvHash16AVX2(SB), NOSPLIT, $0
|
|
MOVQ data+0(FP), AX
|
|
MOVQ mix+8(FP), BX
|
|
|
|
VMOVD prime+16(FP), X0
|
|
VPBROADCASTD X0, Y0
|
|
|
|
VPMULLD (AX), Y0, Y1
|
|
VPXOR (BX), Y1, Y1
|
|
VMOVDQU Y1, (AX)
|
|
|
|
VPMULLD 32(AX), Y0, Y0
|
|
VPXOR 32(BX), Y0, Y0
|
|
VMOVDQU Y0, 32(AX)
|
|
|
|
VZEROUPPER
|
|
|
|
RET
|