1diagnostic(off, derivative_uniformity); 2diagnostic(off, chromium.unreachable_code); 3struct _GlobalUniforms { 4 testMatrix2x2: mat2x2<f32>, 5 testMatrix3x3: mat3x3<f32>, 6 testInputs: vec4<f32>, 7 colorRed: vec4<f32>, 8 colorGreen: vec4<f32>, 9 unknownInput: f32, 10}; 11@binding(0) @group(0) var<uniform> _globalUniforms: _GlobalUniforms; 12fn test_no_op_mat2_X_vec2_b() -> bool { 13 { 14 var v: vec2<f32>; 15 var vv: vec2<f32>; 16 v = _globalUniforms.testInputs.xy; 17 v = _globalUniforms.testInputs.xy; 18 if any(v != _globalUniforms.testInputs.xy) { 19 return false; 20 } 21 if any(v != _globalUniforms.testInputs.xy) { 22 return false; 23 } 24 v = -_globalUniforms.testInputs.xy; 25 v = -_globalUniforms.testInputs.xy; 26 if any(v != (-_globalUniforms.testInputs.xy)) { 27 return false; 28 } 29 vv = vec2<f32>(0.0); 30 vv = vec2<f32>(0.0); 31 return all(vv == vec2<f32>(0.0)); 32 } 33} 34fn test_no_op_mat3_X_vec3_b() -> bool { 35 { 36 var v: vec3<f32>; 37 var vv: vec3<f32>; 38 v = _globalUniforms.testInputs.xyz; 39 v = _globalUniforms.testInputs.xyz; 40 if any(v != _globalUniforms.testInputs.xyz) { 41 return false; 42 } 43 if any(v != _globalUniforms.testInputs.xyz) { 44 return false; 45 } 46 v = -_globalUniforms.testInputs.xyz; 47 v = -_globalUniforms.testInputs.xyz; 48 if any(v != (-_globalUniforms.testInputs.xyz)) { 49 return false; 50 } 51 vv = vec3<f32>(0.0); 52 vv = vec3<f32>(0.0); 53 return all(vv == vec3<f32>(0.0)); 54 } 55} 56fn test_no_op_mat4_X_vec4_b() -> bool { 57 { 58 var v: vec4<f32>; 59 var vv: vec4<f32>; 60 v = _globalUniforms.testInputs; 61 v = _globalUniforms.testInputs; 62 if any(v != _globalUniforms.testInputs) { 63 return false; 64 } 65 if any(v != _globalUniforms.testInputs) { 66 return false; 67 } 68 v = -_globalUniforms.testInputs; 69 v = -_globalUniforms.testInputs; 70 if any(v != (-_globalUniforms.testInputs)) { 71 return false; 72 } 73 vv = vec4<f32>(0.0); 74 vv = vec4<f32>(0.0); 75 return all(vv == vec4<f32>(0.0)); 76 } 77} 78fn test_no_op_vec2_X_mat2_b() -> bool { 79 { 80 const n: vec2<f32> = vec2<f32>(-1.0); 81 const i: vec2<f32> = vec2<f32>(1.0); 82 const z: vec2<f32> = vec2<f32>(0.0); 83 var v: vec2<f32>; 84 var vv: vec2<f32> = vec2<f32>(0.0); 85 vv = vec2<f32>(0.0); 86 if any(vv != z) { 87 return false; 88 } 89 v = i * _globalUniforms.testMatrix2x2; 90 if any(v != vec2<f32>(3.0, 7.0)) { 91 return false; 92 } 93 v = _globalUniforms.testMatrix2x2 * i; 94 if any(v != vec2<f32>(4.0, 6.0)) { 95 return false; 96 } 97 v = n * _globalUniforms.testMatrix2x2; 98 if any(v != vec2<f32>(-3.0, -7.0)) { 99 return false; 100 } 101 v = _globalUniforms.testMatrix2x2 * n; 102 return all(v == vec2<f32>(-4.0, -6.0)); 103 } 104} 105fn test_no_op_vec3_X_mat3_b() -> bool { 106 { 107 const n: vec3<f32> = vec3<f32>(-1.0); 108 const i: vec3<f32> = vec3<f32>(1.0); 109 const z: vec3<f32> = vec3<f32>(0.0); 110 var v: vec3<f32>; 111 var vv: vec3<f32> = vec3<f32>(0.0); 112 vv = vec3<f32>(0.0); 113 if any(vv != z) { 114 return false; 115 } 116 v = i * _globalUniforms.testMatrix3x3; 117 if any(v != vec3<f32>(6.0, 15.0, 24.0)) { 118 return false; 119 } 120 v = _globalUniforms.testMatrix3x3 * i; 121 if any(v != vec3<f32>(12.0, 15.0, 18.0)) { 122 return false; 123 } 124 v = n * _globalUniforms.testMatrix3x3; 125 if any(v != vec3<f32>(-6.0, -15.0, -24.0)) { 126 return false; 127 } 128 v = _globalUniforms.testMatrix3x3 * n; 129 return all(v == vec3<f32>(-12.0, -15.0, -18.0)); 130 } 131} 132fn test_no_op_vec4_X_mat4_b() -> bool { 133 { 134 const n: vec4<f32> = vec4<f32>(-1.0); 135 const i: vec4<f32> = vec4<f32>(1.0); 136 const z: vec4<f32> = vec4<f32>(0.0); 137 let _skTemp0 = _globalUniforms.testMatrix2x2[0]; 138 let _skTemp1 = _globalUniforms.testMatrix2x2[1]; 139 let _skTemp2 = _globalUniforms.testMatrix2x2[0]; 140 let _skTemp3 = _globalUniforms.testMatrix2x2[1]; 141 let _skTemp4 = _globalUniforms.testMatrix2x2[0]; 142 let _skTemp5 = _globalUniforms.testMatrix2x2[1]; 143 let _skTemp6 = _globalUniforms.testMatrix2x2[0]; 144 let _skTemp7 = _globalUniforms.testMatrix2x2[1]; 145 let testMatrix4x4: mat4x4<f32> = mat4x4<f32>(_skTemp0[0], _skTemp0[1], _skTemp1[0], _skTemp1[1], _skTemp2[0], _skTemp2[1], _skTemp3[0], _skTemp3[1], _skTemp4[0], _skTemp4[1], _skTemp5[0], _skTemp5[1], _skTemp6[0], _skTemp6[1], _skTemp7[0], _skTemp7[1]); 146 var v: vec4<f32>; 147 var vv: vec4<f32> = vec4<f32>(0.0); 148 vv = vec4<f32>(0.0); 149 if any(vv != z) { 150 return false; 151 } 152 v = i * testMatrix4x4; 153 if any(v != vec4<f32>(10.0)) { 154 return false; 155 } 156 v = testMatrix4x4 * i; 157 if any(v != vec4<f32>(4.0, 8.0, 12.0, 16.0)) { 158 return false; 159 } 160 v = n * testMatrix4x4; 161 if any(v != vec4<f32>(-10.0)) { 162 return false; 163 } 164 v = testMatrix4x4 * n; 165 return all(v == vec4<f32>(-4.0, -8.0, -12.0, -16.0)); 166 } 167} 168fn _skslMain(coords: vec2<f32>) -> vec4<f32> { 169 { 170 var _skTemp8: vec4<f32>; 171 var _skTemp9: bool; 172 var _skTemp10: bool; 173 var _skTemp11: bool; 174 var _skTemp12: bool; 175 var _skTemp13: bool; 176 let _skTemp14 = test_no_op_mat2_X_vec2_b(); 177 if _skTemp14 { 178 let _skTemp15 = test_no_op_mat3_X_vec3_b(); 179 _skTemp13 = _skTemp15; 180 } else { 181 _skTemp13 = false; 182 } 183 if _skTemp13 { 184 let _skTemp16 = test_no_op_mat4_X_vec4_b(); 185 _skTemp12 = _skTemp16; 186 } else { 187 _skTemp12 = false; 188 } 189 if _skTemp12 { 190 let _skTemp17 = test_no_op_vec2_X_mat2_b(); 191 _skTemp11 = _skTemp17; 192 } else { 193 _skTemp11 = false; 194 } 195 if _skTemp11 { 196 let _skTemp18 = test_no_op_vec3_X_mat3_b(); 197 _skTemp10 = _skTemp18; 198 } else { 199 _skTemp10 = false; 200 } 201 if _skTemp10 { 202 let _skTemp19 = test_no_op_vec4_X_mat4_b(); 203 _skTemp9 = _skTemp19; 204 } else { 205 _skTemp9 = false; 206 } 207 if _skTemp9 { 208 _skTemp8 = _globalUniforms.colorGreen; 209 } else { 210 _skTemp8 = _globalUniforms.colorRed; 211 } 212 return _skTemp8; 213 } 214} 215@fragment fn main(@location(0) _coords: vec2<f32>) -> @location(0) vec4<f32> { 216 return _skslMain(_coords); 217} 218