Допустим, у меня есть четыре упакованных целых.
__m128i val = _mm_set_epi32(42,64,123,456);
Какой самый быстрый способ перевернуть знак (умножить на -1) из четырех целых чисел в val?
Вы можете вычесть ваши фактические значения из набора {0,0,0,0}
[это, вероятно, самый быстрый], вы можете XOR с {-1, -1, -1, -1} «все единицы», а затем добавить {1,1,1,1}. Или вы можете умножить на -1.
Просто вычтите из 0, например
val = _mm_sub_epi32(_mm_set1_epi32(0), val);