uniform half4 colorRed, colorGreen;

bool test() {
    bool ok = true;
    half x = 32.0 + 2.0;
    ok = ok && (x == 34);
    x = 32.0 - 2.0;
    ok = ok && (x == 30);
    x = 32.0 * 2.0;
    ok = ok && (x == 64);
    x = 32.0 / 2.0;
    ok = ok && (x == 16);
    x = (12 > 2.0) ? (10 * 2 / 5 + 18 - 3) : 0;
    ok = ok && (x == 19);
    x = 0.0 == 0.0 ? 1 : -1;
    ok = ok && (x == 1);
    x = 0.0 == 1.0 ? 2 : -2;
    ok = ok && (x == -2);
    x = 0.0 != 1.0 ? 3 : -3;
    ok = ok && (x == 3);
    x = 0.0 != 0.0 ? 4 : -4;
    ok = ok && (x == -4);
    x = 6.0 > 5.0 ? 5 : -5;
    ok = ok && (x == 5);
    x = 6.0 > 6.0 ? 6 : -6;
    ok = ok && (x == -6);
    x = 6.0 >= 6.0 ? 7 : -7;
    ok = ok && (x == 7);
    x = 6.0 >= 7.0 ? 8 : -8;
    ok = ok && (x == -8);
    x = 5.0 < 6.0 ? 9 : -9;
    ok = ok && (x == 9);
    x = 6.0 < 6.0 ? 10 : -10;
    ok = ok && (x == -10);
    x = 6.0 <= 6.0 ? 11 : -11;
    ok = ok && (x == 11);
    x = 6.0 <= 5.0 ? 12 : -12;
    ok = ok && (x == -12);

    half unknown = half(sqrt(4));
    x = half(unknown + 0);
    ok = ok && (x == unknown);
    x = half(0 + unknown);
    ok = ok && (x == unknown);
    x = half(unknown - 0);
    ok = ok && (x == unknown);
    x = half(unknown * 0);
    ok = ok && (x == 0);
    x = half(unknown * 1);
    ok = ok && (x == unknown);
    x = half(1 * unknown);
    ok = ok && (x == unknown);
    x = half(0 * unknown);
    ok = ok && (x == 0);
    x = half(unknown / 1);
    ok = ok && (x == unknown);
    x = half(0 / unknown);
    ok = ok && (x == 0);
    x += 1;                 // TODO(skia:11192): constant propagation for `+=` style operators
    ok = ok && (x == 1);
    x += 0;
    ok = ok && (x == 1);
    x -= 2;
    ok = ok && (x == -1);
    x -= 0;
    ok = ok && (x == -1);
    x *= 1;
    ok = ok && (x == -1);
    x *= 2;
    ok = ok && (x == -2);
    x /= 1;
    ok = ok && (x == -2);
    x /= 2;
    ok = ok && (x == -1);
    return ok;
}

half4 main() {
    return test() ? colorGreen : colorRed;
}
