xref: /aosp_15_r20/external/skia/tests/sksl/shared/ForLoopMultipleInitES3.wgsl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1diagnostic(off, derivative_uniformity);
2diagnostic(off, chromium.unreachable_code);
3struct FSOut {
4  @location(0) sk_FragColor: vec4<f32>,
5};
6struct _GlobalUniforms {
7  colorGreen: vec4<f32>,
8  colorRed: vec4<f32>,
9};
10@binding(0) @group(0) var<uniform> _globalUniforms: _GlobalUniforms;
11fn _skslMain(coords: vec2<f32>) -> vec4<f32> {
12  {
13    var sumA: f32 = 0.0;
14    var sumB: f32 = 0.0;
15    {
16      var a: f32 = 0.0;
17      var b: f32 = 10.0;
18      loop {
19        if (a < 10.0) && (b > 0.0) {
20          {
21            sumA = sumA + a;
22            sumB = sumB + b;
23          }
24        } else {
25          break;
26        }
27        continuing {
28          a = a + f32(1);
29          b = b - f32(1);
30        }
31      }
32    }
33    if (sumA != 45.0) || (sumB != 55.0) {
34      {
35        return _globalUniforms.colorRed;
36      }
37    }
38    var sumC: i32 = 0;
39    {
40      var c: i32 = 0;
41      loop {
42        if c < 10 {
43          {
44            sumC = sumC + c;
45          }
46        } else {
47          break;
48        }
49        continuing {
50          c = c + i32(1);
51        }
52      }
53    }
54    if sumC != 45 {
55      {
56        return _globalUniforms.colorRed;
57      }
58    }
59    var sumE: f32 = 0.0;
60    {
61      var d: array<f32, 2> = array<f32, 2>(0.0, 10.0);
62      const e: array<f32, 4> = array<f32, 4>(1.0, 2.0, 3.0, 4.0);
63      loop {
64        if d[0] < d[1] {
65          {
66            sumE = sumE + f32(f32(e[0]));
67          }
68        } else {
69          break;
70        }
71        continuing {
72          d[0] = d[0] + f32(1);
73        }
74      }
75    }
76    if sumE != 10.0 {
77      {
78        return _globalUniforms.colorRed;
79      }
80    }
81    {
82      loop {
83        break;
84      }
85    }
86    {
87      ;
88
89      loop {
90        return _globalUniforms.colorGreen;
91      }
92    }
93  }
94  return vec4<f32>();
95}
96@fragment fn main() -> FSOut {
97  var _stageOut: FSOut;
98  _stageOut.sk_FragColor = _skslMain(/*fragcoord*/ vec2<f32>());
99  return _stageOut;
100}
101