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