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 colorGreen: vec4<f32>, 8*c8dee2aaSAndroid Build Coastguard Worker colorRed: vec4<f32>, 9*c8dee2aaSAndroid Build Coastguard Worker testInputs: vec4<f32>, 10*c8dee2aaSAndroid Build Coastguard Worker}; 11*c8dee2aaSAndroid Build Coastguard Worker@binding(0) @group(0) var<uniform> _globalUniforms: _GlobalUniforms; 12*c8dee2aaSAndroid Build Coastguard Workerconst minus: i32 = 2; 13*c8dee2aaSAndroid Build Coastguard Workerconst star: i32 = 3; 14*c8dee2aaSAndroid Build Coastguard Workerconst slash: i32 = 4; 15*c8dee2aaSAndroid Build Coastguard Workerfn test_bifffff22(op: i32, m11: f32, m12: f32, m21: f32, m22: f32, expected: mat2x2<f32>) -> bool { 16*c8dee2aaSAndroid Build Coastguard Worker { 17*c8dee2aaSAndroid Build Coastguard Worker let one: f32 = f32(_globalUniforms.colorRed.x); 18*c8dee2aaSAndroid Build Coastguard Worker var m2: mat2x2<f32> = mat2x2<f32>(m11 * one, m12 * one, m21 * one, m22 * one); 19*c8dee2aaSAndroid Build Coastguard Worker switch op { 20*c8dee2aaSAndroid Build Coastguard Worker case 1 { 21*c8dee2aaSAndroid Build Coastguard Worker m2 = mat2x2<f32>(1.0 + m2[0], 1.0 + m2[1]); 22*c8dee2aaSAndroid Build Coastguard Worker break; 23*c8dee2aaSAndroid Build Coastguard Worker } 24*c8dee2aaSAndroid Build Coastguard Worker case 2 { 25*c8dee2aaSAndroid Build Coastguard Worker m2 = mat2x2<f32>(m2[0] - 1.0, m2[1] - 1.0); 26*c8dee2aaSAndroid Build Coastguard Worker break; 27*c8dee2aaSAndroid Build Coastguard Worker } 28*c8dee2aaSAndroid Build Coastguard Worker case 3 { 29*c8dee2aaSAndroid Build Coastguard Worker m2 = m2 * 2.0; 30*c8dee2aaSAndroid Build Coastguard Worker break; 31*c8dee2aaSAndroid Build Coastguard Worker } 32*c8dee2aaSAndroid Build Coastguard Worker case 4 { 33*c8dee2aaSAndroid Build Coastguard Worker m2 = m2 * 0.5; 34*c8dee2aaSAndroid Build Coastguard Worker break; 35*c8dee2aaSAndroid Build Coastguard Worker } 36*c8dee2aaSAndroid Build Coastguard Worker case default {} 37*c8dee2aaSAndroid Build Coastguard Worker } 38*c8dee2aaSAndroid Build Coastguard Worker return (((m2[0].x == expected[0].x) && (m2[0].y == expected[0].y)) && (m2[1].x == expected[1].x)) && (m2[1].y == expected[1].y); 39*c8dee2aaSAndroid Build Coastguard Worker } 40*c8dee2aaSAndroid Build Coastguard Worker} 41*c8dee2aaSAndroid Build Coastguard Workerfn divisionTest_b() -> bool { 42*c8dee2aaSAndroid Build Coastguard Worker { 43*c8dee2aaSAndroid Build Coastguard Worker let ten: f32 = f32(_globalUniforms.colorRed.x * 10.0); 44*c8dee2aaSAndroid Build Coastguard Worker let _skTemp0 = vec2<f32>(ten); 45*c8dee2aaSAndroid Build Coastguard Worker let _skTemp1 = vec2<f32>(ten); 46*c8dee2aaSAndroid Build Coastguard Worker var mat: mat2x2<f32> = mat2x2<f32>(_skTemp0[0], _skTemp0[1], _skTemp1[0], _skTemp1[1]); 47*c8dee2aaSAndroid Build Coastguard Worker let div: mat2x2<f32> = mat * (1.0 / _globalUniforms.testInputs.x); 48*c8dee2aaSAndroid Build Coastguard Worker mat = mat * (1.0 / _globalUniforms.testInputs.x); 49*c8dee2aaSAndroid Build Coastguard Worker let _skTemp2 = abs(vec4<f32>(div[0], div[1]) + vec4<f32>(8.0)); 50*c8dee2aaSAndroid Build Coastguard Worker let _skTemp3 = all((_skTemp2 < vec4<f32>(0.01))); 51*c8dee2aaSAndroid Build Coastguard Worker let _skTemp4 = abs(vec4<f32>(mat[0], mat[1]) + vec4<f32>(8.0)); 52*c8dee2aaSAndroid Build Coastguard Worker let _skTemp5 = all((_skTemp4 < vec4<f32>(0.01))); 53*c8dee2aaSAndroid Build Coastguard Worker return _skTemp3 && _skTemp5; 54*c8dee2aaSAndroid Build Coastguard Worker } 55*c8dee2aaSAndroid Build Coastguard Worker} 56*c8dee2aaSAndroid Build Coastguard Workerfn _skslMain(coords: vec2<f32>) -> vec4<f32> { 57*c8dee2aaSAndroid Build Coastguard Worker { 58*c8dee2aaSAndroid Build Coastguard Worker let f1: f32 = f32(_globalUniforms.colorGreen.y); 59*c8dee2aaSAndroid Build Coastguard Worker let f2: f32 = f32(2.0 * _globalUniforms.colorGreen.y); 60*c8dee2aaSAndroid Build Coastguard Worker let f3: f32 = f32(3.0 * _globalUniforms.colorGreen.y); 61*c8dee2aaSAndroid Build Coastguard Worker let f4: f32 = f32(4.0 * _globalUniforms.colorGreen.y); 62*c8dee2aaSAndroid Build Coastguard Worker let _0_expected: mat2x2<f32> = mat2x2<f32>(f1 + 1.0, f2 + 1.0, f3 + 1.0, f4 + 1.0); 63*c8dee2aaSAndroid Build Coastguard Worker let _1_one: f32 = f32(_globalUniforms.colorRed.x); 64*c8dee2aaSAndroid Build Coastguard Worker var _2_m2: mat2x2<f32> = mat2x2<f32>(f1 * _1_one, f2 * _1_one, f3 * _1_one, f4 * _1_one); 65*c8dee2aaSAndroid Build Coastguard Worker { 66*c8dee2aaSAndroid Build Coastguard Worker _2_m2 = mat2x2<f32>(1.0 + _2_m2[0], 1.0 + _2_m2[1]); 67*c8dee2aaSAndroid Build Coastguard Worker } 68*c8dee2aaSAndroid Build Coastguard Worker var _skTemp6: vec4<f32>; 69*c8dee2aaSAndroid Build Coastguard Worker var _skTemp7: bool; 70*c8dee2aaSAndroid Build Coastguard Worker var _skTemp8: bool; 71*c8dee2aaSAndroid Build Coastguard Worker var _skTemp9: bool; 72*c8dee2aaSAndroid Build Coastguard Worker var _skTemp10: bool; 73*c8dee2aaSAndroid Build Coastguard Worker if (((_2_m2[0].x == _0_expected[0].x) && (_2_m2[0].y == _0_expected[0].y)) && (_2_m2[1].x == _0_expected[1].x)) && (_2_m2[1].y == _0_expected[1].y) { 74*c8dee2aaSAndroid Build Coastguard Worker let _skTemp11 = test_bifffff22(minus, f1, f2, f3, f4, mat2x2<f32>(f1 - 1.0, f2 - 1.0, f3 - 1.0, f4 - 1.0)); 75*c8dee2aaSAndroid Build Coastguard Worker _skTemp10 = _skTemp11; 76*c8dee2aaSAndroid Build Coastguard Worker } else { 77*c8dee2aaSAndroid Build Coastguard Worker _skTemp10 = false; 78*c8dee2aaSAndroid Build Coastguard Worker } 79*c8dee2aaSAndroid Build Coastguard Worker if _skTemp10 { 80*c8dee2aaSAndroid Build Coastguard Worker let _skTemp12 = test_bifffff22(star, f1, f2, f3, f4, mat2x2<f32>(f1 * 2.0, f2 * 2.0, f3 * 2.0, f4 * 2.0)); 81*c8dee2aaSAndroid Build Coastguard Worker _skTemp9 = _skTemp12; 82*c8dee2aaSAndroid Build Coastguard Worker } else { 83*c8dee2aaSAndroid Build Coastguard Worker _skTemp9 = false; 84*c8dee2aaSAndroid Build Coastguard Worker } 85*c8dee2aaSAndroid Build Coastguard Worker if _skTemp9 { 86*c8dee2aaSAndroid Build Coastguard Worker let _skTemp13 = test_bifffff22(slash, f1, f2, f3, f4, mat2x2<f32>(f1 * 0.5, f2 * 0.5, f3 * 0.5, f4 * 0.5)); 87*c8dee2aaSAndroid Build Coastguard Worker _skTemp8 = _skTemp13; 88*c8dee2aaSAndroid Build Coastguard Worker } else { 89*c8dee2aaSAndroid Build Coastguard Worker _skTemp8 = false; 90*c8dee2aaSAndroid Build Coastguard Worker } 91*c8dee2aaSAndroid Build Coastguard Worker if _skTemp8 { 92*c8dee2aaSAndroid Build Coastguard Worker let _skTemp14 = divisionTest_b(); 93*c8dee2aaSAndroid Build Coastguard Worker _skTemp7 = _skTemp14; 94*c8dee2aaSAndroid Build Coastguard Worker } else { 95*c8dee2aaSAndroid Build Coastguard Worker _skTemp7 = false; 96*c8dee2aaSAndroid Build Coastguard Worker } 97*c8dee2aaSAndroid Build Coastguard Worker if _skTemp7 { 98*c8dee2aaSAndroid Build Coastguard Worker _skTemp6 = _globalUniforms.colorGreen; 99*c8dee2aaSAndroid Build Coastguard Worker } else { 100*c8dee2aaSAndroid Build Coastguard Worker _skTemp6 = _globalUniforms.colorRed; 101*c8dee2aaSAndroid Build Coastguard Worker } 102*c8dee2aaSAndroid Build Coastguard Worker return _skTemp6; 103*c8dee2aaSAndroid Build Coastguard Worker } 104*c8dee2aaSAndroid Build Coastguard Worker} 105*c8dee2aaSAndroid Build Coastguard Worker@fragment fn main() -> FSOut { 106*c8dee2aaSAndroid Build Coastguard Worker var _stageOut: FSOut; 107*c8dee2aaSAndroid Build Coastguard Worker _stageOut.sk_FragColor = _skslMain(/*fragcoord*/ vec2<f32>()); 108*c8dee2aaSAndroid Build Coastguard Worker return _stageOut; 109*c8dee2aaSAndroid Build Coastguard Worker} 110