| uniform half4 colorRed, colorGreen; |
| uniform float unknownInput; |
| |
| bool test() { |
| half unknown = half(unknownInput); |
| |
| 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); |
| |
| 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); // this should NOT optimize away |
| ok = ok && (x == 0); |
| x += 1; |
| 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(float2 coords) { |
| return test() ? colorGreen : colorRed; |
| } |