1cb93a386Sopenharmony_ciuniform half4 testInputs, colorGreen, colorRed;
2cb93a386Sopenharmony_ci
3cb93a386Sopenharmony_cihalf4 constant_swizzle() {
4cb93a386Sopenharmony_ci    half4 v = testInputs;
5cb93a386Sopenharmony_ci    half x = v[0];
6cb93a386Sopenharmony_ci    half y = v[1];
7cb93a386Sopenharmony_ci    half z = v[2];
8cb93a386Sopenharmony_ci    half w = v[3];
9cb93a386Sopenharmony_ci    return half4(x, y, z, w); // -1.25, 0, 0.75, 2.25
10cb93a386Sopenharmony_ci}
11cb93a386Sopenharmony_ci
12cb93a386Sopenharmony_cihalf4 foldable_index() {
13cb93a386Sopenharmony_ci    const int ZERO = 0, ONE = 1, TWO = 2, THREE = 3;
14cb93a386Sopenharmony_ci    half x = testInputs[ZERO];
15cb93a386Sopenharmony_ci    half y = testInputs[ONE];
16cb93a386Sopenharmony_ci    half z = testInputs[TWO];
17cb93a386Sopenharmony_ci    half w = testInputs[THREE];
18cb93a386Sopenharmony_ci    return half4(x, y, z, w); // -1.25, 0, 0.75, 2.25
19cb93a386Sopenharmony_ci}
20cb93a386Sopenharmony_ci
21cb93a386Sopenharmony_cihalf4 foldable() {
22cb93a386Sopenharmony_ci    half4 v = half4(0, 1, 2, 3);
23cb93a386Sopenharmony_ci    half x = v[0];
24cb93a386Sopenharmony_ci    half y = v[1];
25cb93a386Sopenharmony_ci    half z = v[2];
26cb93a386Sopenharmony_ci    half w = v[3];
27cb93a386Sopenharmony_ci    return half4(x, y, z, w); // 0, 1, 2, 3
28cb93a386Sopenharmony_ci}
29cb93a386Sopenharmony_ci
30cb93a386Sopenharmony_cihalf4 main(float2 coords) {
31cb93a386Sopenharmony_ci    half4 a = constant_swizzle();
32cb93a386Sopenharmony_ci    half4 b = foldable_index();
33cb93a386Sopenharmony_ci    half4 c = foldable();
34cb93a386Sopenharmony_ci
35cb93a386Sopenharmony_ci    return a == half4(-1.25, 0, 0.75, 2.25)   &&
36cb93a386Sopenharmony_ci           b == half4(-1.25, 0, 0.75, 2.25)   &&
37cb93a386Sopenharmony_ci           c == half4(0, 1, 2, 3)             ? colorGreen : colorRed;
38cb93a386Sopenharmony_ci}
39