1cb93a386Sopenharmony_ci/*#pragma settings SkVMDebugTrace*/
2cb93a386Sopenharmony_ci
3cb93a386Sopenharmony_ciuniform float u1[4];
4cb93a386Sopenharmony_cifloat index_by_literal() {
5cb93a386Sopenharmony_ci    return u1[0];
6cb93a386Sopenharmony_ci}
7cb93a386Sopenharmony_ci
8cb93a386Sopenharmony_ciuniform float u2[4];
9cb93a386Sopenharmony_cifloat index_by_loop() {
10cb93a386Sopenharmony_ci    float sum = 0;
11cb93a386Sopenharmony_ci    for (int i = 3; i >= 0; --i) {
12cb93a386Sopenharmony_ci        sum += u2[i];
13cb93a386Sopenharmony_ci    }
14cb93a386Sopenharmony_ci    return sum;
15cb93a386Sopenharmony_ci}
16cb93a386Sopenharmony_ci
17cb93a386Sopenharmony_ciuniform float u3[4];
18cb93a386Sopenharmony_cifloat index_by_complex_loop() {
19cb93a386Sopenharmony_ci    float prod = 1;
20cb93a386Sopenharmony_ci    for (int i = 0; i < 4; ++i) {
21cb93a386Sopenharmony_ci        prod *= u3[i < 2 ? 0 : i];
22cb93a386Sopenharmony_ci    }
23cb93a386Sopenharmony_ci    return prod;
24cb93a386Sopenharmony_ci}
25cb93a386Sopenharmony_ci
26cb93a386Sopenharmony_ciuniform float u4[16];
27cb93a386Sopenharmony_cifloat index_out_of_bounds_checked() {
28cb93a386Sopenharmony_ci    float sum = 0;
29cb93a386Sopenharmony_ci    for (float f = -2.3; f < 17.0; f += 3.7) {
30cb93a386Sopenharmony_ci        if (f > 0 && f < 16) {
31cb93a386Sopenharmony_ci            sum -= u4[int(f)];
32cb93a386Sopenharmony_ci        }
33cb93a386Sopenharmony_ci    }
34cb93a386Sopenharmony_ci    return sum;
35cb93a386Sopenharmony_ci}
36cb93a386Sopenharmony_ci
37cb93a386Sopenharmony_cifloat4 main(float2 xy) {
38cb93a386Sopenharmony_ci    return float4(
39cb93a386Sopenharmony_ci        index_by_literal(),
40cb93a386Sopenharmony_ci        index_by_loop(),
41cb93a386Sopenharmony_ci        index_by_complex_loop(),
42cb93a386Sopenharmony_ci        index_out_of_bounds_checked());
43cb93a386Sopenharmony_ci}
44