2018-12-18 22:57:26 -08:00
|
|
|
// Code generated by command: go run asm.go -out sum.s -stubs stub.go. DO NOT EDIT.
|
2018-12-11 23:02:50 -08:00
|
|
|
|
2019-01-06 20:04:51 -08:00
|
|
|
#include "textflag.h"
|
|
|
|
|
|
2018-12-11 23:02:50 -08:00
|
|
|
// func Sum(xs []uint64) uint64
|
2019-01-06 20:04:51 -08:00
|
|
|
TEXT ·Sum(SB), NOSPLIT, $0-32
|
2019-01-13 11:59:14 -08:00
|
|
|
MOVQ xs_base+0(FP), AX
|
2019-01-10 21:21:41 -08:00
|
|
|
MOVQ xs_len+8(FP), CX
|
2019-01-11 10:57:38 -08:00
|
|
|
|
|
|
|
|
// Initialize sum register to zero.
|
2019-01-10 21:21:41 -08:00
|
|
|
XORQ DX, DX
|
|
|
|
|
|
2018-12-11 23:02:50 -08:00
|
|
|
loop:
|
2019-01-11 11:06:10 -08:00
|
|
|
// Loop until zero bytes remain.
|
2019-01-10 21:21:41 -08:00
|
|
|
CMPQ CX, $0x00
|
|
|
|
|
JE done
|
2019-01-11 10:57:38 -08:00
|
|
|
|
|
|
|
|
// Load from pointer and add to running sum.
|
2019-01-10 21:21:41 -08:00
|
|
|
ADDQ (AX), DX
|
2019-01-11 10:57:38 -08:00
|
|
|
|
|
|
|
|
// Advance pointer, decrement byte count.
|
2019-01-10 21:21:41 -08:00
|
|
|
ADDQ $0x08, AX
|
|
|
|
|
DECQ CX
|
|
|
|
|
JMP loop
|
|
|
|
|
|
2018-12-11 23:02:50 -08:00
|
|
|
done:
|
2019-01-11 11:06:10 -08:00
|
|
|
// Store sum to return value.
|
2019-01-10 21:21:41 -08:00
|
|
|
MOVQ DX, ret+24(FP)
|
2018-12-18 21:05:05 -08:00
|
|
|
RET
|