LINUX.ORG.RU

История изменений

Исправление SZT, (текущая версия) :

https://github.com/nodeca/pica/tree/3.0/lib/mathlib/wasm

for (; filterSize > 0; filterSize--) {
        filterVal = filters[filterPtr++];
        rgba = src[srcPtr++];

        r += filterVal * R(rgba);
        g += filterVal * G(rgba);
        b += filterVal * B(rgba);
        a += filterVal * A(rgba);
};

Думаю что этот момент можно попробовать ускорить и без SSE, например разместить сразу два канала (R и B) в одной 64-битной переменной (двоичным сдвигом, например чтобы было 0x000000RR000000GG), и потом умножать на этот самый filterVal, после чего доставать результат умножения битовой маской и сдвигом

Исходная версия SZT, :

https://github.com/nodeca/pica/tree/3.0/lib/mathlib/wasm

for (; filterSize > 0; filterSize--) {
        filterVal = filters[filterPtr++];
        rgba = src[srcPtr++];

        r += filterVal * R(rgba);
        g += filterVal * G(rgba);
        b += filterVal * B(rgba);
        a += filterVal * A(rgba);
};

Думаю что этот момент можно попробовать ускорить и без SSE, например разместить сразу два канала (R и B) в одной 64-битной переменной (двоичным сдвигом, например чтобы было 0x000000RR000000GG), и потом умножать на этот самый filterVal, после чего доставать результат умножения битовой маской