"Векторные" операции на скалярах большего размера
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.11.22 03:26
Оценка:
Всем привет.
Возник несложный вопрос, но что-то я туплю с недосыпу.
Вот, допустим, у нас есть два байтовых массива, a и b.
И мы хотим вычислить, скажем, их сумму, c[i] = a[i] + b[i].
Допустим для простоты, что длина массива кратна 4 (или 8).
Это значит, что я могу его интерпретировать как массив int (или long).
И вот, собственно, вопрос — могу ли я ускорить сложение путём каких-то манипуляций с "длинными" числами? Что-то типа SIMD без SIMD инструкций.
Ну, то есть понятно, что если переполнения нет, то можно просто сложить два инта; байты int_c[i] == int_a[i] + int_b[i] как раз совпадут с нужными нам байтами.
Но если где-то будет переполнение, то оно "полезет" в соседние байты, а каждый из байтов должен переполняться самостоятельно.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.