28 lines
726 B
ArmAsm
28 lines
726 B
ArmAsm
// Legacy SSE octa moves against static (SB) symbols: the load and store
|
|
// shapes GOROOT's AES-CTR, AES-GCM and P-256 kernels spell (MOVOU
|
|
// bswapMask<>+0(SB), X0 and the reverse), including offsets into the symbol
|
|
// and the aligned MOVO pair. Every result is folded back so no instruction
|
|
// is dead.
|
|
|
|
#include "textflag.h"
|
|
|
|
// func ssestatic() uint64
|
|
TEXT ·ssestatic(SB), NOSPLIT, $0-8
|
|
MOVOU bswapMask<>+0(SB), X0
|
|
MOVOU bswapMask<>+8(SB), X1
|
|
MOVO rodataMask<>+0(SB), X2
|
|
PXOR X1, X0
|
|
PXOR X2, X0
|
|
MOVOU X0, sink<>+0(SB)
|
|
MOVOU sink<>+0(SB), X3
|
|
PXOR X3, X0
|
|
MOVQ X0, AX
|
|
MOVQ AX, ret+0(FP)
|
|
RET
|
|
|
|
GLOBL bswapMask<>(SB), RODATA|NOPTR, $16
|
|
|
|
GLOBL rodataMask<>(SB), RODATA|NOPTR, $16
|
|
|
|
GLOBL sink<>(SB), NOPTR, $16
|