blob: a0a0cbe755b3156ac77718ffe9ec8512506cbcb1 [file]
diagnostic(off, derivative_uniformity);
diagnostic(off, chromium.unreachable_code);
enable f16;
struct FSOut {
@location(0) sk_FragColor: vec4<f16>,
};
struct _GlobalUniforms {
colorGreen: vec4<f16>,
colorRed: vec4<f16>,
testMatrix2x2: _skMatrix22f,
testMatrix3x3: mat3x3<f32>,
testInputs: vec4<f16>,
};
@group(0) @binding(0) var<uniform> _globalUniforms : _GlobalUniforms;
fn outer_product_2x2f(a: vec2<f32>, b: vec2<f32>) -> mat2x2<f32> {
var m : mat2x2<f32>;
for (var c = 0; c < 2; c++) { m[c] = a * b[c]; }
return m;
}
fn outer_product_3x3f(a: vec3<f32>, b: vec3<f32>) -> mat3x3<f32> {
var m : mat3x3<f32>;
for (var c = 0; c < 3; c++) { m[c] = a * b[c]; }
return m;
}
fn outer_product_3x2f(a: vec2<f32>, b: vec3<f32>) -> mat3x2<f32> {
var m : mat3x2<f32>;
for (var c = 0; c < 3; c++) { m[c] = a * b[c]; }
return m;
}
fn outer_product_4x4h(a: vec4<f16>, b: vec4<f16>) -> mat4x4<f16> {
var m : mat4x4<f16>;
for (var c = 0; c < 4; c++) { m[c] = a * b[c]; }
return m;
}
fn outer_product_2x4f(a: vec4<f32>, b: vec2<f32>) -> mat2x4<f32> {
var m : mat2x4<f32>;
for (var c = 0; c < 2; c++) { m[c] = a * b[c]; }
return m;
}
fn outer_product_4x2f(a: vec2<f32>, b: vec4<f32>) -> mat4x2<f32> {
var m : mat4x2<f32>;
for (var c = 0; c < 4; c++) { m[c] = a * b[c]; }
return m;
}
fn _skslMain(coords: vec2<f32>) -> vec4<f16> {
{
const c12: vec2<f32> = vec2<f32>(1.0, 2.0);
let _skTemp0 = outer_product_2x2f(_skUnpacked__globalUniforms_testMatrix2x2[0], _skUnpacked__globalUniforms_testMatrix2x2[1]);
const _skTemp1 = mat2x2<f32>(3.0, 6.0, 4.0, 8.0);
let _skTemp2 = outer_product_3x3f(_globalUniforms.testMatrix3x3[0], _globalUniforms.testMatrix3x3[1]);
const _skTemp3 = mat3x3<f32>(4.0, 8.0, 12.0, 5.0, 10.0, 15.0, 6.0, 12.0, 18.0);
let _skTemp4 = outer_product_3x2f(_skUnpacked__globalUniforms_testMatrix2x2[0], _globalUniforms.testMatrix3x3[1]);
const _skTemp5 = mat3x2<f32>(4.0, 8.0, 5.0, 10.0, 6.0, 12.0);
let _skTemp6 = mat4x4<f32>(outer_product_4x4h(_globalUniforms.testInputs, vec4<f16>(1.0h, 0.0h, 0.0h, 2.0h)));
const _skTemp7 = mat4x4<f32>(-1.25, 0.0, 0.75, 2.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.5, 0.0, 1.5, 4.5);
let _skTemp8 = outer_product_2x4f(vec4<f32>(_globalUniforms.testInputs), c12);
const _skTemp9 = mat2x4<f32>(-1.25, 0.0, 0.75, 2.25, -2.5, 0.0, 1.5, 4.5);
let _skTemp10 = outer_product_4x2f(c12, vec4<f32>(_globalUniforms.testInputs));
const _skTemp11 = mat4x2<f32>(-1.25, -2.5, 0.0, 0.0, 0.75, 1.5, 2.25, 4.5);
return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4<bool>((((((all(_skTemp0[0] == _skTemp1[0]) && all(_skTemp0[1] == _skTemp1[1])) && (all(_skTemp2[0] == _skTemp3[0]) && all(_skTemp2[1] == _skTemp3[1]) && all(_skTemp2[2] == _skTemp3[2]))) && (all(_skTemp4[0] == _skTemp5[0]) && all(_skTemp4[1] == _skTemp5[1]) && all(_skTemp4[2] == _skTemp5[2]))) && (all(_skTemp6[0] == _skTemp7[0]) && all(_skTemp6[1] == _skTemp7[1]) && all(_skTemp6[2] == _skTemp7[2]) && all(_skTemp6[3] == _skTemp7[3]))) && (all(_skTemp8[0] == _skTemp9[0]) && all(_skTemp8[1] == _skTemp9[1]))) && (all(_skTemp10[0] == _skTemp11[0]) && all(_skTemp10[1] == _skTemp11[1]) && all(_skTemp10[2] == _skTemp11[2]) && all(_skTemp10[3] == _skTemp11[3]))));
}
}
@fragment fn main() -> FSOut {
_skInitializePolyfilledUniforms();
var _stageOut: FSOut;
_stageOut.sk_FragColor = _skslMain(/*fragcoord*/ vec2<f32>());
return _stageOut;
}
struct _skRow2f {
@align(16) r : vec2<f32>
};
struct _skMatrix22f {
c : array<_skRow2f, 2>
};
var<private> _skUnpacked__globalUniforms_testMatrix2x2: mat2x2<f32>;
fn _skInitializePolyfilledUniforms() {
_skUnpacked__globalUniforms_testMatrix2x2 = mat2x2<f32>(_globalUniforms.testMatrix2x2.c[0].r, _globalUniforms.testMatrix2x2.c[1].r);
}