Если вы пытаетесь получить доступ к инструкциям SIMD, я не верю, что есть подход, который будет делать оба одновременно. Если вы не пытаетесь использовать SIMD, просто сохраните временный массив из трех наименьших значений (например, очереди приоритетов), который обновляется каждый раз, когда в матрице вычисляется сумма.
Если бы это был C ++, очередь с приоритетами могла бы храниться в объекте функтора, используемом алгоритмами STL.