// Code generated by command: go run asm.go -out zeroing.s -stubs stub.go. DO NOT EDIT.

#include "textflag.h"

// func Zeroing(out *[8]uint64)
// Requires: AVX512F
TEXT ·Zeroing(SB), NOSPLIT, $0-8
	MOVQ out+0(FP), AX

	// Initialize sum.
	VPXORD Z0, Z0, Z0

	// Initialize summand registers.
	MOVQ         $0x9e77d78aacb8cbcc, CX
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1
	VPBROADCASTQ CX, Z1

	// Prepare mask register.
	KXNORW K1, K1, K1

	// Prepare constant registers.
	MOVQ         $0x0000000000000001, CX
	VPBROADCASTQ CX, Z2
	VPXORD       Z3, Z3, Z3

	// Summand 1.
	VPADDD.Z Z3, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 2.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 3.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 4.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 5.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 6.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 7.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 8.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 9.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 10.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 11.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 12.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 13.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 14.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 15.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 16.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 17.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 18.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 19.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 20.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 21.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 22.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 23.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 24.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 25.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 26.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 27.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 28.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 29.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 30.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 31.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Summand 32.
	VPADDD.Z Z1, Z2, K1, Z1
	VPADDD   Z0, Z1, Z0

	// Write result to output pointer.
	VMOVDQU64 Z0, (AX)
	RET
