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