1
0
mirror of https://github.com/fumiama/go-base16384.git synced 2026-06-05 00:32:52 +08:00
Files
go-base16384/base14_asm.go
2022-08-22 13:11:31 +08:00

39 lines
726 B
Go

//go:build amd64
// +build amd64
package base14
import (
"encoding/binary"
)
//go:noescape
//go:nosplit
func _encode(offset, outlen int, b, encd []byte) (sum uint64, n uint64)
//go:noescape
//go:nosplit
func _decode(offset, outlen int, b, decd []byte)
func encode(offset, outlen int, b, encd []byte) {
if len(b) == 7 {
b = append(b, 0)
}
sum, n := _encode(offset, outlen, b, encd)
if offset == 0 {
return
}
var tmp [8]byte
binary.LittleEndian.PutUint64(tmp[:], sum)
copy(encd[n:], tmp[:])
encd[outlen-2] = '='
encd[outlen-1] = byte(offset)
}
func decode(offset, outlen int, b, decd []byte) {
if offset != 0 && cap(b) == len(b) {
b = append(b, make([]byte, 8)...)
}
_decode(offset, outlen, b, decd)
}