1cb93a386Sopenharmony_ciuniform half4 colorGreen; 2cb93a386Sopenharmony_ci 3cb93a386Sopenharmony_ciinline void outParameterWrite(out half4 x) { 4cb93a386Sopenharmony_ci x = colorGreen; 5cb93a386Sopenharmony_ci} 6cb93a386Sopenharmony_ci 7cb93a386Sopenharmony_ciinline void outParameterWriteIndirect(out half4 c) { 8cb93a386Sopenharmony_ci outParameterWrite(c); 9cb93a386Sopenharmony_ci} 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ciinline void inoutParameterWrite(inout half4 x) { 12cb93a386Sopenharmony_ci x *= x; 13cb93a386Sopenharmony_ci} 14cb93a386Sopenharmony_ci 15cb93a386Sopenharmony_ciinline void inoutParameterWriteIndirect(inout half4 x) { 16cb93a386Sopenharmony_ci inoutParameterWrite(x); 17cb93a386Sopenharmony_ci} 18cb93a386Sopenharmony_ci 19cb93a386Sopenharmony_ciinline void inoutParameterRead(inout half4 x) { 20cb93a386Sopenharmony_ci half4 scratch = x * x; 21cb93a386Sopenharmony_ci} 22cb93a386Sopenharmony_ci 23cb93a386Sopenharmony_ciinline void inoutParameterIgnore(inout half4 x) { 24cb93a386Sopenharmony_ci half4 scratch = colorGreen * colorGreen; 25cb93a386Sopenharmony_ci} 26cb93a386Sopenharmony_ci 27cb93a386Sopenharmony_ciinline void outParameterIgnore(out half4 x) { 28cb93a386Sopenharmony_ci half4 scratch = colorGreen * colorGreen; 29cb93a386Sopenharmony_ci} 30cb93a386Sopenharmony_ci 31cb93a386Sopenharmony_ci// We don't inline functions that write to out parameters. (skia:11326) 32cb93a386Sopenharmony_cihalf4 main(float2 coords) { 33cb93a386Sopenharmony_ci half4 c; 34cb93a386Sopenharmony_ci 35cb93a386Sopenharmony_ci // These calls are ineligible for inlining, because they write to their `out` param. 36cb93a386Sopenharmony_ci outParameterWrite(c); 37cb93a386Sopenharmony_ci outParameterWriteIndirect(c); 38cb93a386Sopenharmony_ci inoutParameterWrite(c); 39cb93a386Sopenharmony_ci inoutParameterWriteIndirect(c); 40cb93a386Sopenharmony_ci 41cb93a386Sopenharmony_ci // These calls are eligible for inlining, because they don't write to their `out` param. 42cb93a386Sopenharmony_ci inoutParameterRead(c); 43cb93a386Sopenharmony_ci inoutParameterIgnore(c); 44cb93a386Sopenharmony_ci outParameterIgnore(c); 45cb93a386Sopenharmony_ci 46cb93a386Sopenharmony_ci return c; 47cb93a386Sopenharmony_ci} 48