1cb93a386Sopenharmony_ci/*#pragma settings NoInline*/
2cb93a386Sopenharmony_ci
3cb93a386Sopenharmony_ciuniform half4 colorGreen, colorRed;
4cb93a386Sopenharmony_ci
5cb93a386Sopenharmony_cihalf4 dead_fn(half4 a, half4 b) {
6cb93a386Sopenharmony_ci    return a * b;
7cb93a386Sopenharmony_ci}
8cb93a386Sopenharmony_ci
9cb93a386Sopenharmony_cihalf4 live_fn(half4 a, half4 b) {
10cb93a386Sopenharmony_ci    return a + b;
11cb93a386Sopenharmony_ci}
12cb93a386Sopenharmony_ci
13cb93a386Sopenharmony_cihalf4 main(float2 coords) {
14cb93a386Sopenharmony_ci    const bool TRUE = true, FALSE = false;
15cb93a386Sopenharmony_ci    half4 a, b;
16cb93a386Sopenharmony_ci
17cb93a386Sopenharmony_ci    @if (FALSE) {
18cb93a386Sopenharmony_ci        // Dead stripping a user function.
19cb93a386Sopenharmony_ci        half4 unused = dead_fn(half4(0.5), half4(2));
20cb93a386Sopenharmony_ci    } else {
21cb93a386Sopenharmony_ci        // A live user function.
22cb93a386Sopenharmony_ci        a = live_fn(half4(3), half4(-5));
23cb93a386Sopenharmony_ci    }
24cb93a386Sopenharmony_ci
25cb93a386Sopenharmony_ci    @if (TRUE) {
26cb93a386Sopenharmony_ci        // A live built-in function.
27cb93a386Sopenharmony_ci        b = unpremul(half4(1));
28cb93a386Sopenharmony_ci    } else {
29cb93a386Sopenharmony_ci        // Dead stripping a built-in function. (This is a separate overload of `unpremul`.)
30cb93a386Sopenharmony_ci        float4 unused = unpremul(float4(-1));
31cb93a386Sopenharmony_ci    }
32cb93a386Sopenharmony_ci
33cb93a386Sopenharmony_ci    return (a != half4(0) && b != half4(0)) ? colorGreen : colorRed;
34cb93a386Sopenharmony_ci}
35