xref: /aosp_15_r20/external/skia/resources/sksl/shared/TernaryTrueFalseOptimization.sksl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1uniform half4 colorGreen, colorRed;
2
3half4 main(float2 coords) {
4    const bool TRUE = true;
5    const bool FALSE = false;
6
7    bool ok = true;
8
9    // Literal test
10    ok = ok && (true ? true : false);
11    ok = ok && (false ? false : true);
12
13    // Constant boolean test
14    ok = ok && (TRUE ? true : false);
15    ok = ok && (FALSE ? false : true);
16
17    // Constant-foldable test
18    ok = ok && (1 == 1 ? true : false);
19    ok = ok && (0 == 1 ? false : true);
20
21    // Unknown-value test
22    ok = ok && (colorGreen.g == 1 ? true : false);
23    ok = ok && (colorGreen.r == 1 ? false : true);
24
25    // Composite comparison test.
26    ok = ok && (colorGreen.gr == colorRed.rg ? true : false);
27    ok = ok && (colorGreen.gr != colorRed.rg ? false : true);
28
29    // Test simplification of ternaries to logical-and/logical-or.
30    ok = ok && (colorGreen.gr == colorRed.rg ? true : (colorGreen.a != colorRed.a));
31    ok = ok && (colorGreen.gr != colorRed.rg ? (colorGreen.a == colorRed.a) : false);
32
33    return ok ? colorGreen : colorRed;
34}
35