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