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