go-randomx/asm/aes_amd64.s
DataHoarder d20dd880ce
All checks were successful
continuous-integration/drone/push Build is passing
amd64: Implemented VM JIT
2024-04-20 19:53:47 +02:00

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