187 lines
3.2 KiB
ArmAsm
187 lines
3.2 KiB
ArmAsm
|
|
// 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
|