2

请参阅这个简单的最小搜索(Godbolt):

float foo(const float *data, int n) {
    float v = data[0];
    for (int i = 1; i < n; i++) {
        float d = data[i];
        if (d < v) {
            v = d;
        }
    }
    return v;
}

gcc 和 clang 都不会使用-O3. 如果我使用-ffinite-math-only,仍然不会发生自动矢量化。我需要使用-ffinite-math-only-fno-signed-zeros编译器自动向量化代码。为什么-fno-signed-zeros需要自动矢量化?

4

0 回答 0