mirror of
https://github.com/fumiama/unibase2n.git
synced 2026-06-12 13:10:23 +08:00
add asm dec128blk1
This commit is contained in:
35
decode.go
35
decode.go
@@ -51,41 +51,6 @@ func (bs Base) Decode(data []byte) (out []byte) {
|
||||
return
|
||||
}
|
||||
|
||||
// dec128blk1 for bit 1
|
||||
// len(in)>0, len(in)%16==0, len(out)==len(in)/16
|
||||
//go:nosplit
|
||||
func dec128blk1(mask uint128be, in, out []byte) {
|
||||
for i := range out {
|
||||
c := i * 16
|
||||
n := readuint128be(in[c : c+16])
|
||||
one := u128one
|
||||
n.subeq(mask)
|
||||
sum := n.and(one)
|
||||
n.shreq(16 - 1)
|
||||
one.shleq(1)
|
||||
sum.oreq(n.and(one))
|
||||
n.shreq(16 - 1)
|
||||
one.shleq(1)
|
||||
sum.oreq(n.and(one))
|
||||
n.shreq(16 - 1)
|
||||
one.shleq(1)
|
||||
sum.oreq(n.and(one))
|
||||
n.shreq(16 - 1)
|
||||
one.shleq(1)
|
||||
sum.oreq(n.and(one))
|
||||
n.shreq(16 - 1)
|
||||
one.shleq(1)
|
||||
sum.oreq(n.and(one))
|
||||
n.shreq(16 - 1)
|
||||
one.shleq(1)
|
||||
sum.oreq(n.and(one))
|
||||
n.shreq(16 - 1)
|
||||
one.shleq(1)
|
||||
sum.oreq(n.and(one))
|
||||
out[i] = uint8(sum.b)
|
||||
}
|
||||
}
|
||||
|
||||
// dec64blk2 for bit 2
|
||||
// len(in)>0, len(in)%8==0, len(out)==len(in)/8
|
||||
//go:nosplit
|
||||
|
||||
Reference in New Issue
Block a user