Always increment by full popcount instead of two halves when splitting byte
This commit is contained in:
parent
2f6a8e55a1
commit
6df283c379
@ -264,21 +264,22 @@ fn slash{c, T & hasarch{'AVX2'} & (if (T==i32) use_table else T==i64)}(wp:*u64,
|
|||||||
{j} => { v:=i+VT~~j; i+=ii; v }
|
{j} => { v:=i+VT~~j; i+=ii; v }
|
||||||
}
|
}
|
||||||
def tab = if (tw==32) itab else i64tab
|
def tab = if (tw==32) itab else i64tab
|
||||||
def step{w} = {
|
def step{r, w} = {
|
||||||
pc := popc{w}
|
|
||||||
ind := load{tab, w}; def I = type{ind}
|
ind := load{tab, w}; def I = type{ind}
|
||||||
s := sel{[16]i8, V~~[width{V}/width{I}]I**ind, expander}
|
s := sel{[16]i8, V~~[width{V}/width{I}]I**ind, expander}
|
||||||
if (tw==64) s |= make{V, iota{8}%2}
|
if (tw==64) s |= make{V, iota{8}%2}
|
||||||
store{*V~~r, 0, from_ind{s}}
|
store{*V~~r, 0, from_ind{s}}
|
||||||
r+= pc
|
|
||||||
}
|
}
|
||||||
@for_special_buffered{r,8} (w in *u8~~wp to sum) {
|
@for_special_buffered{r,8} (w in *u8~~wp to sum) {
|
||||||
|
pc := popc{w}
|
||||||
if (tw==32) {
|
if (tw==32) {
|
||||||
step{w}
|
step{r,w}
|
||||||
} else {
|
} else {
|
||||||
step{w&0xf}
|
h := w&0xf
|
||||||
step{w>>4}
|
step{r, h}
|
||||||
|
step{r+popcRand{h}, w>>4}
|
||||||
}
|
}
|
||||||
|
r += pc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user