xref: /aosp_15_r20/external/skia/tests/sksl/shared/TernarySideEffects.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 x: f32 = 1.0;
14    var y: f32 = 1.0;
15    var _skTemp0: f32;
16    if x == y {
17      x = x + 1.0;
18      _skTemp0 = x;
19    } else {
20      y = y + 1.0;
21      _skTemp0 = y;
22    }
23    var _skTemp1: f32;
24    if x == y {
25      x = x + 3.0;
26      _skTemp1 = x;
27    } else {
28      y = y + 3.0;
29      _skTemp1 = y;
30    }
31    var _skTemp2: f32;
32    if x < y {
33      x = x + 5.0;
34      _skTemp2 = x;
35    } else {
36      y = y + 5.0;
37      _skTemp2 = y;
38    }
39    var _skTemp3: f32;
40    if y >= x {
41      x = x + 9.0;
42      _skTemp3 = x;
43    } else {
44      y = y + 9.0;
45      _skTemp3 = y;
46    }
47    var _skTemp4: f32;
48    if x != y {
49      x = x + 1.0;
50      _skTemp4 = x;
51    } else {
52      _skTemp4 = y;
53    }
54    var _skTemp5: f32;
55    if x == y {
56      x = x + 2.0;
57      _skTemp5 = x;
58    } else {
59      _skTemp5 = y;
60    }
61    var _skTemp6: f32;
62    if x != y {
63      _skTemp6 = x;
64    } else {
65      y = y + 3.0;
66      _skTemp6 = y;
67    }
68    var _skTemp7: f32;
69    if x == y {
70      _skTemp7 = x;
71    } else {
72      y = y + 4.0;
73      _skTemp7 = y;
74    }
75    var b: bool = true;
76    var _skTemp8: bool;
77    b = false;
78    if b {
79      _skTemp8 = false;
80    } else {
81      _skTemp8 = b;
82    }
83    let c: bool = _skTemp8;
84    var _skTemp9: vec4<f32>;
85    if c {
86      _skTemp9 = _globalUniforms.colorRed;
87    } else {
88      _skTemp9 = select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4<bool>((x == 8.0) && (y == 17.0)));
89    }
90    return _skTemp9;
91  }
92}
93@fragment fn main() -> FSOut {
94  var _stageOut: FSOut;
95  _stageOut.sk_FragColor = _skslMain(/*fragcoord*/ vec2<f32>());
96  return _stageOut;
97}
98