История изменений
Исправление shdown, (текущая версия) :
Ну а есть код, который собирается только GCC:
#include <stdint.h>
typedef uint32_t Quad __attribute__((vector_size(4 * sizeof(uint32_t))));
Quad add_saturate(Quad v, uint32_t s)
{
for (int i = 0; i < 4; ++i) {
if (__builtin_add_overflow(v[i], s, &v[i])) {
v[i] = -1;
}
}
return v;
}
P.S. Кстати хорошо оптимизируется с -O3 -march=native. Хотя казалось бы, майнфак какой-то.
Исходная версия shdown, :
Ну а есть код, который собирается только GCC:
#include <stdint.h>
typedef uint32_t Quad __attribute__((vector_size(4 * sizeof(uint32_t))));
Quad add_saturate(Quad v, uint32_t s)
{
for (int i = 0; i < 4; ++i) {
if (__builtin_add_overflow(v[i], s, &v[i])) {
v[i] = -1;
}
}
return v;
}