Мне нужно добавить два ulong.
Первая половина (младшие 32 бита) каждого номера сохраняется в дорожках с четным идентификатором, а вторая половина (старшие 32 бита) сохраняется в соседней полосе (следующий нечетный идентификатор).
Таким образом, одна дорожка добавляет младшие 32 бита, а одна дорожка добавляет старшие 32 бита.
Проблема в том, что если у младшей 32-битной суммы есть флаг переноса, мне нужно добавить этот флаг к старшей 32-битной сумме.
Один из способов может быть таким (для a + = b):
v_add_co_u32 %[a], vcc, %[b], %[a]
v_addc_co_u32 %[carry], vcc, 0, 0, vcc
v_add_co_u32_dpp %[a], vcc, %[carry], %[a] quad_perm[1, 0, 3, 2]
Вторая строка нужна, потому что мне нужно перевести флаг переноса в число, чтобы я мог разделить его между строк, используя инструкцию dpp в строке 3.
Есть ли лучший способ сделать это? Заранее спасибо.