1
0
mirror of https://github.com/fumiama/unibase2n.git synced 2026-06-19 09:50:26 +08:00

add asm dec128blk1

This commit is contained in:
源文雨
2022-10-03 17:14:10 +08:00
parent f084ae5128
commit d78949ac03
7 changed files with 136 additions and 35 deletions

39
decode_noasm.go Normal file
View File

@@ -0,0 +1,39 @@
//go:build !amd64
// +build !amd64
package unibase2n
// 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)
}
}