#version 450 core
#extension GL_EXT_long_vector : enable
#extension GL_EXT_shader_explicit_arithmetic_types : enable

layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in;

void main()
{
    float f;
    vector<float, 5> f0, f1;
    uint32_t u;
    vector<uint32_t, 5> u0, u1;
    bool b;
    vector<bool, 5> b0, b1;

    f0 = f0 + f1;
    f0 = f0 - f1;
    f0 = f0 * f1;
    f0 = f0 / f1;
    f0 = f0 + f;
    f0 = f0 - f;
    f0 = f0 * f;
    f0 = f0 / f;
    f0 = -f0;

    f0 += f1;
    f0 -= f1;
    f0 *= f1;
    f0 /= f1;
    f0 += f;
    f0 -= f;
    f0 *= f;
    f0 /= f;

    u0 = u0 + u1;
    u0 = u0 - u1;
    u0 = u0 * u1;
    u0 = u0 / u1;
    u0 = u0 % u1;
    u0 = u0 & u1;
    u0 = u0 | u1;
    u0 = u0 ^ u1;
    u0 = u0 << u1;
    u0 = u0 >> u1;
    u0 = u0 + u;
    u0 = u0 - u;
    u0 = u0 * u;
    u0 = u0 / u;
    u0 = u0 % u;
    u0 = u0 & u;
    u0 = u0 | u;
    u0 = u0 ^ u;
    u0 = u0 << u;
    u0 = u0 >> u;

    u0 += u1;
    u0 -= u1;
    u0 *= u1;
    u0 /= u1;
    u0 %= u1;
    u0 &= u1;
    u0 |= u1;
    u0 ^= u1;
    u0 <<= u1;
    u0 >>= u1;
    u0 += u;
    u0 -= u;
    u0 *= u;
    u0 /= u;
    u0 %= u;
    u0 &= u;
    u0 ^= u;
    u0 |= u;
    u0 <<= u;
    u0 >>= u;

    u0++;
    u0--;
    ++u0;
    --u0;

    b0 = equal(b0, b1);
    b0 = notEqual(b0, b1);
    b = any(b0);
    b = all(b0);
    b0 = not(b0);

    f0 = b ? f0 : f1;
}

void foo()
{
    float f;
    vector<float, 1> f0, f1;
    uint32_t u;
    vector<uint32_t, 1> u0, u1;
    bool b;
    vector<bool, 1> b0, b1;

    f0 = f0 + f1;
    f0 = f0 - f1;
    f0 = f0 * f1;
    f0 = f0 / f1;
    f0 = f0 + f;
    f0 = f0 - f;
    f0 = f0 * f;
    f0 = f0 / f;
    f0 = -f0;

    f0 += f1;
    f0 -= f1;
    f0 *= f1;
    f0 /= f1;
    f0 += f;
    f0 -= f;
    f0 *= f;
    f0 /= f;

    u0 = u0 + u1;
    u0 = u0 - u1;
    u0 = u0 * u1;
    u0 = u0 / u1;
    u0 = u0 % u1;
    u0 = u0 & u1;
    u0 = u0 | u1;
    u0 = u0 ^ u1;
    u0 = u0 << u1;
    u0 = u0 >> u1;
    u0 = u0 + u;
    u0 = u0 - u;
    u0 = u0 * u;
    u0 = u0 / u;
    u0 = u0 % u;
    u0 = u0 & u;
    u0 = u0 | u;
    u0 = u0 ^ u;
    u0 = u0 << u;
    u0 = u0 >> u;

    u0 += u1;
    u0 -= u1;
    u0 *= u1;
    u0 /= u1;
    u0 %= u1;
    u0 &= u1;
    u0 |= u1;
    u0 ^= u1;
    u0 <<= u1;
    u0 >>= u1;
    u0 += u;
    u0 -= u;
    u0 *= u;
    u0 /= u;
    u0 %= u;
    u0 &= u;
    u0 ^= u;
    u0 |= u;
    u0 <<= u;
    u0 >>= u;

    u0++;
    u0--;
    ++u0;
    --u0;

    b0 = equal(b0, b1);
    b0 = notEqual(b0, b1);
    b = any(b0);
    b = all(b0);
    b0 = not(b0);

    f0 = b ? f0 : f1;
}
