1diagnostic(off, derivative_uniformity); 2diagnostic(off, chromium.unreachable_code); 3struct FSOut { 4 @location(0) sk_FragColor: vec4<f32>, 5}; 6struct _GlobalUniforms { 7 colorRed: vec4<f32>, 8 colorGreen: vec4<f32>, 9}; 10@binding(0) @group(0) var<uniform> _globalUniforms: _GlobalUniforms; 11struct S { 12 x: f32, 13 y: i32, 14}; 15struct Nested { 16 a: S, 17 b: S, 18}; 19struct Compound { 20 f4: vec4<f32>, 21 i3: vec3<i32>, 22}; 23fn returns_a_struct_S() -> S { 24 { 25 var s: S; 26 s.x = 1.0; 27 s.y = 2; 28 return s; 29 } 30} 31fn constructs_a_struct_S() -> S { 32 { 33 return S(2.0, 3); 34 } 35} 36fn accepts_a_struct_fS(s: S) -> f32 { 37 { 38 return s.x + f32(s.y); 39 } 40} 41fn modifies_a_struct_vS(s: ptr<function, S>) { 42 { 43 (*s).x = (*s).x + f32(1); 44 (*s).y = (*s).y + i32(1); 45 } 46} 47fn _skslMain(coords: vec2<f32>) -> vec4<f32> { 48 { 49 let _skTemp0 = returns_a_struct_S(); 50 var s: S = _skTemp0; 51 let _skTemp1 = accepts_a_struct_fS(s); 52 let x: f32 = _skTemp1; 53 var _skTemp2: S = s; 54 modifies_a_struct_vS(&_skTemp2); 55 s = _skTemp2; 56 let _skTemp3 = constructs_a_struct_S(); 57 let expected: S = _skTemp3; 58 var n1: Nested; 59 var n2: Nested; 60 var n3: Nested; 61 let _skTemp4 = returns_a_struct_S(); 62 n1.a = _skTemp4; 63 n1.b = n1.a; 64 n2 = n1; 65 n3 = n2; 66 var _skTemp5: S = n3.b; 67 modifies_a_struct_vS(&_skTemp5); 68 n3.b = _skTemp5; 69 const c1: Compound = Compound(vec4<f32>(1.0, 2.0, 3.0, 4.0), vec3<i32>(5, 6, 7)); 70 let c2: Compound = Compound(vec4<f32>(f32(_globalUniforms.colorGreen.y), 2.0, 3.0, 4.0), vec3<i32>(5, 6, 7)); 71 let c3: Compound = Compound(vec4<f32>(f32(_globalUniforms.colorGreen.x), 2.0, 3.0, 4.0), vec3<i32>(5, 6, 7)); 72 var _skTemp6: bool; 73 const _skTemp7 = S(2.0, 3); 74 if ((((x == 3.0) && (s.x == 2.0)) && (s.y == 3)) && ((s.x == expected.x) && (s.y == expected.y))) && ((s.x == _skTemp7.x) && (s.y == _skTemp7.y)) { 75 let _skTemp8 = returns_a_struct_S(); 76 let _skTemp9 = _skTemp8; 77 _skTemp6 = ((s.x != _skTemp9.x) || (s.y != _skTemp9.y)); 78 } else { 79 _skTemp6 = false; 80 } 81 const _skTemp10 = Nested(S(1.0, 2), S(2.0, 3)); 82 let valid: bool = ((((_skTemp6 && (((n1.a.x == n2.a.x) && (n1.a.y == n2.a.y)) && ((n1.b.x == n2.b.x) && (n1.b.y == n2.b.y)))) && (((n1.a.x != n3.a.x) || (n1.a.y != n3.a.y)) || ((n1.b.x != n3.b.x) || (n1.b.y != n3.b.y)))) && (((n3.a.x == _skTemp10.a.x) && (n3.a.y == _skTemp10.a.y)) && ((n3.b.x == _skTemp10.b.x) && (n3.b.y == _skTemp10.b.y)))) && (all(c1.f4 == c2.f4) && all(c1.i3 == c2.i3))) && (any(c2.f4 != c3.f4) || any(c2.i3 != c3.i3)); 83 return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4<bool>(valid)); 84 } 85} 86@fragment fn main() -> FSOut { 87 var _stageOut: FSOut; 88 _stageOut.sk_FragColor = _skslMain(/*fragcoord*/ vec2<f32>()); 89 return _stageOut; 90} 91