xref: /aosp_15_r20/external/skia/tests/sksl/shared/Optimizations.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 flatten_compound_constructor_b() -> bool {
12  {
13    const x: vec4<i32> = vec4<i32>(vec3<i32>(vec2<i32>(1, 2), 3), 4);
14    const y: vec4<i32> = vec4<i32>(1, vec3<i32>(2, vec2<i32>(3, 4)));
15    return all(x == y);
16  }
17}
18fn flatten_known_if_b() -> bool {
19  {
20    var value: i32;
21    if true {
22      {
23        value = 1;
24      }
25    } else {
26      {
27        value = 2;
28      }
29    }
30    return value == 1;
31  }
32}
33fn eliminate_empty_if_else_b() -> bool {
34  {
35    var check: bool = false;
36    check = !check;
37    if check {
38      {
39      }
40    } else {
41      {
42      }
43    }
44    return check;
45  }
46}
47fn eliminate_empty_else_b() -> bool {
48  {
49    const check: bool = true;
50    if check {
51      {
52        return true;
53      }
54    } else {
55      {
56      }
57    }
58    return false;
59  }
60}
61fn flatten_matching_ternary_b() -> bool {
62  {
63    const check: bool = true;
64    return select(true, true, check);
65  }
66}
67fn flatten_expr_without_side_effects_b() -> bool {
68  {
69    const check: bool = true;
70    return check;
71  }
72}
73fn eliminate_no_op_arithmetic_b() -> bool {
74  {
75    const ONE: i32 = 1;
76    var a1: array<i32, 1>;
77    var a2: array<i32, 1>;
78    var x: i32 = ONE;
79    x = x + 0;
80    x = x * 1;
81    return x == 1;
82  }
83}
84fn flatten_switch_b() -> bool {
85  {
86    switch 1 {
87      case 0 {
88        return false;
89      }
90      case 1 {
91        return true;
92      }
93      case 2 {
94        return false;
95      }
96      case default {}
97    }
98    return false;
99  }
100}
101fn _skslMain(coords: vec2<f32>) -> vec4<f32> {
102  {
103    var _skTemp0: vec4<f32>;
104    var _skTemp1: bool;
105    var _skTemp2: bool;
106    var _skTemp3: bool;
107    var _skTemp4: bool;
108    var _skTemp5: bool;
109    var _skTemp6: bool;
110    var _skTemp7: bool;
111    let _skTemp8 = flatten_compound_constructor_b();
112    if _skTemp8 {
113      let _skTemp9 = flatten_known_if_b();
114      _skTemp7 = _skTemp9;
115    } else {
116      _skTemp7 = false;
117    }
118    if _skTemp7 {
119      let _skTemp10 = eliminate_empty_if_else_b();
120      _skTemp6 = _skTemp10;
121    } else {
122      _skTemp6 = false;
123    }
124    if _skTemp6 {
125      let _skTemp11 = eliminate_empty_else_b();
126      _skTemp5 = _skTemp11;
127    } else {
128      _skTemp5 = false;
129    }
130    if _skTemp5 {
131      let _skTemp12 = flatten_matching_ternary_b();
132      _skTemp4 = _skTemp12;
133    } else {
134      _skTemp4 = false;
135    }
136    if _skTemp4 {
137      let _skTemp13 = flatten_expr_without_side_effects_b();
138      _skTemp3 = _skTemp13;
139    } else {
140      _skTemp3 = false;
141    }
142    if _skTemp3 {
143      let _skTemp14 = eliminate_no_op_arithmetic_b();
144      _skTemp2 = _skTemp14;
145    } else {
146      _skTemp2 = false;
147    }
148    if _skTemp2 {
149      let _skTemp15 = flatten_switch_b();
150      _skTemp1 = _skTemp15;
151    } else {
152      _skTemp1 = false;
153    }
154    if _skTemp1 {
155      _skTemp0 = _globalUniforms.colorGreen;
156    } else {
157      _skTemp0 = _globalUniforms.colorRed;
158    }
159    return _skTemp0;
160  }
161}
162@fragment fn main() -> FSOut {
163  var _stageOut: FSOut;
164  _stageOut.sk_FragColor = _skslMain(/*fragcoord*/ vec2<f32>());
165  return _stageOut;
166}
167