mirror of
https://github.com/fumiama/unibase2n.git
synced 2026-06-13 05:30:24 +08:00
add asm dec128blk1
This commit is contained in:
56
decode_amd64.s
Normal file
56
decode_amd64.s
Normal file
@@ -0,0 +1,56 @@
|
||||
//go:build amd64
|
||||
// +build amd64
|
||||
|
||||
#include "textflag.h"
|
||||
|
||||
// dec128blk1(mask uint128be, in, out []byte)
|
||||
// len(in)>0, len(in)%16==0, len(out)==len(in)/16
|
||||
TEXT ·dec128blk1(SB), NOSPLIT, $0-64
|
||||
MOVQ ·mask+0(FP), DX
|
||||
BSWAPQ DX
|
||||
MOVQ ·in+16(FP), SI
|
||||
MOVQ ·in+24(FP), CX
|
||||
SHRQ $4, CX
|
||||
MOVQ ·in+40(FP), DI
|
||||
// go forward
|
||||
CLD
|
||||
lop:
|
||||
LODSQ
|
||||
BSWAPQ AX
|
||||
SUBQ DX, AX
|
||||
MOVQ AX, BX
|
||||
ANDB $1, AX
|
||||
RORQ $1, AX
|
||||
SHRQ $17, BX
|
||||
SETCS AX
|
||||
RORQ $1, AX
|
||||
SHRQ $16, BX
|
||||
SETCS AX
|
||||
RORQ $1, AX
|
||||
SHRQ $16, BX
|
||||
SETCS AX
|
||||
|
||||
ROLQ $7, AX
|
||||
MOVQ AX, R8
|
||||
|
||||
LODSQ
|
||||
BSWAPQ AX
|
||||
SUBQ DX, AX
|
||||
MOVQ AX, BX
|
||||
ANDB $1, AX
|
||||
RORQ $1, AX
|
||||
SHRQ $17, BX
|
||||
SETCS AX
|
||||
RORQ $1, AX
|
||||
SHRQ $16, BX
|
||||
SETCS AX
|
||||
RORQ $1, AX
|
||||
SHRQ $16, BX
|
||||
SETCS AX
|
||||
|
||||
ROLQ $3, AX
|
||||
ORQ R8, AX
|
||||
|
||||
STOSB
|
||||
LOOP lop
|
||||
RET
|
||||
Reference in New Issue
Block a user