klauspost / reedsolomon

Reed-Solomon Erasure Coding in Go

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Loading argument twice off the stack?

fwessels opened this issue · comments

The avo generated code seems to be loading one argument twice:

// func mulAvxTwo_1x1_64(matrix []byte, in [][]byte, out [][]byte, start int, n int)
// Requires: AVX, AVX2, SSE2
TEXT ·mulAvxTwo_1x1_64(SB), $0-88
	// Loading all tables to registers
	// Destination kept in GP registers
	// Full registers estimated 10 YMM used
	MOVQ    n+80(FP), AX
	MOVQ    matrix_base+0(FP), CX
	SHRQ    $0x06, AX
	TESTQ   AX, AX
	JZ      mulAvxTwo_1x1_64_end
	VMOVDQU (CX), Y0
	VMOVDQU 32(CX), Y1
	MOVQ    in_base+24(FP), CX
	MOVQ    (CX), CX
	MOVQ    out_base+48(FP), DX
	MOVQ    out_base+48(FP), DX    // <-----
	MOVQ    (DX), DX
	MOVQ    start+72(FP), BX