LINUX.ORG.RU

История изменений

Исправление 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;
}