• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1uniform half4 colorRed, colorGreen;
2
3bool test() {
4    bool ok = true;
5    half x = 32.0 + 2.0;
6    ok = ok && (x == 34);
7    x = 32.0 - 2.0;
8    ok = ok && (x == 30);
9    x = 32.0 * 2.0;
10    ok = ok && (x == 64);
11    x = 32.0 / 2.0;
12    ok = ok && (x == 16);
13    x = (12 > 2.0) ? (10 * 2 / 5 + 18 - 3) : 0;
14    ok = ok && (x == 19);
15    x = 0.0 == 0.0 ? 1 : -1;
16    ok = ok && (x == 1);
17    x = 0.0 == 1.0 ? 2 : -2;
18    ok = ok && (x == -2);
19    x = 0.0 != 1.0 ? 3 : -3;
20    ok = ok && (x == 3);
21    x = 0.0 != 0.0 ? 4 : -4;
22    ok = ok && (x == -4);
23    x = 6.0 > 5.0 ? 5 : -5;
24    ok = ok && (x == 5);
25    x = 6.0 > 6.0 ? 6 : -6;
26    ok = ok && (x == -6);
27    x = 6.0 >= 6.0 ? 7 : -7;
28    ok = ok && (x == 7);
29    x = 6.0 >= 7.0 ? 8 : -8;
30    ok = ok && (x == -8);
31    x = 5.0 < 6.0 ? 9 : -9;
32    ok = ok && (x == 9);
33    x = 6.0 < 6.0 ? 10 : -10;
34    ok = ok && (x == -10);
35    x = 6.0 <= 6.0 ? 11 : -11;
36    ok = ok && (x == 11);
37    x = 6.0 <= 5.0 ? 12 : -12;
38    ok = ok && (x == -12);
39
40    half unknown = half(sqrt(4));
41    x = half(unknown + 0);
42    ok = ok && (x == unknown);
43    x = half(0 + unknown);
44    ok = ok && (x == unknown);
45    x = half(unknown - 0);
46    ok = ok && (x == unknown);
47    x = half(unknown * 0);
48    ok = ok && (x == 0);
49    x = half(unknown * 1);
50    ok = ok && (x == unknown);
51    x = half(1 * unknown);
52    ok = ok && (x == unknown);
53    x = half(0 * unknown);
54    ok = ok && (x == 0);
55    x = half(unknown / 1);
56    ok = ok && (x == unknown);
57    x = half(0 / unknown);
58    ok = ok && (x == 0);
59    x += 1;                 // TODO(skia:11192): constant propagation for `+=` style operators
60    ok = ok && (x == 1);
61    x += 0;
62    ok = ok && (x == 1);
63    x -= 2;
64    ok = ok && (x == -1);
65    x -= 0;
66    ok = ok && (x == -1);
67    x *= 1;
68    ok = ok && (x == -1);
69    x *= 2;
70    ok = ok && (x == -2);
71    x /= 1;
72    ok = ok && (x == -2);
73    x /= 2;
74    ok = ok && (x == -1);
75    return ok;
76}
77
78half4 main(float2 coords) {
79    return test() ? colorGreen : colorRed;
80}
81