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 testMatrix3x3: mat3x3<f32>, 10 testMatrix4x4: mat4x4<f32>, 11}; 12@binding(0) @group(0) var<uniform> _globalUniforms: _GlobalUniforms; 13fn test3x3_b() -> bool { 14 { 15 var expected: vec3<f32> = vec3<f32>(3.0, 2.0, 1.0); 16 var vec: vec3<f32>; 17 { 18 var c: i32 = 0; 19 loop { 20 { 21 { 22 var r: i32 = 0; 23 loop { 24 { 25 let _skTemp0 = vec3<i32>(2, 1, 0)[r]; 26 vec[_skTemp0] = _globalUniforms.testMatrix3x3[c][r]; 27 } 28 continuing { 29 r = r + i32(1); 30 break if r >= 3; 31 } 32 } 33 } 34 if any(vec != expected) { 35 { 36 return false; 37 } 38 } 39 expected = expected + 3.0; 40 } 41 continuing { 42 c = c + i32(1); 43 break if c >= 3; 44 } 45 } 46 } 47 return true; 48 } 49} 50fn test4x4_b() -> bool { 51 { 52 var expected: vec4<f32> = vec4<f32>(4.0, 3.0, 2.0, 1.0); 53 var vec: vec4<f32>; 54 { 55 var c: i32 = 0; 56 loop { 57 { 58 { 59 var r: i32 = 0; 60 loop { 61 { 62 let _skTemp1 = vec4<i32>(3, 2, 1, 0)[r]; 63 vec[_skTemp1] = _globalUniforms.testMatrix4x4[c][r]; 64 } 65 continuing { 66 r = r + i32(1); 67 break if r >= 4; 68 } 69 } 70 } 71 if any(vec != expected) { 72 { 73 return false; 74 } 75 } 76 expected = expected + 4.0; 77 } 78 continuing { 79 c = c + i32(1); 80 break if c >= 4; 81 } 82 } 83 } 84 return true; 85 } 86} 87fn _skslMain(coords: vec2<f32>) -> vec4<f32> { 88 { 89 var _skTemp2: vec4<f32>; 90 var _skTemp3: bool; 91 let _skTemp4 = test3x3_b(); 92 if _skTemp4 { 93 let _skTemp5 = test4x4_b(); 94 _skTemp3 = _skTemp5; 95 } else { 96 _skTemp3 = false; 97 } 98 if _skTemp3 { 99 _skTemp2 = _globalUniforms.colorGreen; 100 } else { 101 _skTemp2 = _globalUniforms.colorRed; 102 } 103 return _skTemp2; 104 } 105} 106@fragment fn main() -> FSOut { 107 var _stageOut: FSOut; 108 _stageOut.sk_FragColor = _skslMain(/*fragcoord*/ vec2<f32>()); 109 return _stageOut; 110} 111