верхнюю функцию скомпилил без флага - 6800мс потом обе с флагом, верхняя столько же в пределах погрешности, а нижняя 6100. Но это вряд ли из-за симда, а скорее из-за лучшего порядка доступа к памяти(циклы в другом порядке)
А еще у меня очень интересный вопрос возник: в васме вектор создается из 4х любых значений, в то время когда в том же интел, насколько я знаю, данные должны располагаться последовательно в памяти для успешной векторизации и их итрисики принимают указатель на первый элемент в памяти. Ну и вот инетересно, насколько эффективно васм использует симд команды процессора
А right, left и res у тебя точно выровнены по границе 16-байт в памяти? В смысле пользуешься ли ты _aligned_malloc и _aligned_free или обычными malloc / new