skia2/tests/sksl/shared/ShortCircuitBoolFolding.sksl

38 lines
1.3 KiB
Plaintext
Raw Normal View History

void main() {
bool expr1 = sk_FragCoord.x > 0;
bool expr2 = sk_FragCoord.y > 0;
if (true && expr1) { // -> if (expr1)
sk_FragColor.r = 1;
} else if (false && expr1) { // -> if (false) -> block removed
sk_FragColor.r = -2;
} else if (true ^^ expr1) { // -> if (!expr1)
sk_FragColor.r = 3;
} else if (false ^^ expr2) { // -> if (expr2)
sk_FragColor.r = 4;
} else if (false || expr2) { // -> if (expr2)
sk_FragColor.r = 5;
} else if (true || expr2) { // -> if (true) -> replaces unreachable else
sk_FragColor.r = 6;
} else { // removed
sk_FragColor.r = -7;
}
// Test short-circuiting of right hand side boolean literals
if (expr1 && true) { // -> if (expr1)
sk_FragColor.r = 1;
} else if (expr1 && false) { // -> if (false) -> block removed
sk_FragColor.r = -2;
} else if (expr1 ^^ true) { // -> if (!expr1)
sk_FragColor.r = 3;
} else if (expr2 ^^ false) { // -> if (expr2)
sk_FragColor.r = 4;
} else if (expr2 || false) { // -> if (expr2)
sk_FragColor.r = 5;
} else if (expr2 || true) { // -> if (true) -> replaces unreachable else
sk_FragColor.r = 6;
} else { // removed
sk_FragColor.r = -7;
}
}