xref: /aosp_15_r20/external/skia/tests/sksl/runtime/LoopFloat.wgsl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1diagnostic(off, derivative_uniformity);
2diagnostic(off, chromium.unreachable_code);
3struct _GlobalUniforms {
4  colorRed: vec4<f32>,
5  colorGreen: vec4<f32>,
6};
7@binding(0) @group(0) var<uniform> _globalUniforms: _GlobalUniforms;
8const kZero: f32 = 0.0;
9fn return_loop_ff(five: f32) -> f32 {
10  {
11    {
12      var i: f32 = kZero;
13      loop {
14        {
15          if i == five {
16            {
17              return i;
18            }
19          }
20        }
21        continuing {
22          i = i + f32(1);
23          break if i >= 10.0;
24        }
25      }
26    }
27    return 0.0;
28  }
29}
30const kTen: f32 = 10.0;
31fn continue_loop_ff(five: f32) -> f32 {
32  {
33    var sum: f32 = 0.0;
34    {
35      var i: f32 = 0.0;
36      loop {
37        {
38          if i < five {
39            {
40              continue;
41            }
42          }
43          sum = sum + i;
44        }
45        continuing {
46          i = i + f32(1);
47          break if i >= kTen;
48        }
49      }
50    }
51    return sum;
52  }
53}
54fn break_loop_ff(five: f32) -> f32 {
55  {
56    var sum: f32 = 0.0;
57    const kOne: f32 = 1.0;
58    {
59      var i: f32 = 0.0;
60      loop {
61        {
62          if i > five {
63            {
64              break;
65            }
66          }
67          sum = sum + i;
68        }
69        continuing {
70          i = i + kOne;
71          break if i >= 10.0;
72        }
73      }
74    }
75    return sum;
76  }
77}
78fn float_loop_f() -> f32 {
79  {
80    var sum: f32 = 0.0;
81    {
82      var i: f32 = 0.123;
83      loop {
84        {
85          sum = sum + i;
86        }
87        continuing {
88          i = i + 0.111;
89          break if i >= 0.6;
90        }
91      }
92    }
93    return sum - 1.725;
94  }
95}
96fn loop_operator_le_b() -> bool {
97  {
98    var result: vec4<f32> = vec4<f32>(9.0);
99    {
100      var i: f32 = 1.0;
101      loop {
102        {
103          result = vec4<f32>(result.yzw, i);
104        }
105        continuing {
106          i = i + f32(1);
107          break if i > 3.0;
108        }
109      }
110    }
111    return all(result == vec4<f32>(9.0, 1.0, 2.0, 3.0));
112  }
113}
114fn loop_operator_lt_b() -> bool {
115  {
116    var result: vec4<f32> = vec4<f32>(9.0);
117    {
118      var i: f32 = 1.0;
119      loop {
120        {
121          result = vec4<f32>(result.yzw, i);
122        }
123        continuing {
124          i = i + f32(1);
125          break if i >= 4.0;
126        }
127      }
128    }
129    return all(result == vec4<f32>(9.0, 1.0, 2.0, 3.0));
130  }
131}
132fn loop_operator_ge_b() -> bool {
133  {
134    var result: vec4<f32> = vec4<f32>(9.0);
135    {
136      var i: f32 = 3.0;
137      loop {
138        {
139          result = vec4<f32>(result.yzw, i);
140        }
141        continuing {
142          i = i - f32(1);
143          break if i < 1.0;
144        }
145      }
146    }
147    return all(result == vec4<f32>(9.0, 3.0, 2.0, 1.0));
148  }
149}
150fn loop_operator_gt_b() -> bool {
151  {
152    var result: vec4<f32> = vec4<f32>(9.0);
153    {
154      var i: f32 = 3.0;
155      loop {
156        {
157          result = vec4<f32>(result.yzw, i);
158        }
159        continuing {
160          i = i - f32(1);
161          break if i <= 0.0;
162        }
163      }
164    }
165    return all(result == vec4<f32>(9.0, 3.0, 2.0, 1.0));
166  }
167}
168fn loop_operator_ne_b() -> bool {
169  {
170    var result: vec4<f32> = vec4<f32>(9.0);
171    {
172      var i: f32 = 1.0;
173      loop {
174        {
175          result = vec4<f32>(result.yzw, i);
176        }
177        continuing {
178          i = i + f32(1);
179          break if i >= 4.0;
180        }
181      }
182    }
183    return all(result == vec4<f32>(9.0, 1.0, 2.0, 3.0));
184  }
185}
186fn loop_operator_eq_b() -> bool {
187  {
188    var result: vec4<f32> = vec4<f32>(9.0);
189    {
190      var i: f32 = 1.0;
191      loop {
192        {
193          result = vec4<f32>(result.yzw, i);
194        }
195        continuing {
196          i = i + f32(1);
197          break if i != 1.0;
198        }
199      }
200    }
201    return all(result == vec4<f32>(9.0, 9.0, 9.0, 1.0));
202  }
203}
204fn _skslMain(pos: vec2<f32>) -> vec4<f32> {
205  {
206    let _skTemp0 = clamp(pos.x, f32(_globalUniforms.colorGreen.y), f32(_globalUniforms.colorGreen.w));
207    let five: f32 = _skTemp0 * 5.0;
208    var _skTemp1: vec4<f32>;
209    var _skTemp2: bool;
210    var _skTemp3: bool;
211    var _skTemp4: bool;
212    var _skTemp5: bool;
213    var _skTemp6: bool;
214    var _skTemp7: bool;
215    var _skTemp8: bool;
216    var _skTemp9: bool;
217    var _skTemp10: bool;
218    let _skTemp11 = return_loop_ff(five);
219    if _skTemp11 == 5.0 {
220      let _skTemp12 = continue_loop_ff(five);
221      _skTemp10 = (_skTemp12 == 35.0);
222    } else {
223      _skTemp10 = false;
224    }
225    if _skTemp10 {
226      let _skTemp13 = break_loop_ff(five);
227      _skTemp9 = (_skTemp13 == 15.0);
228    } else {
229      _skTemp9 = false;
230    }
231    if _skTemp9 {
232      let _skTemp14 = float_loop_f();
233      let _skTemp15 = abs(_skTemp14);
234      _skTemp8 = _skTemp15 < 0.025;
235    } else {
236      _skTemp8 = false;
237    }
238    if _skTemp8 {
239      let _skTemp16 = loop_operator_le_b();
240      _skTemp7 = _skTemp16;
241    } else {
242      _skTemp7 = false;
243    }
244    if _skTemp7 {
245      let _skTemp17 = loop_operator_lt_b();
246      _skTemp6 = _skTemp17;
247    } else {
248      _skTemp6 = false;
249    }
250    if _skTemp6 {
251      let _skTemp18 = loop_operator_ge_b();
252      _skTemp5 = _skTemp18;
253    } else {
254      _skTemp5 = false;
255    }
256    if _skTemp5 {
257      let _skTemp19 = loop_operator_gt_b();
258      _skTemp4 = _skTemp19;
259    } else {
260      _skTemp4 = false;
261    }
262    if _skTemp4 {
263      let _skTemp20 = loop_operator_eq_b();
264      _skTemp3 = _skTemp20;
265    } else {
266      _skTemp3 = false;
267    }
268    if _skTemp3 {
269      let _skTemp21 = loop_operator_ne_b();
270      _skTemp2 = _skTemp21;
271    } else {
272      _skTemp2 = false;
273    }
274    if _skTemp2 {
275      _skTemp1 = _globalUniforms.colorGreen;
276    } else {
277      _skTemp1 = _globalUniforms.colorRed;
278    }
279    return _skTemp1;
280  }
281}
282@fragment fn main(@location(0) _coords: vec2<f32>) -> @location(0) vec4<f32> {
283  return _skslMain(_coords);
284}
285