mirror of
https://github.com/fumiama/unibase2n.git
synced 2026-06-05 00:32:47 +08:00
speedup
This commit is contained in:
@@ -4,5 +4,8 @@
|
||||
package unibase2n
|
||||
|
||||
// dec128blk1 for bit 1
|
||||
// len(in)>0, len(in)%16==0, len(out)==len(in)/16
|
||||
//
|
||||
// len(in)>0, len(in)%16==0, len(out)==len(in)/16
|
||||
//
|
||||
//go:noescape
|
||||
func dec128blk1(mask uint128be, in, out []byte)
|
||||
|
||||
@@ -4,17 +4,29 @@
|
||||
package unibase2n
|
||||
|
||||
// enc16blk1 for bit 1 (actual enc128blk1)
|
||||
// len(in)!=0, len(out)==len(in)*16
|
||||
//
|
||||
// len(in)!=0, len(out)==len(in)*16
|
||||
//
|
||||
//go:noescape
|
||||
func enc16blk1(mask uint16, in, out []byte)
|
||||
|
||||
// enc64blk2 for bit 2
|
||||
// len(in)!=0, len(out)==len(in)*8
|
||||
//
|
||||
// len(in)!=0, len(out)==len(in)*8
|
||||
//
|
||||
//go:noescape
|
||||
func enc64blk2(mask uint64, in, out []byte)
|
||||
|
||||
// enc32blk4 for bit 4
|
||||
// len(in)!=0, len(out)==len(in)*4
|
||||
//
|
||||
// len(in)!=0, len(out)==len(in)*4
|
||||
//
|
||||
//go:noescape
|
||||
func enc32blk4(mask uint32, in, out []byte)
|
||||
|
||||
// enc16blk8 for bit 8
|
||||
// len(in)!=0, len(out)==len(in)*2
|
||||
//
|
||||
// len(in)!=0, len(out)==len(in)*2
|
||||
//
|
||||
//go:noescape
|
||||
func enc16blk8(mask uint16, in, out []byte)
|
||||
|
||||
16
uint128be.go
16
uint128be.go
@@ -12,11 +12,6 @@ type uint128be struct {
|
||||
b uint64
|
||||
}
|
||||
|
||||
var (
|
||||
u128minusone = uint128be{0xffffffff_ffffffff, 0xffffffff_ffffffff}
|
||||
u128one = uint128be{0, 1}
|
||||
)
|
||||
|
||||
func readuint128be(b []byte) uint128be {
|
||||
if len(b) < 16 {
|
||||
b = append(b, make([]byte, 16-len(b))...)
|
||||
@@ -31,15 +26,15 @@ func (num *uint128be) addeq(n uint128be) {
|
||||
var c uint64
|
||||
num.b, c = bits.Add64(num.b, n.b, 0)
|
||||
num.a, _ = bits.Add64(num.a, n.a, c)
|
||||
return
|
||||
}
|
||||
|
||||
/*
|
||||
func (num *uint128be) subeq(n uint128be) {
|
||||
var b uint64
|
||||
num.b, b = bits.Sub64(num.b, n.b, 0)
|
||||
num.a, _ = bits.Sub64(num.a, n.a, b)
|
||||
return
|
||||
}
|
||||
}*/
|
||||
|
||||
func (num uint128be) sub(n uint128be) (r uint128be) {
|
||||
var b uint64
|
||||
@@ -64,10 +59,11 @@ func (num *uint128be) shleq(c uint8) {
|
||||
num.a = bout | (num.a << c)
|
||||
}
|
||||
|
||||
/*
|
||||
func (num *uint128be) andeq(n uint128be) {
|
||||
num.a &= n.a
|
||||
num.b &= n.b
|
||||
}
|
||||
}*/
|
||||
|
||||
func (num uint128be) and(n uint128be) (r uint128be) {
|
||||
r.a = num.a & n.a
|
||||
@@ -80,6 +76,7 @@ func (num *uint128be) oreq(n uint128be) {
|
||||
num.b |= n.b
|
||||
}
|
||||
|
||||
/*
|
||||
func (num uint128be) or(n uint128be) (r uint128be) {
|
||||
r.a = num.a | n.a
|
||||
r.b = num.b | n.b
|
||||
@@ -90,12 +87,11 @@ func (num uint128be) bswap() (r uint128be) {
|
||||
r.a = bits.ReverseBytes64(num.b)
|
||||
r.b = bits.ReverseBytes64(num.a)
|
||||
return
|
||||
}
|
||||
}*/
|
||||
|
||||
func (num *uint128be) write(b []byte) {
|
||||
binary.BigEndian.PutUint64(b[:8], num.a)
|
||||
binary.BigEndian.PutUint64(b[8:16], num.b)
|
||||
return
|
||||
}
|
||||
|
||||
func (num uint128be) String() string {
|
||||
|
||||
Reference in New Issue
Block a user