После 5 минут размышлений у меня появилась эта идея (псевдо-арм-асм):
sadd16 sum, s16, u8 @ do two additions in parallel
orr signs, 0x1001, sum, lsr #15 @ extract signs of the two 16 bit results
usat16 sum, sum, #8 @ saturate both of the 16-bit sums to unsigned 8-byte range
uadd16 sum, sum, signs
таким образом, если для какой-либо из сумм был установлен знаковый бит, полученная сумма станет 256 или 0x100. При записи данных смещенный 0x1 будет отброшен.
Любые комментарии, кажется ли это оптимальным подходом, есть ли лучшая альтернатива?
PS. Я делаю это для устройства armv6, не NEON или armv6t2