vulkan: optimize Q3_K by removing branches
This commit is contained in:
parent
055e4287f7
commit
5fa89da950
1 changed files with 2 additions and 4 deletions
|
@ -343,10 +343,8 @@ void main() {
|
||||||
const uint qsshift = halfsplit * 2; // 0,2,4,6
|
const uint qsshift = halfsplit * 2; // 0,2,4,6
|
||||||
const uint m = 1 << (4 * n + halfsplit); // 1,2,4,8,16,32,64,128
|
const uint m = 1 << (4 * n + halfsplit); // 1,2,4,8,16,32,64,128
|
||||||
|
|
||||||
const int8_t us = int8_t(is < 4 ? (data_a[ib].scales[is-0] & 0xF) | (((data_a[ib].scales[is+8] >> 0) & 3) << 4) :
|
const int8_t us = int8_t(((data_a[ib].scales[is % 8] >> (4 * int(is / 8))) & 0xF)
|
||||||
is < 8 ? (data_a[ib].scales[is-0] & 0xF) | (((data_a[ib].scales[is+4] >> 2) & 3) << 4) :
|
| (((data_a[ib].scales[8 + (is % 4)] >> (2 * int(is / 4))) & 3) << 4));
|
||||||
is < 12 ? (data_a[ib].scales[is-8] >> 4) | (((data_a[ib].scales[is+0] >> 4) & 3) << 4) :
|
|
||||||
(data_a[ib].scales[is-8] >> 4) | (((data_a[ib].scales[is-4] >> 6) & 3) << 4));
|
|
||||||
const float dl = float(data_a[ib].d) * float(us - 32);
|
const float dl = float(data_a[ib].d) * float(us - 32);
|
||||||
|
|
||||||
buf_a[buf_idx ] = FLOAT_TYPE(dl * float(int8_t((data_a[ib].qs[qsi ] >> qsshift) & 3) - (((data_a[ib].hmask[hmi ] & m) != 0) ? 0 : 4)));
|
buf_a[buf_idx ] = FLOAT_TYPE(dl * float(int8_t((data_a[ib].qs[qsi ] >> qsshift) & 3) - (((data_a[ib].hmask[hmi ] & m) != 0) ? 0 : 4)));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue