go-randomx/superscalar_jit_amd64.s
2024-05-02 12:06:38 +02:00

43 lines
736 B
ArmAsm

//go:build unix && amd64 && !disable_jit && !purego
#include "textflag.h"
TEXT ·superscalar_run(SB),$0-16
MOVQ rf+0(FP), SI
PREFETCHNTA 0(SI)
// move register line to registers
MOVQ 0(SI), R8
MOVQ 8(SI), R9
MOVQ 16(SI), R10
MOVQ 24(SI), R11
MOVQ 32(SI), R12
MOVQ 40(SI), R13
MOVQ 48(SI), R14
MOVQ 56(SI), R15
MOVQ jmp+8(FP), AX
// jump to JIT code
CALL AX
// prefetchw BYTE PTR [rsi]
// PREFETCHW 0(SI)
BYTE $0x0F
BYTE $0x0D
BYTE $0x0E
// move registers back to register line
MOVQ R8, 0(SI)
MOVQ R9, 8(SI)
MOVQ R10, 16(SI)
MOVQ R11, 24(SI)
MOVQ R12, 32(SI)
MOVQ R13, 40(SI)
MOVQ R14, 48(SI)
MOVQ R15, 56(SI)
RET