DataHoarder
d20dd880ce
All checks were successful
continuous-integration/drone/push Build is passing
94 lines
1.6 KiB
ArmAsm
94 lines
1.6 KiB
ArmAsm
//go:build amd64 && !purego
|
|
|
|
#include "textflag.h"
|
|
|
|
TEXT ·aesenc(SB),NOSPLIT|NOFRAME,$0-16
|
|
MOVQ state+0(FP), AX
|
|
MOVQ key+8(FP), BX
|
|
VMOVDQU32 0(AX), X0
|
|
VMOVDQU32 0(BX), X1
|
|
AESENC X1, X0
|
|
VMOVDQU32 X0, 0(AX)
|
|
RET
|
|
|
|
TEXT ·aesdec(SB),NOSPLIT|NOFRAME,$0-16
|
|
MOVQ state+0(FP), AX
|
|
MOVQ key+8(FP), BX
|
|
VMOVDQU32 0(AX), X0
|
|
VMOVDQU32 0(BX), X1
|
|
AESDEC X1, X0
|
|
VMOVDQU32 X0, 0(AX)
|
|
RET
|
|
|
|
TEXT ·aesroundtrip_decenc(SB),NOSPLIT|NOFRAME,$0-16
|
|
MOVQ states+0(FP), AX
|
|
MOVQ keys+8(FP), BX
|
|
|
|
VMOVDQU32 0(AX), X0
|
|
VMOVDQU32 0(BX), X1
|
|
VMOVDQU32 16(AX), X2
|
|
VMOVDQU32 16(BX), X3
|
|
VMOVDQU32 32(AX), X4
|
|
VMOVDQU32 32(BX), X5
|
|
VMOVDQU32 48(AX), X6
|
|
VMOVDQU32 48(BX), X7
|
|
|
|
AESDEC X1, X0
|
|
AESENC X3, X2
|
|
AESDEC X5, X4
|
|
AESENC X7, X6
|
|
|
|
VMOVDQU32 X0, 0(AX)
|
|
VMOVDQU32 X2, 16(AX)
|
|
VMOVDQU32 X4, 32(AX)
|
|
VMOVDQU32 X6, 48(AX)
|
|
RET
|
|
|
|
|
|
TEXT ·aesroundtrip_encdec(SB),NOSPLIT|NOFRAME,$0-16
|
|
MOVQ states+0(FP), AX
|
|
MOVQ keys+8(FP), BX
|
|
|
|
VMOVDQU32 0(AX), X0
|
|
VMOVDQU32 0(BX), X1
|
|
VMOVDQU32 16(AX), X2
|
|
VMOVDQU32 16(BX), X3
|
|
VMOVDQU32 32(AX), X4
|
|
VMOVDQU32 32(BX), X5
|
|
VMOVDQU32 48(AX), X6
|
|
VMOVDQU32 48(BX), X7
|
|
|
|
AESENC X1, X0
|
|
AESDEC X3, X2
|
|
AESENC X5, X4
|
|
AESDEC X7, X6
|
|
|
|
VMOVDQU32 X0, 0(AX)
|
|
VMOVDQU32 X2, 16(AX)
|
|
VMOVDQU32 X4, 32(AX)
|
|
VMOVDQU32 X6, 48(AX)
|
|
RET
|
|
|
|
|
|
TEXT ·aesroundtrip_encdec1(SB),NOSPLIT|NOFRAME,$0-16
|
|
MOVQ states+0(FP), AX
|
|
MOVQ key+8(FP), BX
|
|
|
|
VMOVDQU32 0(BX), X0
|
|
VMOVDQU32 0(AX), X1
|
|
VMOVDQU32 16(AX), X2
|
|
VMOVDQU32 32(AX), X3
|
|
VMOVDQU32 48(AX), X4
|
|
|
|
AESENC X0, X1
|
|
AESDEC X0, X2
|
|
AESENC X0, X3
|
|
AESDEC X0, X4
|
|
|
|
VMOVDQU32 X1, 0(AX)
|
|
VMOVDQU32 X2, 16(AX)
|
|
VMOVDQU32 X3, 32(AX)
|
|
VMOVDQU32 X4, 48(AX)
|
|
RET
|
|
|