xref: /aosp_15_r20/external/skia/tests/sksl/folding/MatrixNoOpFolding.wgsl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Workerdiagnostic(off, derivative_uniformity);
2*c8dee2aaSAndroid Build Coastguard Workerdiagnostic(off, chromium.unreachable_code);
3*c8dee2aaSAndroid Build Coastguard Workerstruct _GlobalUniforms {
4*c8dee2aaSAndroid Build Coastguard Worker  testMatrix2x2: mat2x2<f32>,
5*c8dee2aaSAndroid Build Coastguard Worker  testMatrix3x3: mat3x3<f32>,
6*c8dee2aaSAndroid Build Coastguard Worker  testInputs: vec4<f32>,
7*c8dee2aaSAndroid Build Coastguard Worker  colorRed: vec4<f32>,
8*c8dee2aaSAndroid Build Coastguard Worker  colorGreen: vec4<f32>,
9*c8dee2aaSAndroid Build Coastguard Worker  unknownInput: f32,
10*c8dee2aaSAndroid Build Coastguard Worker};
11*c8dee2aaSAndroid Build Coastguard Worker@binding(0) @group(0) var<uniform> _globalUniforms: _GlobalUniforms;
12*c8dee2aaSAndroid Build Coastguard Workerfn test_mat3_mat3_b() -> bool {
13*c8dee2aaSAndroid Build Coastguard Worker  {
14*c8dee2aaSAndroid Build Coastguard Worker    var m: mat3x3<f32>;
15*c8dee2aaSAndroid Build Coastguard Worker    var mm: mat3x3<f32>;
16*c8dee2aaSAndroid Build Coastguard Worker    const z: mat3x3<f32> = mat3x3<f32>(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
17*c8dee2aaSAndroid Build Coastguard Worker    m = _globalUniforms.testMatrix3x3;
18*c8dee2aaSAndroid Build Coastguard Worker    m = _globalUniforms.testMatrix3x3;
19*c8dee2aaSAndroid Build Coastguard Worker    m = (-1.0 * m);
20*c8dee2aaSAndroid Build Coastguard Worker    mm = mat3x3<f32>(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
21*c8dee2aaSAndroid Build Coastguard Worker    mm = mat3x3<f32>(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
22*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp0 = (-1.0 * _globalUniforms.testMatrix3x3);
23*c8dee2aaSAndroid Build Coastguard Worker    return (all(m[0] == _skTemp0[0]) && all(m[1] == _skTemp0[1]) && all(m[2] == _skTemp0[2])) && (all(mm[0] == z[0]) && all(mm[1] == z[1]) && all(mm[2] == z[2]));
24*c8dee2aaSAndroid Build Coastguard Worker  }
25*c8dee2aaSAndroid Build Coastguard Worker}
26*c8dee2aaSAndroid Build Coastguard Workerfn test_mat4_mat4_b() -> bool {
27*c8dee2aaSAndroid Build Coastguard Worker  {
28*c8dee2aaSAndroid Build Coastguard Worker    let testMatrix4x4: mat4x4<f32> = mat4x4<f32>(_globalUniforms.testInputs[0], _globalUniforms.testInputs[1], _globalUniforms.testInputs[2], _globalUniforms.testInputs[3], _globalUniforms.testInputs[0], _globalUniforms.testInputs[1], _globalUniforms.testInputs[2], _globalUniforms.testInputs[3], _globalUniforms.testInputs[0], _globalUniforms.testInputs[1], _globalUniforms.testInputs[2], _globalUniforms.testInputs[3], _globalUniforms.testInputs[0], _globalUniforms.testInputs[1], _globalUniforms.testInputs[2], _globalUniforms.testInputs[3]);
29*c8dee2aaSAndroid Build Coastguard Worker    var m: mat4x4<f32>;
30*c8dee2aaSAndroid Build Coastguard Worker    var mm: mat4x4<f32>;
31*c8dee2aaSAndroid Build Coastguard Worker    const z: mat4x4<f32> = mat4x4<f32>(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
32*c8dee2aaSAndroid Build Coastguard Worker    m = testMatrix4x4;
33*c8dee2aaSAndroid Build Coastguard Worker    m = testMatrix4x4;
34*c8dee2aaSAndroid Build Coastguard Worker    m = (-1.0 * m);
35*c8dee2aaSAndroid Build Coastguard Worker    mm = mat4x4<f32>(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
36*c8dee2aaSAndroid Build Coastguard Worker    mm = mat4x4<f32>(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
37*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp1 = (-1.0 * testMatrix4x4);
38*c8dee2aaSAndroid Build Coastguard Worker    return (all(m[0] == _skTemp1[0]) && all(m[1] == _skTemp1[1]) && all(m[2] == _skTemp1[2]) && all(m[3] == _skTemp1[3])) && (all(mm[0] == z[0]) && all(mm[1] == z[1]) && all(mm[2] == z[2]) && all(mm[3] == z[3]));
39*c8dee2aaSAndroid Build Coastguard Worker  }
40*c8dee2aaSAndroid Build Coastguard Worker}
41*c8dee2aaSAndroid Build Coastguard Workerfn _skslMain(coords: vec2<f32>) -> vec4<f32> {
42*c8dee2aaSAndroid Build Coastguard Worker  {
43*c8dee2aaSAndroid Build Coastguard Worker    var _0_m: mat2x2<f32>;
44*c8dee2aaSAndroid Build Coastguard Worker    var _1_mm: mat2x2<f32>;
45*c8dee2aaSAndroid Build Coastguard Worker    const _3_z: mat2x2<f32> = mat2x2<f32>(0.0, 0.0, 0.0, 0.0);
46*c8dee2aaSAndroid Build Coastguard Worker    _0_m = _globalUniforms.testMatrix2x2;
47*c8dee2aaSAndroid Build Coastguard Worker    _0_m = _globalUniforms.testMatrix2x2;
48*c8dee2aaSAndroid Build Coastguard Worker    _0_m = (-1.0 * _0_m);
49*c8dee2aaSAndroid Build Coastguard Worker    _1_mm = mat2x2<f32>(0.0, 0.0, 0.0, 0.0);
50*c8dee2aaSAndroid Build Coastguard Worker    _1_mm = mat2x2<f32>(0.0, 0.0, 0.0, 0.0);
51*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp2: vec4<f32>;
52*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp3: bool;
53*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp4: bool;
54*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp5 = (-1.0 * _globalUniforms.testMatrix2x2);
55*c8dee2aaSAndroid Build Coastguard Worker    if (all(_0_m[0] == _skTemp5[0]) && all(_0_m[1] == _skTemp5[1])) && (all(_1_mm[0] == _3_z[0]) && all(_1_mm[1] == _3_z[1])) {
56*c8dee2aaSAndroid Build Coastguard Worker      let _skTemp6 = test_mat3_mat3_b();
57*c8dee2aaSAndroid Build Coastguard Worker      _skTemp4 = _skTemp6;
58*c8dee2aaSAndroid Build Coastguard Worker    } else {
59*c8dee2aaSAndroid Build Coastguard Worker      _skTemp4 = false;
60*c8dee2aaSAndroid Build Coastguard Worker    }
61*c8dee2aaSAndroid Build Coastguard Worker    if _skTemp4 {
62*c8dee2aaSAndroid Build Coastguard Worker      let _skTemp7 = test_mat4_mat4_b();
63*c8dee2aaSAndroid Build Coastguard Worker      _skTemp3 = _skTemp7;
64*c8dee2aaSAndroid Build Coastguard Worker    } else {
65*c8dee2aaSAndroid Build Coastguard Worker      _skTemp3 = false;
66*c8dee2aaSAndroid Build Coastguard Worker    }
67*c8dee2aaSAndroid Build Coastguard Worker    if _skTemp3 {
68*c8dee2aaSAndroid Build Coastguard Worker      _skTemp2 = _globalUniforms.colorGreen;
69*c8dee2aaSAndroid Build Coastguard Worker    } else {
70*c8dee2aaSAndroid Build Coastguard Worker      _skTemp2 = _globalUniforms.colorRed;
71*c8dee2aaSAndroid Build Coastguard Worker    }
72*c8dee2aaSAndroid Build Coastguard Worker    return _skTemp2;
73*c8dee2aaSAndroid Build Coastguard Worker  }
74*c8dee2aaSAndroid Build Coastguard Worker}
75*c8dee2aaSAndroid Build Coastguard Worker@fragment fn main(@location(0) _coords: vec2<f32>) -> @location(0) vec4<f32> {
76*c8dee2aaSAndroid Build Coastguard Worker  return _skslMain(_coords);
77*c8dee2aaSAndroid Build Coastguard Worker}
78