xref: /aosp_15_r20/external/skia/resources/sksl/shared/LogicalAndShortCircuit.sksl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Workeruniform half4 colorGreen, colorRed;
2*c8dee2aaSAndroid Build Coastguard Worker
3*c8dee2aaSAndroid Build Coastguard Workerbool TrueTrue() {
4*c8dee2aaSAndroid Build Coastguard Worker    int x = 1, y = 1;
5*c8dee2aaSAndroid Build Coastguard Worker    if ((x == 1) && ((y += 1) == 2)) { // LHS true, RHS is executed and is true
6*c8dee2aaSAndroid Build Coastguard Worker        return (x == 1 && y == 2);
7*c8dee2aaSAndroid Build Coastguard Worker    } else {
8*c8dee2aaSAndroid Build Coastguard Worker        return false;
9*c8dee2aaSAndroid Build Coastguard Worker    }
10*c8dee2aaSAndroid Build Coastguard Worker}
11*c8dee2aaSAndroid Build Coastguard Worker
12*c8dee2aaSAndroid Build Coastguard Workerbool TrueFalse() {
13*c8dee2aaSAndroid Build Coastguard Worker    int x = 1, y = 1;
14*c8dee2aaSAndroid Build Coastguard Worker    if ((x == 1) && ((y += 1) == 3)) { // LHS true, RHS is executed and is false
15*c8dee2aaSAndroid Build Coastguard Worker        return false;
16*c8dee2aaSAndroid Build Coastguard Worker    } else {
17*c8dee2aaSAndroid Build Coastguard Worker        return (x == 1 && y == 2);
18*c8dee2aaSAndroid Build Coastguard Worker    }
19*c8dee2aaSAndroid Build Coastguard Worker}
20*c8dee2aaSAndroid Build Coastguard Worker
21*c8dee2aaSAndroid Build Coastguard Workerbool FalseTrue() {
22*c8dee2aaSAndroid Build Coastguard Worker    int x = 1, y = 1;
23*c8dee2aaSAndroid Build Coastguard Worker    if ((x == 2) && ((y += 1) == 2)) { // LHS false, RHS not executed but would be true
24*c8dee2aaSAndroid Build Coastguard Worker        return false;
25*c8dee2aaSAndroid Build Coastguard Worker    } else {
26*c8dee2aaSAndroid Build Coastguard Worker        return (x == 1 && y == 1);
27*c8dee2aaSAndroid Build Coastguard Worker    }
28*c8dee2aaSAndroid Build Coastguard Worker}
29*c8dee2aaSAndroid Build Coastguard Worker
30*c8dee2aaSAndroid Build Coastguard Workerbool FalseFalse() {
31*c8dee2aaSAndroid Build Coastguard Worker    int x = 1, y = 1;
32*c8dee2aaSAndroid Build Coastguard Worker    if ((x == 2) && ((y += 1) == 3)) { // LHS false, RHS not executed but would be false
33*c8dee2aaSAndroid Build Coastguard Worker        return false;
34*c8dee2aaSAndroid Build Coastguard Worker    } else {
35*c8dee2aaSAndroid Build Coastguard Worker        return (x == 1 && y == 1);
36*c8dee2aaSAndroid Build Coastguard Worker    }
37*c8dee2aaSAndroid Build Coastguard Worker}
38*c8dee2aaSAndroid Build Coastguard Worker
39*c8dee2aaSAndroid Build Coastguard Workerhalf4 main(float2) {
40*c8dee2aaSAndroid Build Coastguard Worker    return TrueTrue() && TrueFalse() && FalseTrue() && FalseFalse() ? colorGreen : colorRed;
41*c8dee2aaSAndroid Build Coastguard Worker}
42