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