Я только что узнал, глядя на некоторый код, который написал несколько месяцев назад, что у меня было умножение и сложение с использованием смешанных типов, таких как:
__m128 = float + __m128 * (__m128 - float)
Однако ни GCC8, ни LLVM6 никогда не жаловались ивывод выглядел, как и ожидалось.
Замена числа с плавающей точкой на то, что должно идти туда (_mm_set1_ps(float)
), кажется, медленнее вычислять (в цикле, где число с плавающей запятой устанавливается на каждой итерации).
Что там происходит ?Первая версия безопасна (портативна / совместима)?(Этот код был в производстве в течение нескольких месяцев, никто не жаловался).