xref: /aosp_15_r20/external/skia/tests/sksl/folding/MatrixScalarNoOpFolding.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_no_op_scalar_X_mat2_b() -> bool {
13*c8dee2aaSAndroid Build Coastguard Worker  {
14*c8dee2aaSAndroid Build Coastguard Worker    var m: mat2x2<f32>;
15*c8dee2aaSAndroid Build Coastguard Worker    var mm: mat2x2<f32>;
16*c8dee2aaSAndroid Build Coastguard Worker    const z: mat2x2<f32> = mat2x2<f32>(0.0, 0.0, 0.0, 0.0);
17*c8dee2aaSAndroid Build Coastguard Worker    m = _globalUniforms.testMatrix2x2;
18*c8dee2aaSAndroid Build Coastguard Worker    m = _globalUniforms.testMatrix2x2;
19*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _globalUniforms.testMatrix2x2[0]) || any(m[1] != _globalUniforms.testMatrix2x2[1])) {
20*c8dee2aaSAndroid Build Coastguard Worker      return false;
21*c8dee2aaSAndroid Build Coastguard Worker    }
22*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _globalUniforms.testMatrix2x2[0]) || any(m[1] != _globalUniforms.testMatrix2x2[1])) {
23*c8dee2aaSAndroid Build Coastguard Worker      return false;
24*c8dee2aaSAndroid Build Coastguard Worker    }
25*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _globalUniforms.testMatrix2x2[0]) || any(m[1] != _globalUniforms.testMatrix2x2[1])) {
26*c8dee2aaSAndroid Build Coastguard Worker      return false;
27*c8dee2aaSAndroid Build Coastguard Worker    }
28*c8dee2aaSAndroid Build Coastguard Worker    m = (-1.0 * m);
29*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp0 = (-1.0 * _globalUniforms.testMatrix2x2);
30*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _skTemp0[0]) || any(m[1] != _skTemp0[1])) {
31*c8dee2aaSAndroid Build Coastguard Worker      return false;
32*c8dee2aaSAndroid Build Coastguard Worker    }
33*c8dee2aaSAndroid Build Coastguard Worker    mm = mat2x2<f32>(0.0, 0.0, 0.0, 0.0);
34*c8dee2aaSAndroid Build Coastguard Worker    mm = mat2x2<f32>(0.0, 0.0, 0.0, 0.0);
35*c8dee2aaSAndroid Build Coastguard Worker    return (all(mm[0] == z[0]) && all(mm[1] == z[1]));
36*c8dee2aaSAndroid Build Coastguard Worker  }
37*c8dee2aaSAndroid Build Coastguard Worker}
38*c8dee2aaSAndroid Build Coastguard Workerfn test_no_op_scalar_X_mat3_b() -> bool {
39*c8dee2aaSAndroid Build Coastguard Worker  {
40*c8dee2aaSAndroid Build Coastguard Worker    var m: mat3x3<f32>;
41*c8dee2aaSAndroid Build Coastguard Worker    var mm: mat3x3<f32>;
42*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);
43*c8dee2aaSAndroid Build Coastguard Worker    m = _globalUniforms.testMatrix3x3;
44*c8dee2aaSAndroid Build Coastguard Worker    m = _globalUniforms.testMatrix3x3;
45*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _globalUniforms.testMatrix3x3[0]) || any(m[1] != _globalUniforms.testMatrix3x3[1]) || any(m[2] != _globalUniforms.testMatrix3x3[2])) {
46*c8dee2aaSAndroid Build Coastguard Worker      return false;
47*c8dee2aaSAndroid Build Coastguard Worker    }
48*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _globalUniforms.testMatrix3x3[0]) || any(m[1] != _globalUniforms.testMatrix3x3[1]) || any(m[2] != _globalUniforms.testMatrix3x3[2])) {
49*c8dee2aaSAndroid Build Coastguard Worker      return false;
50*c8dee2aaSAndroid Build Coastguard Worker    }
51*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _globalUniforms.testMatrix3x3[0]) || any(m[1] != _globalUniforms.testMatrix3x3[1]) || any(m[2] != _globalUniforms.testMatrix3x3[2])) {
52*c8dee2aaSAndroid Build Coastguard Worker      return false;
53*c8dee2aaSAndroid Build Coastguard Worker    }
54*c8dee2aaSAndroid Build Coastguard Worker    m = (-1.0 * m);
55*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp1 = (-1.0 * _globalUniforms.testMatrix3x3);
56*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _skTemp1[0]) || any(m[1] != _skTemp1[1]) || any(m[2] != _skTemp1[2])) {
57*c8dee2aaSAndroid Build Coastguard Worker      return false;
58*c8dee2aaSAndroid Build Coastguard Worker    }
59*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);
60*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);
61*c8dee2aaSAndroid Build Coastguard Worker    return (all(mm[0] == z[0]) && all(mm[1] == z[1]) && all(mm[2] == z[2]));
62*c8dee2aaSAndroid Build Coastguard Worker  }
63*c8dee2aaSAndroid Build Coastguard Worker}
64*c8dee2aaSAndroid Build Coastguard Workerfn test_no_op_scalar_X_mat4_b() -> bool {
65*c8dee2aaSAndroid Build Coastguard Worker  {
66*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]);
67*c8dee2aaSAndroid Build Coastguard Worker    var m: mat4x4<f32>;
68*c8dee2aaSAndroid Build Coastguard Worker    var mm: mat4x4<f32>;
69*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);
70*c8dee2aaSAndroid Build Coastguard Worker    m = testMatrix4x4;
71*c8dee2aaSAndroid Build Coastguard Worker    m = testMatrix4x4;
72*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != testMatrix4x4[0]) || any(m[1] != testMatrix4x4[1]) || any(m[2] != testMatrix4x4[2]) || any(m[3] != testMatrix4x4[3])) {
73*c8dee2aaSAndroid Build Coastguard Worker      return false;
74*c8dee2aaSAndroid Build Coastguard Worker    }
75*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != testMatrix4x4[0]) || any(m[1] != testMatrix4x4[1]) || any(m[2] != testMatrix4x4[2]) || any(m[3] != testMatrix4x4[3])) {
76*c8dee2aaSAndroid Build Coastguard Worker      return false;
77*c8dee2aaSAndroid Build Coastguard Worker    }
78*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != testMatrix4x4[0]) || any(m[1] != testMatrix4x4[1]) || any(m[2] != testMatrix4x4[2]) || any(m[3] != testMatrix4x4[3])) {
79*c8dee2aaSAndroid Build Coastguard Worker      return false;
80*c8dee2aaSAndroid Build Coastguard Worker    }
81*c8dee2aaSAndroid Build Coastguard Worker    m = (-1.0 * m);
82*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp2 = (-1.0 * testMatrix4x4);
83*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _skTemp2[0]) || any(m[1] != _skTemp2[1]) || any(m[2] != _skTemp2[2]) || any(m[3] != _skTemp2[3])) {
84*c8dee2aaSAndroid Build Coastguard Worker      return false;
85*c8dee2aaSAndroid Build Coastguard Worker    }
86*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);
87*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);
88*c8dee2aaSAndroid Build Coastguard Worker    return (all(mm[0] == z[0]) && all(mm[1] == z[1]) && all(mm[2] == z[2]) && all(mm[3] == z[3]));
89*c8dee2aaSAndroid Build Coastguard Worker  }
90*c8dee2aaSAndroid Build Coastguard Worker}
91*c8dee2aaSAndroid Build Coastguard Workerfn test_no_op_mat2_X_scalar_b() -> bool {
92*c8dee2aaSAndroid Build Coastguard Worker  {
93*c8dee2aaSAndroid Build Coastguard Worker    var m: mat2x2<f32>;
94*c8dee2aaSAndroid Build Coastguard Worker    var mm: mat2x2<f32>;
95*c8dee2aaSAndroid Build Coastguard Worker    const z: mat2x2<f32> = mat2x2<f32>(0.0, 0.0, 0.0, 0.0);
96*c8dee2aaSAndroid Build Coastguard Worker    const s: mat2x2<f32> = mat2x2<f32>(vec4<f32>(1.0)[0], vec4<f32>(1.0)[1], vec4<f32>(1.0)[2], vec4<f32>(1.0)[3]);
97*c8dee2aaSAndroid Build Coastguard Worker    let scalar: f32 = _globalUniforms.testInputs.x;
98*c8dee2aaSAndroid Build Coastguard Worker    m = mat2x2<f32>(scalar, 0.0, 0.0, scalar);
99*c8dee2aaSAndroid Build Coastguard Worker    m = mat2x2<f32>(scalar, 0.0, 0.0, scalar);
100*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp3 = mat2x2<f32>(scalar, 0.0, 0.0, scalar);
101*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _skTemp3[0]) || any(m[1] != _skTemp3[1])) {
102*c8dee2aaSAndroid Build Coastguard Worker      return false;
103*c8dee2aaSAndroid Build Coastguard Worker    }
104*c8dee2aaSAndroid Build Coastguard Worker    m = mat2x2<f32>(scalar / s[0], scalar / s[1]);
105*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp4 = mat2x2<f32>(scalar, scalar, scalar, scalar);
106*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _skTemp4[0]) || any(m[1] != _skTemp4[1])) {
107*c8dee2aaSAndroid Build Coastguard Worker      return false;
108*c8dee2aaSAndroid Build Coastguard Worker    }
109*c8dee2aaSAndroid Build Coastguard Worker    m = mat2x2<f32>(scalar + z[0], scalar + z[1]);
110*c8dee2aaSAndroid Build Coastguard Worker    m = mat2x2<f32>(z[0] + scalar, z[1] + scalar);
111*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp5 = mat2x2<f32>(scalar, scalar, scalar, scalar);
112*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _skTemp5[0]) || any(m[1] != _skTemp5[1])) {
113*c8dee2aaSAndroid Build Coastguard Worker      return false;
114*c8dee2aaSAndroid Build Coastguard Worker    }
115*c8dee2aaSAndroid Build Coastguard Worker    m = mat2x2<f32>(scalar - z[0], scalar - z[1]);
116*c8dee2aaSAndroid Build Coastguard Worker    m = mat2x2<f32>(z[0] - scalar, z[1] - scalar);
117*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp6 = (-1.0 * mat2x2<f32>(scalar, scalar, scalar, scalar));
118*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _skTemp6[0]) || any(m[1] != _skTemp6[1])) {
119*c8dee2aaSAndroid Build Coastguard Worker      return false;
120*c8dee2aaSAndroid Build Coastguard Worker    }
121*c8dee2aaSAndroid Build Coastguard Worker    mm = mat2x2<f32>(0.0, 0.0, 0.0, 0.0);
122*c8dee2aaSAndroid Build Coastguard Worker    mm = mat2x2<f32>(0.0, 0.0, 0.0, 0.0);
123*c8dee2aaSAndroid Build Coastguard Worker    return (all(mm[0] == z[0]) && all(mm[1] == z[1]));
124*c8dee2aaSAndroid Build Coastguard Worker  }
125*c8dee2aaSAndroid Build Coastguard Worker}
126*c8dee2aaSAndroid Build Coastguard Workerfn test_no_op_mat3_X_scalar_b() -> bool {
127*c8dee2aaSAndroid Build Coastguard Worker  {
128*c8dee2aaSAndroid Build Coastguard Worker    var m: mat3x3<f32>;
129*c8dee2aaSAndroid Build Coastguard Worker    var mm: mat3x3<f32>;
130*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);
131*c8dee2aaSAndroid Build Coastguard Worker    const s: mat3x3<f32> = mat3x3<f32>(vec3<f32>(1.0)[0], vec3<f32>(1.0)[1], vec3<f32>(1.0)[2], vec3<f32>(1.0)[0], vec3<f32>(1.0)[1], vec3<f32>(1.0)[2], vec3<f32>(1.0)[0], vec3<f32>(1.0)[1], vec3<f32>(1.0)[2]);
132*c8dee2aaSAndroid Build Coastguard Worker    let scalar: f32 = _globalUniforms.testInputs.x;
133*c8dee2aaSAndroid Build Coastguard Worker    let scalar3: vec3<f32> = vec3<f32>(scalar);
134*c8dee2aaSAndroid Build Coastguard Worker    m = mat3x3<f32>(scalar, 0.0, 0.0, 0.0, scalar, 0.0, 0.0, 0.0, scalar);
135*c8dee2aaSAndroid Build Coastguard Worker    m = mat3x3<f32>(scalar, 0.0, 0.0, 0.0, scalar, 0.0, 0.0, 0.0, scalar);
136*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp7 = mat3x3<f32>(scalar, 0.0, 0.0, 0.0, scalar, 0.0, 0.0, 0.0, scalar);
137*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _skTemp7[0]) || any(m[1] != _skTemp7[1]) || any(m[2] != _skTemp7[2])) {
138*c8dee2aaSAndroid Build Coastguard Worker      return false;
139*c8dee2aaSAndroid Build Coastguard Worker    }
140*c8dee2aaSAndroid Build Coastguard Worker    m = mat3x3<f32>(scalar / s[0], scalar / s[1], scalar / s[2]);
141*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp8 = mat3x3<f32>(scalar3[0], scalar3[1], scalar3[2], scalar3[0], scalar3[1], scalar3[2], scalar3[0], scalar3[1], scalar3[2]);
142*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _skTemp8[0]) || any(m[1] != _skTemp8[1]) || any(m[2] != _skTemp8[2])) {
143*c8dee2aaSAndroid Build Coastguard Worker      return false;
144*c8dee2aaSAndroid Build Coastguard Worker    }
145*c8dee2aaSAndroid Build Coastguard Worker    m = mat3x3<f32>(scalar + z[0], scalar + z[1], scalar + z[2]);
146*c8dee2aaSAndroid Build Coastguard Worker    m = mat3x3<f32>(z[0] + scalar, z[1] + scalar, z[2] + scalar);
147*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp9 = mat3x3<f32>(scalar3[0], scalar3[1], scalar3[2], scalar3[0], scalar3[1], scalar3[2], scalar3[0], scalar3[1], scalar3[2]);
148*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _skTemp9[0]) || any(m[1] != _skTemp9[1]) || any(m[2] != _skTemp9[2])) {
149*c8dee2aaSAndroid Build Coastguard Worker      return false;
150*c8dee2aaSAndroid Build Coastguard Worker    }
151*c8dee2aaSAndroid Build Coastguard Worker    m = mat3x3<f32>(scalar - z[0], scalar - z[1], scalar - z[2]);
152*c8dee2aaSAndroid Build Coastguard Worker    m = mat3x3<f32>(z[0] - scalar, z[1] - scalar, z[2] - scalar);
153*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp10 = (-1.0 * mat3x3<f32>(scalar3[0], scalar3[1], scalar3[2], scalar3[0], scalar3[1], scalar3[2], scalar3[0], scalar3[1], scalar3[2]));
154*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _skTemp10[0]) || any(m[1] != _skTemp10[1]) || any(m[2] != _skTemp10[2])) {
155*c8dee2aaSAndroid Build Coastguard Worker      return false;
156*c8dee2aaSAndroid Build Coastguard Worker    }
157*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);
158*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);
159*c8dee2aaSAndroid Build Coastguard Worker    return (all(mm[0] == z[0]) && all(mm[1] == z[1]) && all(mm[2] == z[2]));
160*c8dee2aaSAndroid Build Coastguard Worker  }
161*c8dee2aaSAndroid Build Coastguard Worker}
162*c8dee2aaSAndroid Build Coastguard Workerfn test_no_op_mat4_X_scalar_b() -> bool {
163*c8dee2aaSAndroid Build Coastguard Worker  {
164*c8dee2aaSAndroid Build Coastguard Worker    var m: mat4x4<f32>;
165*c8dee2aaSAndroid Build Coastguard Worker    var mm: mat4x4<f32>;
166*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);
167*c8dee2aaSAndroid Build Coastguard Worker    const s: mat4x4<f32> = mat4x4<f32>(vec4<f32>(1.0)[0], vec4<f32>(1.0)[1], vec4<f32>(1.0)[2], vec4<f32>(1.0)[3], vec4<f32>(1.0)[0], vec4<f32>(1.0)[1], vec4<f32>(1.0)[2], vec4<f32>(1.0)[3], vec4<f32>(1.0)[0], vec4<f32>(1.0)[1], vec4<f32>(1.0)[2], vec4<f32>(1.0)[3], vec4<f32>(1.0)[0], vec4<f32>(1.0)[1], vec4<f32>(1.0)[2], vec4<f32>(1.0)[3]);
168*c8dee2aaSAndroid Build Coastguard Worker    let scalar: f32 = _globalUniforms.testInputs.x;
169*c8dee2aaSAndroid Build Coastguard Worker    let scalar4: vec4<f32> = vec4<f32>(scalar);
170*c8dee2aaSAndroid Build Coastguard Worker    m = mat4x4<f32>(scalar, 0.0, 0.0, 0.0, 0.0, scalar, 0.0, 0.0, 0.0, 0.0, scalar, 0.0, 0.0, 0.0, 0.0, scalar);
171*c8dee2aaSAndroid Build Coastguard Worker    m = mat4x4<f32>(scalar, 0.0, 0.0, 0.0, 0.0, scalar, 0.0, 0.0, 0.0, 0.0, scalar, 0.0, 0.0, 0.0, 0.0, scalar);
172*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp11 = mat4x4<f32>(scalar, 0.0, 0.0, 0.0, 0.0, scalar, 0.0, 0.0, 0.0, 0.0, scalar, 0.0, 0.0, 0.0, 0.0, scalar);
173*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _skTemp11[0]) || any(m[1] != _skTemp11[1]) || any(m[2] != _skTemp11[2]) || any(m[3] != _skTemp11[3])) {
174*c8dee2aaSAndroid Build Coastguard Worker      return false;
175*c8dee2aaSAndroid Build Coastguard Worker    }
176*c8dee2aaSAndroid Build Coastguard Worker    m = mat4x4<f32>(scalar / s[0], scalar / s[1], scalar / s[2], scalar / s[3]);
177*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp12 = mat4x4<f32>(scalar4[0], scalar4[1], scalar4[2], scalar4[3], scalar4[0], scalar4[1], scalar4[2], scalar4[3], scalar4[0], scalar4[1], scalar4[2], scalar4[3], scalar4[0], scalar4[1], scalar4[2], scalar4[3]);
178*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _skTemp12[0]) || any(m[1] != _skTemp12[1]) || any(m[2] != _skTemp12[2]) || any(m[3] != _skTemp12[3])) {
179*c8dee2aaSAndroid Build Coastguard Worker      return false;
180*c8dee2aaSAndroid Build Coastguard Worker    }
181*c8dee2aaSAndroid Build Coastguard Worker    m = mat4x4<f32>(scalar + z[0], scalar + z[1], scalar + z[2], scalar + z[3]);
182*c8dee2aaSAndroid Build Coastguard Worker    m = mat4x4<f32>(z[0] + scalar, z[1] + scalar, z[2] + scalar, z[3] + scalar);
183*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp13 = mat4x4<f32>(scalar4[0], scalar4[1], scalar4[2], scalar4[3], scalar4[0], scalar4[1], scalar4[2], scalar4[3], scalar4[0], scalar4[1], scalar4[2], scalar4[3], scalar4[0], scalar4[1], scalar4[2], scalar4[3]);
184*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _skTemp13[0]) || any(m[1] != _skTemp13[1]) || any(m[2] != _skTemp13[2]) || any(m[3] != _skTemp13[3])) {
185*c8dee2aaSAndroid Build Coastguard Worker      return false;
186*c8dee2aaSAndroid Build Coastguard Worker    }
187*c8dee2aaSAndroid Build Coastguard Worker    m = mat4x4<f32>(scalar - z[0], scalar - z[1], scalar - z[2], scalar - z[3]);
188*c8dee2aaSAndroid Build Coastguard Worker    m = mat4x4<f32>(z[0] - scalar, z[1] - scalar, z[2] - scalar, z[3] - scalar);
189*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp14 = (-1.0 * mat4x4<f32>(scalar4[0], scalar4[1], scalar4[2], scalar4[3], scalar4[0], scalar4[1], scalar4[2], scalar4[3], scalar4[0], scalar4[1], scalar4[2], scalar4[3], scalar4[0], scalar4[1], scalar4[2], scalar4[3]));
190*c8dee2aaSAndroid Build Coastguard Worker    if (any(m[0] != _skTemp14[0]) || any(m[1] != _skTemp14[1]) || any(m[2] != _skTemp14[2]) || any(m[3] != _skTemp14[3])) {
191*c8dee2aaSAndroid Build Coastguard Worker      return false;
192*c8dee2aaSAndroid Build Coastguard Worker    }
193*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);
194*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);
195*c8dee2aaSAndroid Build Coastguard Worker    return (all(mm[0] == z[0]) && all(mm[1] == z[1]) && all(mm[2] == z[2]) && all(mm[3] == z[3]));
196*c8dee2aaSAndroid Build Coastguard Worker  }
197*c8dee2aaSAndroid Build Coastguard Worker}
198*c8dee2aaSAndroid Build Coastguard Workerfn _skslMain(coords: vec2<f32>) -> vec4<f32> {
199*c8dee2aaSAndroid Build Coastguard Worker  {
200*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp15: vec4<f32>;
201*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp16: bool;
202*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp17: bool;
203*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp18: bool;
204*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp19: bool;
205*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp20: bool;
206*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp21 = test_no_op_scalar_X_mat2_b();
207*c8dee2aaSAndroid Build Coastguard Worker    if _skTemp21 {
208*c8dee2aaSAndroid Build Coastguard Worker      let _skTemp22 = test_no_op_scalar_X_mat3_b();
209*c8dee2aaSAndroid Build Coastguard Worker      _skTemp20 = _skTemp22;
210*c8dee2aaSAndroid Build Coastguard Worker    } else {
211*c8dee2aaSAndroid Build Coastguard Worker      _skTemp20 = false;
212*c8dee2aaSAndroid Build Coastguard Worker    }
213*c8dee2aaSAndroid Build Coastguard Worker    if _skTemp20 {
214*c8dee2aaSAndroid Build Coastguard Worker      let _skTemp23 = test_no_op_scalar_X_mat4_b();
215*c8dee2aaSAndroid Build Coastguard Worker      _skTemp19 = _skTemp23;
216*c8dee2aaSAndroid Build Coastguard Worker    } else {
217*c8dee2aaSAndroid Build Coastguard Worker      _skTemp19 = false;
218*c8dee2aaSAndroid Build Coastguard Worker    }
219*c8dee2aaSAndroid Build Coastguard Worker    if _skTemp19 {
220*c8dee2aaSAndroid Build Coastguard Worker      let _skTemp24 = test_no_op_mat2_X_scalar_b();
221*c8dee2aaSAndroid Build Coastguard Worker      _skTemp18 = _skTemp24;
222*c8dee2aaSAndroid Build Coastguard Worker    } else {
223*c8dee2aaSAndroid Build Coastguard Worker      _skTemp18 = false;
224*c8dee2aaSAndroid Build Coastguard Worker    }
225*c8dee2aaSAndroid Build Coastguard Worker    if _skTemp18 {
226*c8dee2aaSAndroid Build Coastguard Worker      let _skTemp25 = test_no_op_mat3_X_scalar_b();
227*c8dee2aaSAndroid Build Coastguard Worker      _skTemp17 = _skTemp25;
228*c8dee2aaSAndroid Build Coastguard Worker    } else {
229*c8dee2aaSAndroid Build Coastguard Worker      _skTemp17 = false;
230*c8dee2aaSAndroid Build Coastguard Worker    }
231*c8dee2aaSAndroid Build Coastguard Worker    if _skTemp17 {
232*c8dee2aaSAndroid Build Coastguard Worker      let _skTemp26 = test_no_op_mat4_X_scalar_b();
233*c8dee2aaSAndroid Build Coastguard Worker      _skTemp16 = _skTemp26;
234*c8dee2aaSAndroid Build Coastguard Worker    } else {
235*c8dee2aaSAndroid Build Coastguard Worker      _skTemp16 = false;
236*c8dee2aaSAndroid Build Coastguard Worker    }
237*c8dee2aaSAndroid Build Coastguard Worker    if _skTemp16 {
238*c8dee2aaSAndroid Build Coastguard Worker      _skTemp15 = _globalUniforms.colorGreen;
239*c8dee2aaSAndroid Build Coastguard Worker    } else {
240*c8dee2aaSAndroid Build Coastguard Worker      _skTemp15 = _globalUniforms.colorRed;
241*c8dee2aaSAndroid Build Coastguard Worker    }
242*c8dee2aaSAndroid Build Coastguard Worker    return _skTemp15;
243*c8dee2aaSAndroid Build Coastguard Worker  }
244*c8dee2aaSAndroid Build Coastguard Worker}
245*c8dee2aaSAndroid Build Coastguard Worker@fragment fn main(@location(0) _coords: vec2<f32>) -> @location(0) vec4<f32> {
246*c8dee2aaSAndroid Build Coastguard Worker  return _skslMain(_coords);
247*c8dee2aaSAndroid Build Coastguard Worker}
248