// Copyright 2018 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

#include "textflag.h"

#define B0 V0
#define B1 V1
#define B2 V2
#define B3 V3
#define B4 V4
#define B5 V5
#define B6 V6
#define B7 V7

#define ACC0 V8
#define ACC1 V9
#define ACCM V10

#define T0 V11
#define T1 V12
#define T2 V13
#define T3 V14

#define POLY V15
#define ZERO V16
#define INC V17
#define CTR V18

#define K0 V19
#define K1 V20
#define K2 V21
#define K3 V22
#define K4 V23
#define K5 V24
#define K6 V25
#define K7 V26
#define K8 V27
#define K9 V28
#define K10 V29
#define K11 V30
#define KLAST V31

#define reduce() \
	VEOR	ACC0.B16, ACCM.B16, ACCM.B16     \
	VEOR	ACC1.B16, ACCM.B16, ACCM.B16     \
	VEXT	$8, ZERO.B16, ACCM.B16, T0.B16   \
	VEXT	$8, ACCM.B16, ZERO.B16, ACCM.B16 \
	VEOR	ACCM.B16, ACC0.B16, ACC0.B16     \
	VEOR	T0.B16, ACC1.B16, ACC1.B16       \
	VPMULL	POLY.D1, ACC0.D1, T0.Q1          \
	VEXT	$8, ACC0.B16, ACC0.B16, ACC0.B16 \
	VEOR	T0.B16, ACC0.B16, ACC0.B16       \
	VPMULL	POLY.D1, ACC0.D1, T0.Q1          \
	VEOR	T0.B16, ACC1.B16, ACC1.B16       \
	VEXT	$8, ACC1.B16, ACC1.B16, ACC1.B16 \
	VEOR	ACC1.B16, ACC0.B16, ACC0.B16     \

// func gcmAesFinish(productTable *[256]byte, tagMask, T *[16]byte, pLen, dLen uint64)
TEXT ·gcmAesFinish(SB),NOSPLIT,$0
#define pTbl R0
#define tMsk R1
#define tPtr R2
#define plen R3
#define dlen R4

	MOVD	$0xC2, R1
	LSL	$56, R1
	MOVD	$1, R0
	VMOV	R1, POLY.D[0]
	VMOV	R0, POLY.D[1]
	VEOR	ZERO.B16, ZERO.B16, ZERO.B16

	MOVD	productTable+0(FP), pTbl
	MOVD	tagMask+8(FP), tMsk
	MOVD	T+16(FP), tPtr
	MOVD	pLen+24(FP), plen
	MOVD	dLen+32(FP), dlen

	VLD1	(tPtr), [ACC0.B16]
	VLD1	(tMsk), [B1.B16]

	LSL	$3, plen
	LSL	$3, dlen

	VMOV	dlen, B0.D[0]
	VMOV	plen, B0.D[1]

	ADD	$14*16, pTbl
	VLD1.P	(pTbl), [T1.B16, T2.B16]

	VEOR	ACC0.B16, B0.B16, B0.B16

	VEXT	$8, B0.B16, B0.B16, T0.B16
	VEOR	B0.B16, T0.B16, T0.B16
	VPMULL	B0.D1, T1.D1, ACC1.Q1
	VPMULL2	B0.D2, T1.D2, ACC0.Q1
	VPMULL	T0.D1, T2.D1, ACCM.Q1

	reduce()

	VREV64	ACC0.B16, ACC0.B16
	VEOR	B1.B16, ACC0.B16, ACC0.B16

	VST1	[ACC0.B16], (tPtr)
	RET
#undef pTbl
#undef tMsk
#undef tPtr
#undef plen
#undef dlen

// func gcmAesInit(productTable *[256]byte, ks []uint32)
TEXT ·gcmAesInit(SB),NOSPLIT,$0
#define pTbl R0
#define KS R1
#define NR R2
#define I R3
	MOVD	productTable+0(FP), pTbl
	MOVD	ks_base+8(FP), KS
	MOVD	ks_len+16(FP), NR

	MOVD	$0xC2, I
	LSL	$56, I
	VMOV	I, POLY.D[0]
	MOVD	$1, I
	VMOV	I, POLY.D[1]
	VEOR	ZERO.B16, ZERO.B16, ZERO.B16

	// Encrypt block 0 with the AES key to generate the hash key H
	VLD1.P	64(KS), [T0.B16, T1.B16, T2.B16, T3.B16]
	VEOR	B0.B16, B0.B16, B0.B16
	AESE	T0.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	T1.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	T2.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	T3.B16, B0.B16
	AESMC	B0.B16, B0.B16
	VLD1.P	64(KS), [T0.B16, T1.B16, T2.B16, T3.B16]
	AESE	T0.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	T1.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	T2.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	T3.B16, B0.B16
	AESMC	B0.B16, B0.B16
	TBZ	$4, NR, initEncFinish
	VLD1.P	32(KS), [T0.B16, T1.B16]
	AESE	T0.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	T1.B16, B0.B16
	AESMC	B0.B16, B0.B16
	TBZ	$3, NR, initEncFinish
	VLD1.P	32(KS), [T0.B16, T1.B16]
	AESE	T0.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	T1.B16, B0.B16
	AESMC	B0.B16, B0.B16
initEncFinish:
	VLD1	(KS), [T0.B16, T1.B16, T2.B16]
	AESE	T0.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	T1.B16, B0.B16
	VEOR	T2.B16, B0.B16, B0.B16

	VREV64	B0.B16, B0.B16

	// Multiply by 2 modulo P
	VMOV	B0.D[0], I
	ASR	$63, I
	VMOV	I, T1.D[0]
	VMOV	I, T1.D[1]
	VAND	POLY.B16, T1.B16, T1.B16
	VUSHR	$63, B0.D2, T2.D2
	VEXT	$8, ZERO.B16, T2.B16, T2.B16
	VSHL	$1, B0.D2, B0.D2
	VEOR	T1.B16, B0.B16, B0.B16
	VEOR	T2.B16, B0.B16, B0.B16 // Can avoid this when VSLI is available

	// Karatsuba pre-computation
	VEXT	$8, B0.B16, B0.B16, B1.B16
	VEOR	B0.B16, B1.B16, B1.B16

	ADD	$14*16, pTbl
	VST1	[B0.B16, B1.B16], (pTbl)
	SUB	$2*16, pTbl

	VMOV	B0.B16, B2.B16
	VMOV	B1.B16, B3.B16

	MOVD	$7, I

initLoop:
	// Compute powers of H
	SUBS	$1, I

	VPMULL	B0.D1, B2.D1, T1.Q1
	VPMULL2	B0.D2, B2.D2, T0.Q1
	VPMULL	B1.D1, B3.D1, T2.Q1
	VEOR	T0.B16, T2.B16, T2.B16
	VEOR	T1.B16, T2.B16, T2.B16
	VEXT	$8, ZERO.B16, T2.B16, T3.B16
	VEXT	$8, T2.B16, ZERO.B16, T2.B16
	VEOR	T2.B16, T0.B16, T0.B16
	VEOR	T3.B16, T1.B16, T1.B16
	VPMULL	POLY.D1, T0.D1, T2.Q1
	VEXT	$8, T0.B16, T0.B16, T0.B16
	VEOR	T2.B16, T0.B16, T0.B16
	VPMULL	POLY.D1, T0.D1, T2.Q1
	VEXT	$8, T0.B16, T0.B16, T0.B16
	VEOR	T2.B16, T0.B16, T0.B16
	VEOR	T1.B16, T0.B16, B2.B16
	VMOV	B2.B16, B3.B16
	VEXT	$8, B2.B16, B2.B16, B2.B16
	VEOR	B2.B16, B3.B16, B3.B16

	VST1	[B2.B16, B3.B16], (pTbl)
	SUB	$2*16, pTbl

	BNE	initLoop
	RET
#undef I
#undef NR
#undef KS
#undef pTbl

// func gcmAesData(productTable *[256]byte, data []byte, T *[16]byte)
TEXT ·gcmAesData(SB),NOSPLIT,$0
#define pTbl R0
#define aut R1
#define tPtr R2
#define autLen R3
#define H0 R4
#define pTblSave R5

#define mulRound(X) \
	VLD1.P	32(pTbl), [T1.B16, T2.B16] \
	VREV64	X.B16, X.B16               \
	VEXT	$8, X.B16, X.B16, T0.B16   \
	VEOR	X.B16, T0.B16, T0.B16      \
	VPMULL	X.D1, T1.D1, T3.Q1         \
	VEOR	T3.B16, ACC1.B16, ACC1.B16 \
	VPMULL2	X.D2, T1.D2, T3.Q1         \
	VEOR	T3.B16, ACC0.B16, ACC0.B16 \
	VPMULL	T0.D1, T2.D1, T3.Q1        \
	VEOR	T3.B16, ACCM.B16, ACCM.B16

	MOVD	productTable+0(FP), pTbl
	MOVD	data_base+8(FP), aut
	MOVD	data_len+16(FP), autLen
	MOVD	T+32(FP), tPtr

	VEOR	ACC0.B16, ACC0.B16, ACC0.B16
	CBZ	autLen, dataBail

	MOVD	$0xC2, H0
	LSL	$56, H0
	VMOV	H0, POLY.D[0]
	MOVD	$1, H0
	VMOV	H0, POLY.D[1]
	VEOR	ZERO.B16, ZERO.B16, ZERO.B16
	MOVD	pTbl, pTblSave

	CMP	$13, autLen
	BEQ	dataTLS
	CMP	$128, autLen
	BLT	startSinglesLoop
	B	octetsLoop

dataTLS:
	ADD	$14*16, pTbl
	VLD1.P	(pTbl), [T1.B16, T2.B16]
	VEOR	B0.B16, B0.B16, B0.B16

	MOVD	(aut), H0
	VMOV	H0, B0.D[0]
	MOVW	8(aut), H0
	VMOV	H0, B0.S[2]
	MOVB	12(aut), H0
	VMOV	H0, B0.B[12]

	MOVD	$0, autLen
	B	dataMul

octetsLoop:
		CMP	$128, autLen
		BLT	startSinglesLoop
		SUB	$128, autLen

		VLD1.P	32(aut), [B0.B16, B1.B16]

		VLD1.P	32(pTbl), [T1.B16, T2.B16]
		VREV64	B0.B16, B0.B16
		VEOR	ACC0.B16, B0.B16, B0.B16
		VEXT	$8, B0.B16, B0.B16, T0.B16
		VEOR	B0.B16, T0.B16, T0.B16
		VPMULL	B0.D1, T1.D1, ACC1.Q1
		VPMULL2	B0.D2, T1.D2, ACC0.Q1
		VPMULL	T0.D1, T2.D1, ACCM.Q1

		mulRound(B1)
		VLD1.P  32(aut), [B2.B16, B3.B16]
		mulRound(B2)
		mulRound(B3)
		VLD1.P  32(aut), [B4.B16, B5.B16]
		mulRound(B4)
		mulRound(B5)
		VLD1.P  32(aut), [B6.B16, B7.B16]
		mulRound(B6)
		mulRound(B7)

		MOVD	pTblSave, pTbl
		reduce()
	B	octetsLoop

startSinglesLoop:

	ADD	$14*16, pTbl
	VLD1.P	(pTbl), [T1.B16, T2.B16]

singlesLoop:

		CMP	$16, autLen
		BLT	dataEnd
		SUB	$16, autLen

		VLD1.P	16(aut), [B0.B16]
dataMul:
		VREV64	B0.B16, B0.B16
		VEOR	ACC0.B16, B0.B16, B0.B16

		VEXT	$8, B0.B16, B0.B16, T0.B16
		VEOR	B0.B16, T0.B16, T0.B16
		VPMULL	B0.D1, T1.D1, ACC1.Q1
		VPMULL2	B0.D2, T1.D2, ACC0.Q1
		VPMULL	T0.D1, T2.D1, ACCM.Q1

		reduce()

	B	singlesLoop

dataEnd:

	CBZ	autLen, dataBail
	VEOR	B0.B16, B0.B16, B0.B16
	ADD	autLen, aut

dataLoadLoop:
		MOVB.W	-1(aut), H0
		VEXT	$15, B0.B16, ZERO.B16, B0.B16
		VMOV	H0, B0.B[0]
		SUBS	$1, autLen
		BNE	dataLoadLoop
	B	dataMul

dataBail:
	VST1	[ACC0.B16], (tPtr)
	RET

#undef pTbl
#undef aut
#undef tPtr
#undef autLen
#undef H0
#undef pTblSave

// func gcmAesEnc(productTable *[256]byte, dst, src []byte, ctr, T *[16]byte, ks []uint32)
TEXT ·gcmAesEnc(SB),NOSPLIT,$0
#define pTbl R0
#define dstPtr R1
#define ctrPtr R2
#define srcPtr R3
#define ks R4
#define tPtr R5
#define srcPtrLen R6
#define aluCTR R7
#define aluTMP R8
#define aluK R9
#define NR R10
#define H0 R11
#define H1 R12
#define curK R13
#define pTblSave R14

#define aesrndx8(K) \
	AESE	K.B16, B0.B16    \
	AESMC	B0.B16, B0.B16   \
	AESE	K.B16, B1.B16    \
	AESMC	B1.B16, B1.B16   \
	AESE	K.B16, B2.B16    \
	AESMC	B2.B16, B2.B16   \
	AESE	K.B16, B3.B16    \
	AESMC	B3.B16, B3.B16   \
	AESE	K.B16, B4.B16    \
	AESMC	B4.B16, B4.B16   \
	AESE	K.B16, B5.B16    \
	AESMC	B5.B16, B5.B16   \
	AESE	K.B16, B6.B16    \
	AESMC	B6.B16, B6.B16   \
	AESE	K.B16, B7.B16    \
	AESMC	B7.B16, B7.B16

#define aesrndlastx8(K) \
	AESE	K.B16, B0.B16    \
	AESE	K.B16, B1.B16    \
	AESE	K.B16, B2.B16    \
	AESE	K.B16, B3.B16    \
	AESE	K.B16, B4.B16    \
	AESE	K.B16, B5.B16    \
	AESE	K.B16, B6.B16    \
	AESE	K.B16, B7.B16

	MOVD	productTable+0(FP), pTbl
	MOVD	dst+8(FP), dstPtr
	MOVD	src_base+32(FP), srcPtr
	MOVD	src_len+40(FP), srcPtrLen
	MOVD	ctr+56(FP), ctrPtr
	MOVD	T+64(FP), tPtr
	MOVD	ks_base+72(FP), ks
	MOVD	ks_len+80(FP), NR

	MOVD	$0xC2, H1
	LSL	$56, H1
	MOVD	$1, H0
	VMOV	H1, POLY.D[0]
	VMOV	H0, POLY.D[1]
	VEOR	ZERO.B16, ZERO.B16, ZERO.B16
	// Compute NR from len(ks)
	MOVD	pTbl, pTblSave
	// Current tag, after AAD
	VLD1	(tPtr), [ACC0.B16]
	VEOR	ACC1.B16, ACC1.B16, ACC1.B16
	VEOR	ACCM.B16, ACCM.B16, ACCM.B16
	// Prepare initial counter, and the increment vector
	VLD1	(ctrPtr), [CTR.B16]
	VEOR	INC.B16, INC.B16, INC.B16
	MOVD	$1, H0
	VMOV	H0, INC.S[3]
	VREV32	CTR.B16, CTR.B16
	VADD	CTR.S4, INC.S4, CTR.S4
	// Skip to <8 blocks loop
	CMP	$128, srcPtrLen

	MOVD	ks, H0
	// For AES-128 round keys are stored in: K0 .. K10, KLAST
	VLD1.P	64(H0), [K0.B16, K1.B16, K2.B16, K3.B16]
	VLD1.P	64(H0), [K4.B16, K5.B16, K6.B16, K7.B16]
	VLD1.P	48(H0), [K8.B16, K9.B16, K10.B16]
	VMOV	K10.B16, KLAST.B16

	BLT	startSingles
	// There are at least 8 blocks to encrypt
	TBZ	$4, NR, octetsLoop

	// For AES-192 round keys occupy: K0 .. K7, K10, K11, K8, K9, KLAST
	VMOV	K8.B16, K10.B16
	VMOV	K9.B16, K11.B16
	VMOV	KLAST.B16, K8.B16
	VLD1.P	16(H0), [K9.B16]
	VLD1.P  16(H0), [KLAST.B16]
	TBZ	$3, NR, octetsLoop
	// For AES-256 round keys occupy: K0 .. K7, K10, K11, mem, mem, K8, K9, KLAST
	VMOV	KLAST.B16, K8.B16
	VLD1.P	16(H0), [K9.B16]
	VLD1.P  16(H0), [KLAST.B16]
	ADD	$10*16, ks, H0
	MOVD	H0, curK

octetsLoop:
		SUB	$128, srcPtrLen

		VMOV	CTR.B16, B0.B16
		VADD	B0.S4, INC.S4, B1.S4
		VREV32	B0.B16, B0.B16
		VADD	B1.S4, INC.S4, B2.S4
		VREV32	B1.B16, B1.B16
		VADD	B2.S4, INC.S4, B3.S4
		VREV32	B2.B16, B2.B16
		VADD	B3.S4, INC.S4, B4.S4
		VREV32	B3.B16, B3.B16
		VADD	B4.S4, INC.S4, B5.S4
		VREV32	B4.B16, B4.B16
		VADD	B5.S4, INC.S4, B6.S4
		VREV32	B5.B16, B5.B16
		VADD	B6.S4, INC.S4, B7.S4
		VREV32	B6.B16, B6.B16
		VADD	B7.S4, INC.S4, CTR.S4
		VREV32	B7.B16, B7.B16

		aesrndx8(K0)
		aesrndx8(K1)
		aesrndx8(K2)
		aesrndx8(K3)
		aesrndx8(K4)
		aesrndx8(K5)
		aesrndx8(K6)
		aesrndx8(K7)
		TBZ	$4, NR, octetsFinish
		aesrndx8(K10)
		aesrndx8(K11)
		TBZ	$3, NR, octetsFinish
		VLD1.P	32(curK), [T1.B16, T2.B16]
		aesrndx8(T1)
		aesrndx8(T2)
		MOVD	H0, curK
octetsFinish:
		aesrndx8(K8)
		aesrndlastx8(K9)

		VEOR	KLAST.B16, B0.B16, B0.B16
		VEOR	KLAST.B16, B1.B16, B1.B16
		VEOR	KLAST.B16, B2.B16, B2.B16
		VEOR	KLAST.B16, B3.B16, B3.B16
		VEOR	KLAST.B16, B4.B16, B4.B16
		VEOR	KLAST.B16, B5.B16, B5.B16
		VEOR	KLAST.B16, B6.B16, B6.B16
		VEOR	KLAST.B16, B7.B16, B7.B16

		VLD1.P	32(srcPtr), [T1.B16, T2.B16]
		VEOR	B0.B16, T1.B16, B0.B16
		VEOR	B1.B16, T2.B16, B1.B16
		VST1.P  [B0.B16, B1.B16], 32(dstPtr)
		VLD1.P	32(srcPtr), [T1.B16, T2.B16]
		VEOR	B2.B16, T1.B16, B2.B16
		VEOR	B3.B16, T2.B16, B3.B16
		VST1.P  [B2.B16, B3.B16], 32(dstPtr)
		VLD1.P	32(srcPtr), [T1.B16, T2.B16]
		VEOR	B4.B16, T1.B16, B4.B16
		VEOR	B5.B16, T2.B16, B5.B16
		VST1.P  [B4.B16, B5.B16], 32(dstPtr)
		VLD1.P	32(srcPtr), [T1.B16, T2.B16]
		VEOR	B6.B16, T1.B16, B6.B16
		VEOR	B7.B16, T2.B16, B7.B16
		VST1.P  [B6.B16, B7.B16], 32(dstPtr)

		VLD1.P	32(pTbl), [T1.B16, T2.B16]
		VREV64	B0.B16, B0.B16
		VEOR	ACC0.B16, B0.B16, B0.B16
		VEXT	$8, B0.B16, B0.B16, T0.B16
		VEOR	B0.B16, T0.B16, T0.B16
		VPMULL	B0.D1, T1.D1, ACC1.Q1
		VPMULL2	B0.D2, T1.D2, ACC0.Q1
		VPMULL	T0.D1, T2.D1, ACCM.Q1

		mulRound(B1)
		mulRound(B2)
		mulRound(B3)
		mulRound(B4)
		mulRound(B5)
		mulRound(B6)
		mulRound(B7)
		MOVD	pTblSave, pTbl
		reduce()

		CMP	$128, srcPtrLen
		BGE	octetsLoop

startSingles:
	CBZ	srcPtrLen, done
	ADD	$14*16, pTbl
	// Preload H and its Karatsuba precomp
	VLD1.P	(pTbl), [T1.B16, T2.B16]
	// Preload AES round keys
	ADD	$128, ks
	VLD1.P	48(ks), [K8.B16, K9.B16, K10.B16]
	VMOV	K10.B16, KLAST.B16
	TBZ	$4, NR, singlesLoop
	VLD1.P	32(ks), [B1.B16, B2.B16]
	VMOV	B2.B16, KLAST.B16
	TBZ	$3, NR, singlesLoop
	VLD1.P	32(ks), [B3.B16, B4.B16]
	VMOV	B4.B16, KLAST.B16

singlesLoop:
		CMP	$16, srcPtrLen
		BLT	tail
		SUB	$16, srcPtrLen

		VLD1.P	16(srcPtr), [T0.B16]
		VEOR	KLAST.B16, T0.B16, T0.B16

		VREV32	CTR.B16, B0.B16
		VADD	CTR.S4, INC.S4, CTR.S4

		AESE	K0.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	K1.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	K2.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	K3.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	K4.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	K5.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	K6.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	K7.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	K8.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	K9.B16, B0.B16
		TBZ	$4, NR, singlesLast
		AESMC	B0.B16, B0.B16
		AESE	K10.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	B1.B16, B0.B16
		TBZ	$3, NR, singlesLast
		AESMC	B0.B16, B0.B16
		AESE	B2.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	B3.B16, B0.B16
singlesLast:
		VEOR	T0.B16, B0.B16, B0.B16
encReduce:
		VST1.P	[B0.B16], 16(dstPtr)

		VREV64	B0.B16, B0.B16
		VEOR	ACC0.B16, B0.B16, B0.B16

		VEXT	$8, B0.B16, B0.B16, T0.B16
		VEOR	B0.B16, T0.B16, T0.B16
		VPMULL	B0.D1, T1.D1, ACC1.Q1
		VPMULL2	B0.D2, T1.D2, ACC0.Q1
		VPMULL	T0.D1, T2.D1, ACCM.Q1

		reduce()

	B	singlesLoop
tail:
	CBZ	srcPtrLen, done

	VEOR	T0.B16, T0.B16, T0.B16
	VEOR	T3.B16, T3.B16, T3.B16
	MOVD	$0, H1
	SUB	$1, H1
	ADD	srcPtrLen, srcPtr

	TBZ	$3, srcPtrLen, ld4
	MOVD.W	-8(srcPtr), H0
	VMOV	H0, T0.D[0]
	VMOV	H1, T3.D[0]
ld4:
	TBZ	$2, srcPtrLen, ld2
	MOVW.W	-4(srcPtr), H0
	VEXT	$12, T0.B16, ZERO.B16, T0.B16
	VEXT	$12, T3.B16, ZERO.B16, T3.B16
	VMOV	H0, T0.S[0]
	VMOV	H1, T3.S[0]
ld2:
	TBZ	$1, srcPtrLen, ld1
	MOVH.W	-2(srcPtr), H0
	VEXT	$14, T0.B16, ZERO.B16, T0.B16
	VEXT	$14, T3.B16, ZERO.B16, T3.B16
	VMOV	H0, T0.H[0]
	VMOV	H1, T3.H[0]
ld1:
	TBZ	$0, srcPtrLen, ld0
	MOVB.W	-1(srcPtr), H0
	VEXT	$15, T0.B16, ZERO.B16, T0.B16
	VEXT	$15, T3.B16, ZERO.B16, T3.B16
	VMOV	H0, T0.B[0]
	VMOV	H1, T3.B[0]
ld0:

	MOVD	ZR, srcPtrLen
	VEOR	KLAST.B16, T0.B16, T0.B16
	VREV32	CTR.B16, B0.B16

	AESE	K0.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	K1.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	K2.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	K3.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	K4.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	K5.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	K6.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	K7.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	K8.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	K9.B16, B0.B16
	TBZ	$4, NR, tailLast
	AESMC	B0.B16, B0.B16
	AESE	K10.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	B1.B16, B0.B16
	TBZ	$3, NR, tailLast
	AESMC	B0.B16, B0.B16
	AESE	B2.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	B3.B16, B0.B16

tailLast:
	VEOR	T0.B16, B0.B16, B0.B16
	VAND	T3.B16, B0.B16, B0.B16
	B	encReduce

done:
	VST1	[ACC0.B16], (tPtr)
	RET

// func gcmAesDec(productTable *[256]byte, dst, src []byte, ctr, T *[16]byte, ks []uint32)
TEXT ·gcmAesDec(SB),NOSPLIT,$0
	MOVD	productTable+0(FP), pTbl
	MOVD	dst+8(FP), dstPtr
	MOVD	src_base+32(FP), srcPtr
	MOVD	src_len+40(FP), srcPtrLen
	MOVD	ctr+56(FP), ctrPtr
	MOVD	T+64(FP), tPtr
	MOVD	ks_base+72(FP), ks
	MOVD	ks_len+80(FP), NR

	MOVD	$0xC2, H1
	LSL	$56, H1
	MOVD	$1, H0
	VMOV	H1, POLY.D[0]
	VMOV	H0, POLY.D[1]
	VEOR	ZERO.B16, ZERO.B16, ZERO.B16
	// Compute NR from len(ks)
	MOVD	pTbl, pTblSave
	// Current tag, after AAD
	VLD1	(tPtr), [ACC0.B16]
	VEOR	ACC1.B16, ACC1.B16, ACC1.B16
	VEOR	ACCM.B16, ACCM.B16, ACCM.B16
	// Prepare initial counter, and the increment vector
	VLD1	(ctrPtr), [CTR.B16]
	VEOR	INC.B16, INC.B16, INC.B16
	MOVD	$1, H0
	VMOV	H0, INC.S[3]
	VREV32	CTR.B16, CTR.B16
	VADD	CTR.S4, INC.S4, CTR.S4

	MOVD	ks, H0
	// For AES-128 round keys are stored in: K0 .. K10, KLAST
	VLD1.P	64(H0), [K0.B16, K1.B16, K2.B16, K3.B16]
	VLD1.P	64(H0), [K4.B16, K5.B16, K6.B16, K7.B16]
	VLD1.P	48(H0), [K8.B16, K9.B16, K10.B16]
	VMOV	K10.B16, KLAST.B16

	// Skip to <8 blocks loop
	CMP	$128, srcPtrLen
	BLT	startSingles
	// There are at least 8 blocks to encrypt
	TBZ	$4, NR, octetsLoop

	// For AES-192 round keys occupy: K0 .. K7, K10, K11, K8, K9, KLAST
	VMOV	K8.B16, K10.B16
	VMOV	K9.B16, K11.B16
	VMOV	KLAST.B16, K8.B16
	VLD1.P	16(H0), [K9.B16]
	VLD1.P  16(H0), [KLAST.B16]
	TBZ	$3, NR, octetsLoop
	// For AES-256 round keys occupy: K0 .. K7, K10, K11, mem, mem, K8, K9, KLAST
	VMOV	KLAST.B16, K8.B16
	VLD1.P	16(H0), [K9.B16]
	VLD1.P  16(H0), [KLAST.B16]
	ADD	$10*16, ks, H0
	MOVD	H0, curK

octetsLoop:
		SUB	$128, srcPtrLen

		VMOV	CTR.B16, B0.B16
		VADD	B0.S4, INC.S4, B1.S4
		VREV32	B0.B16, B0.B16
		VADD	B1.S4, INC.S4, B2.S4
		VREV32	B1.B16, B1.B16
		VADD	B2.S4, INC.S4, B3.S4
		VREV32	B2.B16, B2.B16
		VADD	B3.S4, INC.S4, B4.S4
		VREV32	B3.B16, B3.B16
		VADD	B4.S4, INC.S4, B5.S4
		VREV32	B4.B16, B4.B16
		VADD	B5.S4, INC.S4, B6.S4
		VREV32	B5.B16, B5.B16
		VADD	B6.S4, INC.S4, B7.S4
		VREV32	B6.B16, B6.B16
		VADD	B7.S4, INC.S4, CTR.S4
		VREV32	B7.B16, B7.B16

		aesrndx8(K0)
		aesrndx8(K1)
		aesrndx8(K2)
		aesrndx8(K3)
		aesrndx8(K4)
		aesrndx8(K5)
		aesrndx8(K6)
		aesrndx8(K7)
		TBZ	$4, NR, octetsFinish
		aesrndx8(K10)
		aesrndx8(K11)
		TBZ	$3, NR, octetsFinish
		VLD1.P	32(curK), [T1.B16, T2.B16]
		aesrndx8(T1)
		aesrndx8(T2)
		MOVD	H0, curK
octetsFinish:
		aesrndx8(K8)
		aesrndlastx8(K9)

		VEOR	KLAST.B16, B0.B16, T1.B16
		VEOR	KLAST.B16, B1.B16, T2.B16
		VEOR	KLAST.B16, B2.B16, B2.B16
		VEOR	KLAST.B16, B3.B16, B3.B16
		VEOR	KLAST.B16, B4.B16, B4.B16
		VEOR	KLAST.B16, B5.B16, B5.B16
		VEOR	KLAST.B16, B6.B16, B6.B16
		VEOR	KLAST.B16, B7.B16, B7.B16

		VLD1.P	32(srcPtr), [B0.B16, B1.B16]
		VEOR	B0.B16, T1.B16, T1.B16
		VEOR	B1.B16, T2.B16, T2.B16
		VST1.P  [T1.B16, T2.B16], 32(dstPtr)

		VLD1.P	32(pTbl), [T1.B16, T2.B16]
		VREV64	B0.B16, B0.B16
		VEOR	ACC0.B16, B0.B16, B0.B16
		VEXT	$8, B0.B16, B0.B16, T0.B16
		VEOR	B0.B16, T0.B16, T0.B16
		VPMULL	B0.D1, T1.D1, ACC1.Q1
		VPMULL2	B0.D2, T1.D2, ACC0.Q1
		VPMULL	T0.D1, T2.D1, ACCM.Q1
		mulRound(B1)

		VLD1.P	32(srcPtr), [B0.B16, B1.B16]
		VEOR	B2.B16, B0.B16, T1.B16
		VEOR	B3.B16, B1.B16, T2.B16
		VST1.P  [T1.B16, T2.B16], 32(dstPtr)
		mulRound(B0)
		mulRound(B1)

		VLD1.P	32(srcPtr), [B0.B16, B1.B16]
		VEOR	B4.B16, B0.B16, T1.B16
		VEOR	B5.B16, B1.B16, T2.B16
		VST1.P  [T1.B16, T2.B16], 32(dstPtr)
		mulRound(B0)
		mulRound(B1)

		VLD1.P	32(srcPtr), [B0.B16, B1.B16]
		VEOR	B6.B16, B0.B16, T1.B16
		VEOR	B7.B16, B1.B16, T2.B16
		VST1.P  [T1.B16, T2.B16], 32(dstPtr)
		mulRound(B0)
		mulRound(B1)

		MOVD	pTblSave, pTbl
		reduce()

		CMP	$128, srcPtrLen
		BGE	octetsLoop

startSingles:
	CBZ	srcPtrLen, done
	ADD	$14*16, pTbl
	// Preload H and its Karatsuba precomp
	VLD1.P	(pTbl), [T1.B16, T2.B16]
	// Preload AES round keys
	ADD	$128, ks
	VLD1.P	48(ks), [K8.B16, K9.B16, K10.B16]
	VMOV	K10.B16, KLAST.B16
	TBZ	$4, NR, singlesLoop
	VLD1.P	32(ks), [B1.B16, B2.B16]
	VMOV	B2.B16, KLAST.B16
	TBZ	$3, NR, singlesLoop
	VLD1.P	32(ks), [B3.B16, B4.B16]
	VMOV	B4.B16, KLAST.B16

singlesLoop:
		CMP	$16, srcPtrLen
		BLT	tail
		SUB	$16, srcPtrLen

		VLD1.P	16(srcPtr), [T0.B16]
		VREV64	T0.B16, B5.B16
		VEOR	KLAST.B16, T0.B16, T0.B16

		VREV32	CTR.B16, B0.B16
		VADD	CTR.S4, INC.S4, CTR.S4

		AESE	K0.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	K1.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	K2.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	K3.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	K4.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	K5.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	K6.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	K7.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	K8.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	K9.B16, B0.B16
		TBZ	$4, NR, singlesLast
		AESMC	B0.B16, B0.B16
		AESE	K10.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	B1.B16, B0.B16
		TBZ	$3, NR, singlesLast
		AESMC	B0.B16, B0.B16
		AESE	B2.B16, B0.B16
		AESMC	B0.B16, B0.B16
		AESE	B3.B16, B0.B16
singlesLast:
		VEOR	T0.B16, B0.B16, B0.B16

		VST1.P	[B0.B16], 16(dstPtr)

		VEOR	ACC0.B16, B5.B16, B5.B16
		VEXT	$8, B5.B16, B5.B16, T0.B16
		VEOR	B5.B16, T0.B16, T0.B16
		VPMULL	B5.D1, T1.D1, ACC1.Q1
		VPMULL2	B5.D2, T1.D2, ACC0.Q1
		VPMULL	T0.D1, T2.D1, ACCM.Q1
		reduce()

	B	singlesLoop
tail:
	CBZ	srcPtrLen, done

	VREV32	CTR.B16, B0.B16
	VADD	CTR.S4, INC.S4, CTR.S4

	AESE	K0.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	K1.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	K2.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	K3.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	K4.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	K5.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	K6.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	K7.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	K8.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	K9.B16, B0.B16
	TBZ	$4, NR, tailLast
	AESMC	B0.B16, B0.B16
	AESE	K10.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	B1.B16, B0.B16
	TBZ	$3, NR, tailLast
	AESMC	B0.B16, B0.B16
	AESE	B2.B16, B0.B16
	AESMC	B0.B16, B0.B16
	AESE	B3.B16, B0.B16
tailLast:
	VEOR	KLAST.B16, B0.B16, B0.B16

	// Assuming it is safe to load past dstPtr due to the presence of the tag
	VLD1	(srcPtr), [B5.B16]

	VEOR	B5.B16, B0.B16, B0.B16

	VEOR	T3.B16, T3.B16, T3.B16
	MOVD	$0, H1
	SUB	$1, H1

	TBZ	$3, srcPtrLen, ld4
	VMOV	B0.D[0], H0
	MOVD.P	H0, 8(dstPtr)
	VMOV	H1, T3.D[0]
	VEXT	$8, ZERO.B16, B0.B16, B0.B16
ld4:
	TBZ	$2, srcPtrLen, ld2
	VMOV	B0.S[0], H0
	MOVW.P	H0, 4(dstPtr)
	VEXT	$12, T3.B16, ZERO.B16, T3.B16
	VMOV	H1, T3.S[0]
	VEXT	$4, ZERO.B16, B0.B16, B0.B16
ld2:
	TBZ	$1, srcPtrLen, ld1
	VMOV	B0.H[0], H0
	MOVH.P	H0, 2(dstPtr)
	VEXT	$14, T3.B16, ZERO.B16, T3.B16
	VMOV	H1, T3.H[0]
	VEXT	$2, ZERO.B16, B0.B16, B0.B16
ld1:
	TBZ	$0, srcPtrLen, ld0
	VMOV	B0.B[0], H0
	MOVB.P	H0, 1(dstPtr)
	VEXT	$15, T3.B16, ZERO.B16, T3.B16
	VMOV	H1, T3.B[0]
ld0:

	VAND	T3.B16, B5.B16, B5.B16
	VREV64	B5.B16, B5.B16

	VEOR	ACC0.B16, B5.B16, B5.B16
	VEXT	$8, B5.B16, B5.B16, T0.B16
	VEOR	B5.B16, T0.B16, T0.B16
	VPMULL	B5.D1, T1.D1, ACC1.Q1
	VPMULL2	B5.D2, T1.D2, ACC0.Q1
	VPMULL	T0.D1, T2.D1, ACCM.Q1
	reduce()
done:
	VST1	[ACC0.B16], (tPtr)

	RET
