mirror of
https://github.com/fumiama/unibase2n.git
synced 2026-06-05 00:32:47 +08:00
40 lines
740 B
Go
40 lines
740 B
Go
//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)
|
|
}
|
|
}
|