У меня есть вектор __m256d, упакованный с четырьмя 64-битными значениями с плавающей запятой.
Мне нужно найти горизонтальный максимум векторных элементов и сохранить результат в скалярном значении с двойной точностью;
Мои попытки все закончились тем, что много перетасовки векторных элементов, делая код не очень элегантным и эффективным. Кроме того, я не мог оставаться в домене AVX. В какой-то момент мне пришлось использовать SSE 128-битные инструкции для извлечения окончательного 64-битного значения. Тем не менее, я хотел бы, чтобы в этом последнем утверждении было ошибочно.
Итак, идеальное решение будет:
1) используйте только инструкции AVX.
2) свести к минимуму количество инструкций. (Я надеюсь, что не более 3-4 инструкций)
Сказав это, любое элегантное/эффективное решение будет принято, даже если оно не соответствует приведенным выше рекомендациям.
Спасибо за любую помощь.
-Luigi