1*c8dee2aaSAndroid Build Coastguard Workerdiagnostic(off, derivative_uniformity); 2*c8dee2aaSAndroid Build Coastguard Workerdiagnostic(off, chromium.unreachable_code); 3*c8dee2aaSAndroid Build Coastguard Workerstruct _GlobalUniforms { 4*c8dee2aaSAndroid Build Coastguard Worker colorGreen: vec4<f32>, 5*c8dee2aaSAndroid Build Coastguard Worker colorRed: vec4<f32>, 6*c8dee2aaSAndroid Build Coastguard Worker}; 7*c8dee2aaSAndroid Build Coastguard Worker@binding(0) @group(0) var<uniform> _globalUniforms: _GlobalUniforms; 8*c8dee2aaSAndroid Build Coastguard Workerstruct S { 9*c8dee2aaSAndroid Build Coastguard Worker f1: f32, 10*c8dee2aaSAndroid Build Coastguard Worker f2: f32, 11*c8dee2aaSAndroid Build Coastguard Worker f3: f32, 12*c8dee2aaSAndroid Build Coastguard Worker}; 13*c8dee2aaSAndroid Build Coastguard Workerfn test_same_structs_bbfff(eq: bool, f1: f32, f2: f32, f3: f32) -> bool { 14*c8dee2aaSAndroid Build Coastguard Worker { 15*c8dee2aaSAndroid Build Coastguard Worker let one: f32 = f32(_globalUniforms.colorGreen.x + 1.0); 16*c8dee2aaSAndroid Build Coastguard Worker var a: S; 17*c8dee2aaSAndroid Build Coastguard Worker a.f1 = f1; 18*c8dee2aaSAndroid Build Coastguard Worker a.f2 = f2; 19*c8dee2aaSAndroid Build Coastguard Worker a.f3 = f3; 20*c8dee2aaSAndroid Build Coastguard Worker var b: S; 21*c8dee2aaSAndroid Build Coastguard Worker b.f1 = f1 * one; 22*c8dee2aaSAndroid Build Coastguard Worker b.f2 = f2 * one; 23*c8dee2aaSAndroid Build Coastguard Worker b.f3 = f3 * one; 24*c8dee2aaSAndroid Build Coastguard Worker var _skTemp0: bool; 25*c8dee2aaSAndroid Build Coastguard Worker if eq { 26*c8dee2aaSAndroid Build Coastguard Worker _skTemp0 = ((a.f1 == b.f1) && (a.f2 == b.f2) && (a.f3 == b.f3)); 27*c8dee2aaSAndroid Build Coastguard Worker } else { 28*c8dee2aaSAndroid Build Coastguard Worker _skTemp0 = ((a.f1 != b.f1) || (a.f2 != b.f2) || (a.f3 != b.f3)); 29*c8dee2aaSAndroid Build Coastguard Worker } 30*c8dee2aaSAndroid Build Coastguard Worker return _skTemp0; 31*c8dee2aaSAndroid Build Coastguard Worker } 32*c8dee2aaSAndroid Build Coastguard Worker} 33*c8dee2aaSAndroid Build Coastguard Workerfn test_diff_structs_bbfff(eq: bool, f1: f32, f2: f32, f3: f32) -> bool { 34*c8dee2aaSAndroid Build Coastguard Worker { 35*c8dee2aaSAndroid Build Coastguard Worker let two: f32 = f32(_globalUniforms.colorGreen.x + 2.0); 36*c8dee2aaSAndroid Build Coastguard Worker var a: S; 37*c8dee2aaSAndroid Build Coastguard Worker a.f1 = f1; 38*c8dee2aaSAndroid Build Coastguard Worker a.f2 = f2; 39*c8dee2aaSAndroid Build Coastguard Worker a.f3 = f3; 40*c8dee2aaSAndroid Build Coastguard Worker var b: S; 41*c8dee2aaSAndroid Build Coastguard Worker b.f1 = f1 * two; 42*c8dee2aaSAndroid Build Coastguard Worker b.f2 = f2 * two; 43*c8dee2aaSAndroid Build Coastguard Worker b.f3 = f3; 44*c8dee2aaSAndroid Build Coastguard Worker var _skTemp1: bool; 45*c8dee2aaSAndroid Build Coastguard Worker if eq { 46*c8dee2aaSAndroid Build Coastguard Worker _skTemp1 = ((a.f1 == b.f1) && (a.f2 == b.f2) && (a.f3 == b.f3)); 47*c8dee2aaSAndroid Build Coastguard Worker } else { 48*c8dee2aaSAndroid Build Coastguard Worker _skTemp1 = ((a.f1 != b.f1) || (a.f2 != b.f2) || (a.f3 != b.f3)); 49*c8dee2aaSAndroid Build Coastguard Worker } 50*c8dee2aaSAndroid Build Coastguard Worker return _skTemp1; 51*c8dee2aaSAndroid Build Coastguard Worker } 52*c8dee2aaSAndroid Build Coastguard Worker} 53*c8dee2aaSAndroid Build Coastguard Workerfn _skslMain(coords: vec2<f32>) -> vec4<f32> { 54*c8dee2aaSAndroid Build Coastguard Worker { 55*c8dee2aaSAndroid Build Coastguard Worker let NAN1: f32 = f32(_globalUniforms.colorGreen.x / _globalUniforms.colorGreen.z); 56*c8dee2aaSAndroid Build Coastguard Worker let NAN2: f32 = f32(_globalUniforms.colorGreen.z / _globalUniforms.colorGreen.x); 57*c8dee2aaSAndroid Build Coastguard Worker let ZP: f32 = f32(_globalUniforms.colorGreen.x * _globalUniforms.colorGreen.z); 58*c8dee2aaSAndroid Build Coastguard Worker let ZM: f32 = f32(-_globalUniforms.colorGreen.x * _globalUniforms.colorGreen.z); 59*c8dee2aaSAndroid Build Coastguard Worker let F42: f32 = f32(_globalUniforms.colorGreen.y * 42.0); 60*c8dee2aaSAndroid Build Coastguard Worker let F43: f32 = f32(_globalUniforms.colorGreen.y * 43.0); 61*c8dee2aaSAndroid Build Coastguard Worker let F44: f32 = f32(_globalUniforms.colorGreen.y * 44.0); 62*c8dee2aaSAndroid Build Coastguard Worker const EQ: bool = true; 63*c8dee2aaSAndroid Build Coastguard Worker const NE: bool = false; 64*c8dee2aaSAndroid Build Coastguard Worker let _0_one: f32 = f32(_globalUniforms.colorGreen.x + 1.0); 65*c8dee2aaSAndroid Build Coastguard Worker var _1_a: S; 66*c8dee2aaSAndroid Build Coastguard Worker _1_a.f1 = F42; 67*c8dee2aaSAndroid Build Coastguard Worker _1_a.f2 = ZM; 68*c8dee2aaSAndroid Build Coastguard Worker _1_a.f3 = ZP; 69*c8dee2aaSAndroid Build Coastguard Worker var _2_b: S; 70*c8dee2aaSAndroid Build Coastguard Worker _2_b.f1 = F42 * _0_one; 71*c8dee2aaSAndroid Build Coastguard Worker _2_b.f2 = ZM * _0_one; 72*c8dee2aaSAndroid Build Coastguard Worker _2_b.f3 = ZP * _0_one; 73*c8dee2aaSAndroid Build Coastguard Worker var _skTemp2: vec4<f32>; 74*c8dee2aaSAndroid Build Coastguard Worker var _skTemp3: bool; 75*c8dee2aaSAndroid Build Coastguard Worker var _skTemp4: bool; 76*c8dee2aaSAndroid Build Coastguard Worker var _skTemp5: bool; 77*c8dee2aaSAndroid Build Coastguard Worker var _skTemp6: bool; 78*c8dee2aaSAndroid Build Coastguard Worker var _skTemp7: bool; 79*c8dee2aaSAndroid Build Coastguard Worker var _skTemp8: bool; 80*c8dee2aaSAndroid Build Coastguard Worker var _skTemp9: bool; 81*c8dee2aaSAndroid Build Coastguard Worker var _skTemp10: bool; 82*c8dee2aaSAndroid Build Coastguard Worker if EQ { 83*c8dee2aaSAndroid Build Coastguard Worker _skTemp10 = ((_1_a.f1 == _2_b.f1) && (_1_a.f2 == _2_b.f2) && (_1_a.f3 == _2_b.f3)); 84*c8dee2aaSAndroid Build Coastguard Worker } else { 85*c8dee2aaSAndroid Build Coastguard Worker _skTemp10 = ((_1_a.f1 != _2_b.f1) || (_1_a.f2 != _2_b.f2) || (_1_a.f3 != _2_b.f3)); 86*c8dee2aaSAndroid Build Coastguard Worker } 87*c8dee2aaSAndroid Build Coastguard Worker if _skTemp10 { 88*c8dee2aaSAndroid Build Coastguard Worker let _skTemp11 = test_same_structs_bbfff(NE, F42, ZM, ZP); 89*c8dee2aaSAndroid Build Coastguard Worker _skTemp9 = !_skTemp11; 90*c8dee2aaSAndroid Build Coastguard Worker } else { 91*c8dee2aaSAndroid Build Coastguard Worker _skTemp9 = false; 92*c8dee2aaSAndroid Build Coastguard Worker } 93*c8dee2aaSAndroid Build Coastguard Worker if _skTemp9 { 94*c8dee2aaSAndroid Build Coastguard Worker let _skTemp12 = test_same_structs_bbfff(NE, F42, NAN1, NAN2); 95*c8dee2aaSAndroid Build Coastguard Worker _skTemp8 = _skTemp12; 96*c8dee2aaSAndroid Build Coastguard Worker } else { 97*c8dee2aaSAndroid Build Coastguard Worker _skTemp8 = false; 98*c8dee2aaSAndroid Build Coastguard Worker } 99*c8dee2aaSAndroid Build Coastguard Worker if _skTemp8 { 100*c8dee2aaSAndroid Build Coastguard Worker let _skTemp13 = test_same_structs_bbfff(EQ, F42, NAN1, NAN2); 101*c8dee2aaSAndroid Build Coastguard Worker _skTemp7 = !_skTemp13; 102*c8dee2aaSAndroid Build Coastguard Worker } else { 103*c8dee2aaSAndroid Build Coastguard Worker _skTemp7 = false; 104*c8dee2aaSAndroid Build Coastguard Worker } 105*c8dee2aaSAndroid Build Coastguard Worker if _skTemp7 { 106*c8dee2aaSAndroid Build Coastguard Worker let _skTemp14 = test_diff_structs_bbfff(NE, F42, F43, F44); 107*c8dee2aaSAndroid Build Coastguard Worker _skTemp6 = _skTemp14; 108*c8dee2aaSAndroid Build Coastguard Worker } else { 109*c8dee2aaSAndroid Build Coastguard Worker _skTemp6 = false; 110*c8dee2aaSAndroid Build Coastguard Worker } 111*c8dee2aaSAndroid Build Coastguard Worker if _skTemp6 { 112*c8dee2aaSAndroid Build Coastguard Worker let _skTemp15 = test_diff_structs_bbfff(EQ, F42, F43, F44); 113*c8dee2aaSAndroid Build Coastguard Worker _skTemp5 = !_skTemp15; 114*c8dee2aaSAndroid Build Coastguard Worker } else { 115*c8dee2aaSAndroid Build Coastguard Worker _skTemp5 = false; 116*c8dee2aaSAndroid Build Coastguard Worker } 117*c8dee2aaSAndroid Build Coastguard Worker if _skTemp5 { 118*c8dee2aaSAndroid Build Coastguard Worker let _skTemp16 = test_diff_structs_bbfff(NE, NAN1, ZM, ZP); 119*c8dee2aaSAndroid Build Coastguard Worker _skTemp4 = _skTemp16; 120*c8dee2aaSAndroid Build Coastguard Worker } else { 121*c8dee2aaSAndroid Build Coastguard Worker _skTemp4 = false; 122*c8dee2aaSAndroid Build Coastguard Worker } 123*c8dee2aaSAndroid Build Coastguard Worker if _skTemp4 { 124*c8dee2aaSAndroid Build Coastguard Worker let _skTemp17 = test_diff_structs_bbfff(EQ, NAN1, ZM, ZP); 125*c8dee2aaSAndroid Build Coastguard Worker _skTemp3 = !_skTemp17; 126*c8dee2aaSAndroid Build Coastguard Worker } else { 127*c8dee2aaSAndroid Build Coastguard Worker _skTemp3 = false; 128*c8dee2aaSAndroid Build Coastguard Worker } 129*c8dee2aaSAndroid Build Coastguard Worker if _skTemp3 { 130*c8dee2aaSAndroid Build Coastguard Worker _skTemp2 = _globalUniforms.colorGreen; 131*c8dee2aaSAndroid Build Coastguard Worker } else { 132*c8dee2aaSAndroid Build Coastguard Worker _skTemp2 = _globalUniforms.colorRed; 133*c8dee2aaSAndroid Build Coastguard Worker } 134*c8dee2aaSAndroid Build Coastguard Worker return vec4<f32>(_skTemp2); 135*c8dee2aaSAndroid Build Coastguard Worker } 136*c8dee2aaSAndroid Build Coastguard Worker} 137*c8dee2aaSAndroid Build Coastguard Worker@fragment fn main(@location(0) _coords: vec2<f32>) -> @location(0) vec4<f32> { 138*c8dee2aaSAndroid Build Coastguard Worker return _skslMain(_coords); 139*c8dee2aaSAndroid Build Coastguard Worker} 140