1e5c31af7Sopenharmony_ci#X1. Type: float[5] // An array type with 5 elements 2e5c31af7Sopenharmony_ci#X2. Return value: float[5] func() { ... } // Function with a 5-element array return value 3e5c31af7Sopenharmony_ci#X3. Array constructor: float[3] (1.0, 2.0, 5.5) // 3-element array with given elements 4e5c31af7Sopenharmony_ci# // Fails with array of matrices! 5e5c31af7Sopenharmony_ci#X4. As unnamed parameter: void func(float[5]); 6e5c31af7Sopenharmony_ci#X5. Variable declaration: float[5] a; // Equivalent to float a[5]; (?) 7e5c31af7Sopenharmony_ci#X6. Empty brackets: float x[] = float[] (1.0, 2.0, 3.0); // Size of x is 3 8e5c31af7Sopenharmony_ci# float y[] = float[3] (1.0, 2.0, 3.0); // Size of y is 3 (equivalent) 9e5c31af7Sopenharmony_ci# float z[] = y; // Size of z is 3 10e5c31af7Sopenharmony_ci#X7. Testing that 2-dimensional arrays don't work: float a[5][3]; // Illegal 11e5c31af7Sopenharmony_ci# float[5] a[3]; // Illegal 12e5c31af7Sopenharmony_ci#X8. Testing that array declaration with dynamic variables as array size won't work. 13e5c31af7Sopenharmony_ci#X9. Testing length() operator: z.length(); // Returns 3 for z defined before 14e5c31af7Sopenharmony_ci#X10. Test C/C++ style {}-constructor 15e5c31af7Sopenharmony_ci#X11. Test struct arrays 16e5c31af7Sopenharmony_ci#X12. Test array element access at initialization with const/dynamic values 17e5c31af7Sopenharmony_ci 18e5c31af7Sopenharmony_cigroup constructor "Array constructors" 19e5c31af7Sopenharmony_ci 20e5c31af7Sopenharmony_ci case float3 21e5c31af7Sopenharmony_ci version 300 es 22e5c31af7Sopenharmony_ci values 23e5c31af7Sopenharmony_ci { 24e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(7.4, -1.0, 2.0) | vec3(3.0, 1.6, -2.0) ]; 25e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(2.0, 0.5, 1.0) | vec3(2.0, 7.4, -1.0) | vec3(-2.0, 3.0, 1.6) ]; 26e5c31af7Sopenharmony_ci } 27e5c31af7Sopenharmony_ci 28e5c31af7Sopenharmony_ci both "" 29e5c31af7Sopenharmony_ci #version 300 es 30e5c31af7Sopenharmony_ci precision mediump float; 31e5c31af7Sopenharmony_ci ${DECLARATIONS} 32e5c31af7Sopenharmony_ci 33e5c31af7Sopenharmony_ci void main() 34e5c31af7Sopenharmony_ci { 35e5c31af7Sopenharmony_ci ${SETUP} 36e5c31af7Sopenharmony_ci float[3] x; 37e5c31af7Sopenharmony_ci x = float[3] (in0.z, in0.x, in0.y); 38e5c31af7Sopenharmony_ci out0 = vec3(x[0], x[1], x[2]); 39e5c31af7Sopenharmony_ci ${OUTPUT} 40e5c31af7Sopenharmony_ci } 41e5c31af7Sopenharmony_ci "" 42e5c31af7Sopenharmony_ci end 43e5c31af7Sopenharmony_ci 44e5c31af7Sopenharmony_ci case float4 45e5c31af7Sopenharmony_ci version 300 es 46e5c31af7Sopenharmony_ci values 47e5c31af7Sopenharmony_ci { 48e5c31af7Sopenharmony_ci input vec4 in0 = [ vec4(0.5, 1.0, 2.0, 0.2) | vec4(7.4, -1.0, 2.0, -1.3) | vec4(3.0, 1.6, -2.0, 0.5) ]; 49e5c31af7Sopenharmony_ci output vec4 out0 = [ vec4(2.0, 0.5, 0.2, 1.0) | vec4(2.0, 7.4, -1.3, -1.0) | vec4(-2.0, 3.0, 0.5, 1.6) ]; 50e5c31af7Sopenharmony_ci } 51e5c31af7Sopenharmony_ci 52e5c31af7Sopenharmony_ci both "" 53e5c31af7Sopenharmony_ci #version 300 es 54e5c31af7Sopenharmony_ci precision mediump float; 55e5c31af7Sopenharmony_ci ${DECLARATIONS} 56e5c31af7Sopenharmony_ci 57e5c31af7Sopenharmony_ci void main() 58e5c31af7Sopenharmony_ci { 59e5c31af7Sopenharmony_ci ${SETUP} 60e5c31af7Sopenharmony_ci float[4] x; 61e5c31af7Sopenharmony_ci x = float[4] (in0.z, in0.x, in0.w, in0.y); 62e5c31af7Sopenharmony_ci out0 = vec4(x[0], x[1], x[2], x[3]); 63e5c31af7Sopenharmony_ci ${OUTPUT} 64e5c31af7Sopenharmony_ci } 65e5c31af7Sopenharmony_ci "" 66e5c31af7Sopenharmony_ci end 67e5c31af7Sopenharmony_ci 68e5c31af7Sopenharmony_ci case int3 69e5c31af7Sopenharmony_ci version 300 es 70e5c31af7Sopenharmony_ci values 71e5c31af7Sopenharmony_ci { 72e5c31af7Sopenharmony_ci input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(7, -1, 2) | ivec3(3, 1, -2) ]; 73e5c31af7Sopenharmony_ci output ivec3 out0 = [ ivec3(2, 0, 1) | ivec3(2, 7, -1) | ivec3(-2, 3, 1) ]; 74e5c31af7Sopenharmony_ci } 75e5c31af7Sopenharmony_ci 76e5c31af7Sopenharmony_ci both "" 77e5c31af7Sopenharmony_ci #version 300 es 78e5c31af7Sopenharmony_ci precision mediump int; 79e5c31af7Sopenharmony_ci precision mediump float; 80e5c31af7Sopenharmony_ci ${DECLARATIONS} 81e5c31af7Sopenharmony_ci 82e5c31af7Sopenharmony_ci void main() 83e5c31af7Sopenharmony_ci { 84e5c31af7Sopenharmony_ci ${SETUP} 85e5c31af7Sopenharmony_ci int[3] x; 86e5c31af7Sopenharmony_ci x = int[3] (in0.z, in0.x, in0.y); 87e5c31af7Sopenharmony_ci out0 = ivec3(x[0], x[1], x[2]); 88e5c31af7Sopenharmony_ci ${OUTPUT} 89e5c31af7Sopenharmony_ci } 90e5c31af7Sopenharmony_ci "" 91e5c31af7Sopenharmony_ci end 92e5c31af7Sopenharmony_ci 93e5c31af7Sopenharmony_ci case int4 94e5c31af7Sopenharmony_ci version 300 es 95e5c31af7Sopenharmony_ci values 96e5c31af7Sopenharmony_ci { 97e5c31af7Sopenharmony_ci input ivec4 in0 = [ ivec4(0, 1, 2, 0) | ivec4(7, -1, 2, -1) | ivec4(3, 1, -2, 0) ]; 98e5c31af7Sopenharmony_ci output ivec4 out0 = [ ivec4(2, 0, 0, 1) | ivec4(2, 7, -1, -1) | ivec4(-2, 3, 0, 1) ]; 99e5c31af7Sopenharmony_ci } 100e5c31af7Sopenharmony_ci 101e5c31af7Sopenharmony_ci both "" 102e5c31af7Sopenharmony_ci #version 300 es 103e5c31af7Sopenharmony_ci precision mediump int; 104e5c31af7Sopenharmony_ci precision mediump float; 105e5c31af7Sopenharmony_ci ${DECLARATIONS} 106e5c31af7Sopenharmony_ci 107e5c31af7Sopenharmony_ci void main() 108e5c31af7Sopenharmony_ci { 109e5c31af7Sopenharmony_ci ${SETUP} 110e5c31af7Sopenharmony_ci int[4] x; 111e5c31af7Sopenharmony_ci x = int[4] (in0.z, in0.x, in0.w, in0.y); 112e5c31af7Sopenharmony_ci out0 = ivec4(x[0], x[1], x[2], x[3]); 113e5c31af7Sopenharmony_ci ${OUTPUT} 114e5c31af7Sopenharmony_ci } 115e5c31af7Sopenharmony_ci "" 116e5c31af7Sopenharmony_ci end 117e5c31af7Sopenharmony_ci 118e5c31af7Sopenharmony_ci case bool3 119e5c31af7Sopenharmony_ci version 300 es 120e5c31af7Sopenharmony_ci values 121e5c31af7Sopenharmony_ci { 122e5c31af7Sopenharmony_ci input bvec3 in0 = [ bvec3(true, true, false) ]; 123e5c31af7Sopenharmony_ci output bvec3 out0 = [ bvec3(false, true, true) ]; 124e5c31af7Sopenharmony_ci } 125e5c31af7Sopenharmony_ci 126e5c31af7Sopenharmony_ci both "" 127e5c31af7Sopenharmony_ci #version 300 es 128e5c31af7Sopenharmony_ci precision mediump float; 129e5c31af7Sopenharmony_ci ${DECLARATIONS} 130e5c31af7Sopenharmony_ci 131e5c31af7Sopenharmony_ci void main() 132e5c31af7Sopenharmony_ci { 133e5c31af7Sopenharmony_ci ${SETUP} 134e5c31af7Sopenharmony_ci bool[3] x; 135e5c31af7Sopenharmony_ci x = bool[3] (in0.z, in0.x, in0.y); 136e5c31af7Sopenharmony_ci out0 = bvec3(x[0], x[1], x[2]); 137e5c31af7Sopenharmony_ci ${OUTPUT} 138e5c31af7Sopenharmony_ci } 139e5c31af7Sopenharmony_ci "" 140e5c31af7Sopenharmony_ci end 141e5c31af7Sopenharmony_ci 142e5c31af7Sopenharmony_ci case bool4 143e5c31af7Sopenharmony_ci version 300 es 144e5c31af7Sopenharmony_ci values 145e5c31af7Sopenharmony_ci { 146e5c31af7Sopenharmony_ci input bvec4 in0 = [ bvec4(true, true, false, false) ]; 147e5c31af7Sopenharmony_ci output bvec4 out0 = [ bvec4(false, true, true, false) ]; 148e5c31af7Sopenharmony_ci } 149e5c31af7Sopenharmony_ci 150e5c31af7Sopenharmony_ci both "" 151e5c31af7Sopenharmony_ci #version 300 es 152e5c31af7Sopenharmony_ci precision mediump float; 153e5c31af7Sopenharmony_ci ${DECLARATIONS} 154e5c31af7Sopenharmony_ci 155e5c31af7Sopenharmony_ci void main() 156e5c31af7Sopenharmony_ci { 157e5c31af7Sopenharmony_ci ${SETUP} 158e5c31af7Sopenharmony_ci bool[4] x; 159e5c31af7Sopenharmony_ci x = bool[4] (in0.z, in0.x, in0.y, in0.w); 160e5c31af7Sopenharmony_ci out0 = bvec4(x[0], x[1], x[2], x[3]); 161e5c31af7Sopenharmony_ci ${OUTPUT} 162e5c31af7Sopenharmony_ci } 163e5c31af7Sopenharmony_ci "" 164e5c31af7Sopenharmony_ci end 165e5c31af7Sopenharmony_ci 166e5c31af7Sopenharmony_ci case struct3 167e5c31af7Sopenharmony_ci version 300 es 168e5c31af7Sopenharmony_ci values 169e5c31af7Sopenharmony_ci { 170e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; 171e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(2.0, -0.5, -1.0) ]; 172e5c31af7Sopenharmony_ci } 173e5c31af7Sopenharmony_ci 174e5c31af7Sopenharmony_ci both "" 175e5c31af7Sopenharmony_ci #version 300 es 176e5c31af7Sopenharmony_ci precision mediump float; 177e5c31af7Sopenharmony_ci ${DECLARATIONS} 178e5c31af7Sopenharmony_ci 179e5c31af7Sopenharmony_ci 180e5c31af7Sopenharmony_ci 181e5c31af7Sopenharmony_ci void main() 182e5c31af7Sopenharmony_ci { 183e5c31af7Sopenharmony_ci ${SETUP} 184e5c31af7Sopenharmony_ci 185e5c31af7Sopenharmony_ci struct test 186e5c31af7Sopenharmony_ci { 187e5c31af7Sopenharmony_ci float f; 188e5c31af7Sopenharmony_ci vec3 v; 189e5c31af7Sopenharmony_ci }; 190e5c31af7Sopenharmony_ci 191e5c31af7Sopenharmony_ci test a = test(in0.z, vec3(in0.x, in0.y, in0.z)); 192e5c31af7Sopenharmony_ci test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y)); 193e5c31af7Sopenharmony_ci test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x)); 194e5c31af7Sopenharmony_ci 195e5c31af7Sopenharmony_ci test[3] x = test[3] (a, b, c); 196e5c31af7Sopenharmony_ci 197e5c31af7Sopenharmony_ci out0 = vec3(x[0].f, x[1].v.y, x[2].v.x); 198e5c31af7Sopenharmony_ci ${OUTPUT} 199e5c31af7Sopenharmony_ci } 200e5c31af7Sopenharmony_ci "" 201e5c31af7Sopenharmony_ci end 202e5c31af7Sopenharmony_ci 203e5c31af7Sopenharmony_ci case struct4 204e5c31af7Sopenharmony_ci version 300 es 205e5c31af7Sopenharmony_ci values 206e5c31af7Sopenharmony_ci { 207e5c31af7Sopenharmony_ci input vec4 in0 = [ vec4(0.5, 1.0, 2.0, 1.5) ]; 208e5c31af7Sopenharmony_ci output vec4 out0 = [ vec4(2.0, -0.5, -1.0, -1.5) ]; 209e5c31af7Sopenharmony_ci } 210e5c31af7Sopenharmony_ci 211e5c31af7Sopenharmony_ci both "" 212e5c31af7Sopenharmony_ci #version 300 es 213e5c31af7Sopenharmony_ci precision mediump float; 214e5c31af7Sopenharmony_ci ${DECLARATIONS} 215e5c31af7Sopenharmony_ci 216e5c31af7Sopenharmony_ci 217e5c31af7Sopenharmony_ci void main() 218e5c31af7Sopenharmony_ci { 219e5c31af7Sopenharmony_ci ${SETUP} 220e5c31af7Sopenharmony_ci 221e5c31af7Sopenharmony_ci 222e5c31af7Sopenharmony_ci struct test 223e5c31af7Sopenharmony_ci { 224e5c31af7Sopenharmony_ci float f; 225e5c31af7Sopenharmony_ci vec3 v; 226e5c31af7Sopenharmony_ci }; 227e5c31af7Sopenharmony_ci 228e5c31af7Sopenharmony_ci test a = test(in0.z, vec3(in0.x, in0.y, in0.z)); 229e5c31af7Sopenharmony_ci test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y)); 230e5c31af7Sopenharmony_ci test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x)); 231e5c31af7Sopenharmony_ci test d = test(-in0.w, vec3(-in0.w, -in0.x, -in0.z)); 232e5c31af7Sopenharmony_ci 233e5c31af7Sopenharmony_ci test[4] x = test[4] (a, b, c, d); 234e5c31af7Sopenharmony_ci 235e5c31af7Sopenharmony_ci out0 = vec4(x[0].f, x[1].v.y, x[2].v.x, x[3].v.x); 236e5c31af7Sopenharmony_ci ${OUTPUT} 237e5c31af7Sopenharmony_ci } 238e5c31af7Sopenharmony_ci "" 239e5c31af7Sopenharmony_ci end 240e5c31af7Sopenharmony_ci 241e5c31af7Sopenharmony_ci 242e5c31af7Sopenharmony_ci case float_vec3 243e5c31af7Sopenharmony_ci version 300 es 244e5c31af7Sopenharmony_ci values 245e5c31af7Sopenharmony_ci { 246e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(7.4, -1.0, 2.0) | vec3(3.0, 1.6, -2.0) ]; 247e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(0.5, -2.0, 1.0) | vec3(7.4, -2.0, -1.0) | vec3(3.0, 2.0, 1.6) ]; 248e5c31af7Sopenharmony_ci } 249e5c31af7Sopenharmony_ci 250e5c31af7Sopenharmony_ci both "" 251e5c31af7Sopenharmony_ci #version 300 es 252e5c31af7Sopenharmony_ci precision mediump float; 253e5c31af7Sopenharmony_ci ${DECLARATIONS} 254e5c31af7Sopenharmony_ci 255e5c31af7Sopenharmony_ci void main() 256e5c31af7Sopenharmony_ci { 257e5c31af7Sopenharmony_ci ${SETUP} 258e5c31af7Sopenharmony_ci 259e5c31af7Sopenharmony_ci vec3[3] x; 260e5c31af7Sopenharmony_ci x = vec3[3] ( vec3(in0.x, in0.y, in0.z) , 261e5c31af7Sopenharmony_ci vec3(-in0.y, -in0.z, -in0.x), 262e5c31af7Sopenharmony_ci vec3(in0.z, in0.x, in0.y) ); 263e5c31af7Sopenharmony_ci out0 = vec3(x[0].x, x[1].y, x[2].z); 264e5c31af7Sopenharmony_ci ${OUTPUT} 265e5c31af7Sopenharmony_ci } 266e5c31af7Sopenharmony_ci "" 267e5c31af7Sopenharmony_ci end 268e5c31af7Sopenharmony_ci 269e5c31af7Sopenharmony_ci case int_vec3 270e5c31af7Sopenharmony_ci version 300 es 271e5c31af7Sopenharmony_ci values 272e5c31af7Sopenharmony_ci { 273e5c31af7Sopenharmony_ci input ivec3 in0 = [ ivec3(5, 1, 2) | ivec3(7, -1, 2) | ivec3(3, 1, -2) ]; 274e5c31af7Sopenharmony_ci output ivec3 out0 = [ ivec3(5, -2, 1) | ivec3(7, -2, -1) | ivec3(3, 2, 1) ]; 275e5c31af7Sopenharmony_ci } 276e5c31af7Sopenharmony_ci 277e5c31af7Sopenharmony_ci both "" 278e5c31af7Sopenharmony_ci #version 300 es 279e5c31af7Sopenharmony_ci precision mediump int; 280e5c31af7Sopenharmony_ci precision mediump float; 281e5c31af7Sopenharmony_ci ${DECLARATIONS} 282e5c31af7Sopenharmony_ci 283e5c31af7Sopenharmony_ci void main() 284e5c31af7Sopenharmony_ci { 285e5c31af7Sopenharmony_ci ${SETUP} 286e5c31af7Sopenharmony_ci 287e5c31af7Sopenharmony_ci ivec3[3] x; 288e5c31af7Sopenharmony_ci x = ivec3[3] ( ivec3(in0.x, in0.y, in0.z) , 289e5c31af7Sopenharmony_ci ivec3(-in0.y, -in0.z, -in0.x), 290e5c31af7Sopenharmony_ci ivec3(in0.z, in0.x, in0.y) ); 291e5c31af7Sopenharmony_ci out0 = ivec3(x[0].x, x[1].y, x[2].z); 292e5c31af7Sopenharmony_ci ${OUTPUT} 293e5c31af7Sopenharmony_ci } 294e5c31af7Sopenharmony_ci "" 295e5c31af7Sopenharmony_ci end 296e5c31af7Sopenharmony_ci 297e5c31af7Sopenharmony_ci case bool_vec3 298e5c31af7Sopenharmony_ci version 300 es 299e5c31af7Sopenharmony_ci values 300e5c31af7Sopenharmony_ci { 301e5c31af7Sopenharmony_ci input bvec3 in0 = [ bvec3(true, false, true) ]; 302e5c31af7Sopenharmony_ci output bvec3 out0 = [ bvec3(true, true, false) ]; 303e5c31af7Sopenharmony_ci } 304e5c31af7Sopenharmony_ci 305e5c31af7Sopenharmony_ci both "" 306e5c31af7Sopenharmony_ci #version 300 es 307e5c31af7Sopenharmony_ci precision mediump float; 308e5c31af7Sopenharmony_ci ${DECLARATIONS} 309e5c31af7Sopenharmony_ci 310e5c31af7Sopenharmony_ci void main() 311e5c31af7Sopenharmony_ci { 312e5c31af7Sopenharmony_ci ${SETUP} 313e5c31af7Sopenharmony_ci 314e5c31af7Sopenharmony_ci bvec3[3] x; 315e5c31af7Sopenharmony_ci x = bvec3[3] ( bvec3(in0.x, in0.y, in0.z) , 316e5c31af7Sopenharmony_ci bvec3(in0.y, in0.z, in0.x), 317e5c31af7Sopenharmony_ci bvec3(in0.z, in0.x, in0.y) ); 318e5c31af7Sopenharmony_ci out0 = bvec3(x[0].x, x[1].y, x[2].z); 319e5c31af7Sopenharmony_ci ${OUTPUT} 320e5c31af7Sopenharmony_ci } 321e5c31af7Sopenharmony_ci "" 322e5c31af7Sopenharmony_ci end 323e5c31af7Sopenharmony_ci 324e5c31af7Sopenharmony_ci case float_mat3 325e5c31af7Sopenharmony_ci version 300 es 326e5c31af7Sopenharmony_ci values 327e5c31af7Sopenharmony_ci { 328e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-1.5, 0.0, -2.3) ]; 329e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(0.5, -1.0, 1.0) | vec3(-1.5, 0.0, 0.0) ]; 330e5c31af7Sopenharmony_ci } 331e5c31af7Sopenharmony_ci 332e5c31af7Sopenharmony_ci both "" 333e5c31af7Sopenharmony_ci #version 300 es 334e5c31af7Sopenharmony_ci precision mediump float; 335e5c31af7Sopenharmony_ci ${DECLARATIONS} 336e5c31af7Sopenharmony_ci 337e5c31af7Sopenharmony_ci void main() 338e5c31af7Sopenharmony_ci { 339e5c31af7Sopenharmony_ci ${SETUP} 340e5c31af7Sopenharmony_ci mat3[3] a = mat3[3] ( mat3( in0.x, in0.y, in0.z, 341e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z, 342e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z) , 343e5c31af7Sopenharmony_ci mat3( in0.z, in0.x, -in0.y, 344e5c31af7Sopenharmony_ci in0.z, in0.x, -in0.y, 345e5c31af7Sopenharmony_ci in0.z, in0.x, -in0.y) , 346e5c31af7Sopenharmony_ci mat3( -in0.z, -in0.z, in0.z, 347e5c31af7Sopenharmony_ci -in0.y, -in0.y, in0.y, 348e5c31af7Sopenharmony_ci -in0.x, -in0.x, in0.x) ); 349e5c31af7Sopenharmony_ci 350e5c31af7Sopenharmony_ci mat3 a0 = a[0]; 351e5c31af7Sopenharmony_ci mat3 a1 = a[1]; 352e5c31af7Sopenharmony_ci mat3 a2 = a[2]; 353e5c31af7Sopenharmony_ci 354e5c31af7Sopenharmony_ci float ret0 = a0[2][0]; 355e5c31af7Sopenharmony_ci float ret1 = a1[0][2]; 356e5c31af7Sopenharmony_ci float ret2 = a2[1][2]; 357e5c31af7Sopenharmony_ci 358e5c31af7Sopenharmony_ci out0 = vec3(ret0, ret1, ret2); 359e5c31af7Sopenharmony_ci ${OUTPUT} 360e5c31af7Sopenharmony_ci } 361e5c31af7Sopenharmony_ci "" 362e5c31af7Sopenharmony_ci end 363e5c31af7Sopenharmony_ci 364e5c31af7Sopenharmony_ci case int_mat3 365e5c31af7Sopenharmony_ci version 300 es 366e5c31af7Sopenharmony_ci values 367e5c31af7Sopenharmony_ci { 368e5c31af7Sopenharmony_ci input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(-1, 0, -2) ]; 369e5c31af7Sopenharmony_ci output ivec3 out0 = [ ivec3(0, -1, 1) | ivec3(-1, 0, 0) ]; 370e5c31af7Sopenharmony_ci } 371e5c31af7Sopenharmony_ci 372e5c31af7Sopenharmony_ci both "" 373e5c31af7Sopenharmony_ci #version 300 es 374e5c31af7Sopenharmony_ci precision mediump int; 375e5c31af7Sopenharmony_ci precision mediump float; 376e5c31af7Sopenharmony_ci ${DECLARATIONS} 377e5c31af7Sopenharmony_ci 378e5c31af7Sopenharmony_ci void main() 379e5c31af7Sopenharmony_ci { 380e5c31af7Sopenharmony_ci ${SETUP} 381e5c31af7Sopenharmony_ci mat3[3] a = mat3[3] ( mat3( in0.x, in0.y, in0.z, 382e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z, 383e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z) , 384e5c31af7Sopenharmony_ci mat3( in0.z, in0.x, -in0.y, 385e5c31af7Sopenharmony_ci in0.z, in0.x, -in0.y, 386e5c31af7Sopenharmony_ci in0.z, in0.x, -in0.y) , 387e5c31af7Sopenharmony_ci mat3( -in0.z, -in0.z, in0.z, 388e5c31af7Sopenharmony_ci -in0.y, -in0.y, in0.y, 389e5c31af7Sopenharmony_ci -in0.x, -in0.x, in0.x) ); 390e5c31af7Sopenharmony_ci 391e5c31af7Sopenharmony_ci mat3 a0 = a[0]; 392e5c31af7Sopenharmony_ci mat3 a1 = a[1]; 393e5c31af7Sopenharmony_ci mat3 a2 = a[2]; 394e5c31af7Sopenharmony_ci 395e5c31af7Sopenharmony_ci float ret0 = a0[2][0]; 396e5c31af7Sopenharmony_ci float ret1 = a1[0][2]; 397e5c31af7Sopenharmony_ci float ret2 = a2[1][2]; 398e5c31af7Sopenharmony_ci 399e5c31af7Sopenharmony_ci out0 = ivec3(ret0, ret1, ret2); 400e5c31af7Sopenharmony_ci ${OUTPUT} 401e5c31af7Sopenharmony_ci } 402e5c31af7Sopenharmony_ci "" 403e5c31af7Sopenharmony_ci end 404e5c31af7Sopenharmony_ci 405e5c31af7Sopenharmony_ci case bool_mat3 406e5c31af7Sopenharmony_ci version 300 es 407e5c31af7Sopenharmony_ci values 408e5c31af7Sopenharmony_ci { 409e5c31af7Sopenharmony_ci input bvec3 in0 = [ bvec3(true, false, true) ]; 410e5c31af7Sopenharmony_ci output bvec3 out0 = [ bvec3(true, false, false) ]; 411e5c31af7Sopenharmony_ci } 412e5c31af7Sopenharmony_ci 413e5c31af7Sopenharmony_ci both "" 414e5c31af7Sopenharmony_ci #version 300 es 415e5c31af7Sopenharmony_ci precision mediump float; 416e5c31af7Sopenharmony_ci ${DECLARATIONS} 417e5c31af7Sopenharmony_ci 418e5c31af7Sopenharmony_ci void main() 419e5c31af7Sopenharmony_ci { 420e5c31af7Sopenharmony_ci ${SETUP} 421e5c31af7Sopenharmony_ci mat3[3] a = mat3[3] ( mat3( in0.x, in0.y, in0.z, 422e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z, 423e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z) , 424e5c31af7Sopenharmony_ci mat3( in0.z, in0.x, in0.y, 425e5c31af7Sopenharmony_ci in0.z, in0.x, in0.y, 426e5c31af7Sopenharmony_ci in0.z, in0.x, in0.y) , 427e5c31af7Sopenharmony_ci mat3( in0.z, in0.z, in0.z, 428e5c31af7Sopenharmony_ci in0.y, in0.y, in0.y, 429e5c31af7Sopenharmony_ci in0.x, in0.x, in0.x) ); 430e5c31af7Sopenharmony_ci 431e5c31af7Sopenharmony_ci mat3 a0 = a[0]; 432e5c31af7Sopenharmony_ci mat3 a1 = a[1]; 433e5c31af7Sopenharmony_ci mat3 a2 = a[2]; 434e5c31af7Sopenharmony_ci 435e5c31af7Sopenharmony_ci float ret0 = a0[2][0]; 436e5c31af7Sopenharmony_ci float ret1 = a1[0][2]; 437e5c31af7Sopenharmony_ci float ret2 = a2[1][2]; 438e5c31af7Sopenharmony_ci 439e5c31af7Sopenharmony_ci out0 = bvec3(ret0, ret1, ret2); 440e5c31af7Sopenharmony_ci ${OUTPUT} 441e5c31af7Sopenharmony_ci } 442e5c31af7Sopenharmony_ci "" 443e5c31af7Sopenharmony_ci end 444e5c31af7Sopenharmony_ci 445e5c31af7Sopenharmony_ciend # type 446e5c31af7Sopenharmony_ci 447e5c31af7Sopenharmony_cigroup return "Arrays as return value" 448e5c31af7Sopenharmony_ci 449e5c31af7Sopenharmony_ci case float 450e5c31af7Sopenharmony_ci version 300 es 451e5c31af7Sopenharmony_ci values 452e5c31af7Sopenharmony_ci { 453e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(7.4, -1.0, 2.0) | vec3(3.0, 1.6, -2.0) ]; 454e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(2.0, -0.5, 1.0) | vec3(2.0, -7.4, -1.0) | vec3(-2.0, -3.0, 1.6) ]; 455e5c31af7Sopenharmony_ci } 456e5c31af7Sopenharmony_ci 457e5c31af7Sopenharmony_ci both "" 458e5c31af7Sopenharmony_ci #version 300 es 459e5c31af7Sopenharmony_ci precision mediump float; 460e5c31af7Sopenharmony_ci ${DECLARATIONS} 461e5c31af7Sopenharmony_ci 462e5c31af7Sopenharmony_ci float[3] func(vec3 a) 463e5c31af7Sopenharmony_ci { 464e5c31af7Sopenharmony_ci return float[3] (a.z, -a.x, a.y); 465e5c31af7Sopenharmony_ci } 466e5c31af7Sopenharmony_ci 467e5c31af7Sopenharmony_ci void main() 468e5c31af7Sopenharmony_ci { 469e5c31af7Sopenharmony_ci ${SETUP} 470e5c31af7Sopenharmony_ci float[3] x = func(in0); 471e5c31af7Sopenharmony_ci out0 = vec3(x[0], x[1], x[2]); 472e5c31af7Sopenharmony_ci ${OUTPUT} 473e5c31af7Sopenharmony_ci } 474e5c31af7Sopenharmony_ci "" 475e5c31af7Sopenharmony_ci end 476e5c31af7Sopenharmony_ci 477e5c31af7Sopenharmony_ci case int 478e5c31af7Sopenharmony_ci version 300 es 479e5c31af7Sopenharmony_ci values 480e5c31af7Sopenharmony_ci { 481e5c31af7Sopenharmony_ci input ivec3 in0 = [ ivec3(4, 1, 2) | ivec3(7, -1, 2) | ivec3(3, 1, -2) ]; 482e5c31af7Sopenharmony_ci output ivec3 out0 = [ ivec3(2, -4, 1) | ivec3(2, -7, -1) | ivec3(-2, -3, 1) ]; 483e5c31af7Sopenharmony_ci } 484e5c31af7Sopenharmony_ci 485e5c31af7Sopenharmony_ci both "" 486e5c31af7Sopenharmony_ci #version 300 es 487e5c31af7Sopenharmony_ci precision mediump int; 488e5c31af7Sopenharmony_ci precision mediump float; 489e5c31af7Sopenharmony_ci ${DECLARATIONS} 490e5c31af7Sopenharmony_ci 491e5c31af7Sopenharmony_ci int[3] func(ivec3 a) 492e5c31af7Sopenharmony_ci { 493e5c31af7Sopenharmony_ci return int[3] (a.z, -a.x, a.y); 494e5c31af7Sopenharmony_ci } 495e5c31af7Sopenharmony_ci 496e5c31af7Sopenharmony_ci void main() 497e5c31af7Sopenharmony_ci { 498e5c31af7Sopenharmony_ci ${SETUP} 499e5c31af7Sopenharmony_ci int[3] x = func(in0); 500e5c31af7Sopenharmony_ci out0 = ivec3(x[0], x[1], x[2]); 501e5c31af7Sopenharmony_ci ${OUTPUT} 502e5c31af7Sopenharmony_ci } 503e5c31af7Sopenharmony_ci "" 504e5c31af7Sopenharmony_ci end 505e5c31af7Sopenharmony_ci 506e5c31af7Sopenharmony_ci case bool 507e5c31af7Sopenharmony_ci version 300 es 508e5c31af7Sopenharmony_ci values 509e5c31af7Sopenharmony_ci { 510e5c31af7Sopenharmony_ci input bvec3 in0 = [ bvec3(false, true, true) ]; 511e5c31af7Sopenharmony_ci output bvec3 out0 = [ bvec3(true, false, true) ]; 512e5c31af7Sopenharmony_ci } 513e5c31af7Sopenharmony_ci 514e5c31af7Sopenharmony_ci both "" 515e5c31af7Sopenharmony_ci #version 300 es 516e5c31af7Sopenharmony_ci precision mediump float; 517e5c31af7Sopenharmony_ci ${DECLARATIONS} 518e5c31af7Sopenharmony_ci 519e5c31af7Sopenharmony_ci bool[3] func(bvec3 a) 520e5c31af7Sopenharmony_ci { 521e5c31af7Sopenharmony_ci return bool[3] (a.z, a.x, a.y); 522e5c31af7Sopenharmony_ci } 523e5c31af7Sopenharmony_ci 524e5c31af7Sopenharmony_ci void main() 525e5c31af7Sopenharmony_ci { 526e5c31af7Sopenharmony_ci ${SETUP} 527e5c31af7Sopenharmony_ci bool[3] x = func(in0); 528e5c31af7Sopenharmony_ci out0 = bvec3(x[0], x[1], x[2]); 529e5c31af7Sopenharmony_ci ${OUTPUT} 530e5c31af7Sopenharmony_ci } 531e5c31af7Sopenharmony_ci "" 532e5c31af7Sopenharmony_ci end 533e5c31af7Sopenharmony_ci 534e5c31af7Sopenharmony_ci 535e5c31af7Sopenharmony_ci 536e5c31af7Sopenharmony_ci case float_vec3 537e5c31af7Sopenharmony_ci version 300 es 538e5c31af7Sopenharmony_ci values 539e5c31af7Sopenharmony_ci { 540e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-0.5, 11.2, -1.0) ]; 541e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(1.0, 0.5, -2.0) | vec3(11.2, -0.5, 1.0) ]; 542e5c31af7Sopenharmony_ci } 543e5c31af7Sopenharmony_ci 544e5c31af7Sopenharmony_ci both "" 545e5c31af7Sopenharmony_ci #version 300 es 546e5c31af7Sopenharmony_ci precision mediump float; 547e5c31af7Sopenharmony_ci ${DECLARATIONS} 548e5c31af7Sopenharmony_ci 549e5c31af7Sopenharmony_ci vec3[3] func(vec3[3] a) 550e5c31af7Sopenharmony_ci { 551e5c31af7Sopenharmony_ci return vec3[3] (a[1], a[2], a[0]); 552e5c31af7Sopenharmony_ci } 553e5c31af7Sopenharmony_ci 554e5c31af7Sopenharmony_ci void main() 555e5c31af7Sopenharmony_ci { 556e5c31af7Sopenharmony_ci ${SETUP} 557e5c31af7Sopenharmony_ci vec3[3] x = vec3[3](vec3(in0.x, in0.y, -in0.z) , 558e5c31af7Sopenharmony_ci vec3(in0.y, -in0.z, in0.x) , 559e5c31af7Sopenharmony_ci vec3(-in0.z, in0.x, in0.y) ); 560e5c31af7Sopenharmony_ci x = func(x); 561e5c31af7Sopenharmony_ci out0 = vec3(x[0].x, x[1].y, x[2].z); 562e5c31af7Sopenharmony_ci ${OUTPUT} 563e5c31af7Sopenharmony_ci } 564e5c31af7Sopenharmony_ci "" 565e5c31af7Sopenharmony_ci end 566e5c31af7Sopenharmony_ci 567e5c31af7Sopenharmony_ci case struct 568e5c31af7Sopenharmony_ci version 300 es 569e5c31af7Sopenharmony_ci values 570e5c31af7Sopenharmony_ci { 571e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; 572e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(-1.0, 2.0, 0.5) ]; 573e5c31af7Sopenharmony_ci } 574e5c31af7Sopenharmony_ci 575e5c31af7Sopenharmony_ci both "" 576e5c31af7Sopenharmony_ci #version 300 es 577e5c31af7Sopenharmony_ci precision mediump float; 578e5c31af7Sopenharmony_ci ${DECLARATIONS} 579e5c31af7Sopenharmony_ci 580e5c31af7Sopenharmony_ci struct test 581e5c31af7Sopenharmony_ci { 582e5c31af7Sopenharmony_ci float f; 583e5c31af7Sopenharmony_ci vec3 v; 584e5c31af7Sopenharmony_ci }; 585e5c31af7Sopenharmony_ci 586e5c31af7Sopenharmony_ci test[3] func(test[3] a) 587e5c31af7Sopenharmony_ci { 588e5c31af7Sopenharmony_ci return test[3] (a[1], a[2], a[0]); 589e5c31af7Sopenharmony_ci } 590e5c31af7Sopenharmony_ci 591e5c31af7Sopenharmony_ci void main() 592e5c31af7Sopenharmony_ci { 593e5c31af7Sopenharmony_ci ${SETUP} 594e5c31af7Sopenharmony_ci 595e5c31af7Sopenharmony_ci test a = test(in0.z, vec3(in0.x, in0.y, in0.z)); 596e5c31af7Sopenharmony_ci test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y)); 597e5c31af7Sopenharmony_ci test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x)); 598e5c31af7Sopenharmony_ci 599e5c31af7Sopenharmony_ci test[3] t = test[3] (a, b, c); 600e5c31af7Sopenharmony_ci test[3] x = func(t); 601e5c31af7Sopenharmony_ci 602e5c31af7Sopenharmony_ci out0 = vec3(x[0].v.z, x[1].v.y, x[2].v.x); 603e5c31af7Sopenharmony_ci ${OUTPUT} 604e5c31af7Sopenharmony_ci } 605e5c31af7Sopenharmony_ci "" 606e5c31af7Sopenharmony_ci end 607e5c31af7Sopenharmony_ci 608e5c31af7Sopenharmony_ci case int_vec3 609e5c31af7Sopenharmony_ci version 300 es 610e5c31af7Sopenharmony_ci values 611e5c31af7Sopenharmony_ci { 612e5c31af7Sopenharmony_ci input ivec3 in0 = [ ivec3(5, 1, 2) | ivec3(-5, 11, -1) ]; 613e5c31af7Sopenharmony_ci output ivec3 out0 = [ ivec3(1, 5, -2) | ivec3(11, -5, 1) ]; 614e5c31af7Sopenharmony_ci } 615e5c31af7Sopenharmony_ci 616e5c31af7Sopenharmony_ci both "" 617e5c31af7Sopenharmony_ci #version 300 es 618e5c31af7Sopenharmony_ci precision mediump int; 619e5c31af7Sopenharmony_ci precision mediump float; 620e5c31af7Sopenharmony_ci ${DECLARATIONS} 621e5c31af7Sopenharmony_ci 622e5c31af7Sopenharmony_ci ivec3[3] func(ivec3[3] a) 623e5c31af7Sopenharmony_ci { 624e5c31af7Sopenharmony_ci return ivec3[3] (a[1], a[2], a[0]); 625e5c31af7Sopenharmony_ci } 626e5c31af7Sopenharmony_ci 627e5c31af7Sopenharmony_ci void main() 628e5c31af7Sopenharmony_ci { 629e5c31af7Sopenharmony_ci ${SETUP} 630e5c31af7Sopenharmony_ci ivec3[3] x = ivec3[3]( ivec3(in0.x, in0.y, -in0.z) , 631e5c31af7Sopenharmony_ci ivec3(in0.y, -in0.z, in0.x) , 632e5c31af7Sopenharmony_ci ivec3(-in0.z, in0.x, in0.y) ); 633e5c31af7Sopenharmony_ci x = func(x); 634e5c31af7Sopenharmony_ci out0 = ivec3(x[0].x, x[1].y, x[2].z); 635e5c31af7Sopenharmony_ci ${OUTPUT} 636e5c31af7Sopenharmony_ci } 637e5c31af7Sopenharmony_ci "" 638e5c31af7Sopenharmony_ci end 639e5c31af7Sopenharmony_ci 640e5c31af7Sopenharmony_ci case bool_vec3 641e5c31af7Sopenharmony_ci version 300 es 642e5c31af7Sopenharmony_ci values 643e5c31af7Sopenharmony_ci { 644e5c31af7Sopenharmony_ci input bvec3 in0 = [ bvec3(true, false, false) ]; 645e5c31af7Sopenharmony_ci output bvec3 out0 = [ bvec3(false, true, false) ]; 646e5c31af7Sopenharmony_ci } 647e5c31af7Sopenharmony_ci 648e5c31af7Sopenharmony_ci both "" 649e5c31af7Sopenharmony_ci #version 300 es 650e5c31af7Sopenharmony_ci precision mediump int; 651e5c31af7Sopenharmony_ci precision mediump float; 652e5c31af7Sopenharmony_ci ${DECLARATIONS} 653e5c31af7Sopenharmony_ci 654e5c31af7Sopenharmony_ci bvec3[3] func(bvec3[3] a) 655e5c31af7Sopenharmony_ci { 656e5c31af7Sopenharmony_ci return bvec3[3] (a[1], a[2], a[0]); 657e5c31af7Sopenharmony_ci } 658e5c31af7Sopenharmony_ci 659e5c31af7Sopenharmony_ci void main() 660e5c31af7Sopenharmony_ci { 661e5c31af7Sopenharmony_ci ${SETUP} 662e5c31af7Sopenharmony_ci bvec3[3] x = bvec3[3]( bvec3(in0.x, in0.y, in0.z) , 663e5c31af7Sopenharmony_ci bvec3(in0.y, in0.z, in0.x) , 664e5c31af7Sopenharmony_ci bvec3(in0.z, in0.x, in0.y) ); 665e5c31af7Sopenharmony_ci x = func(x); 666e5c31af7Sopenharmony_ci out0 = bvec3(x[0].x, x[1].y, x[2].z); 667e5c31af7Sopenharmony_ci ${OUTPUT} 668e5c31af7Sopenharmony_ci } 669e5c31af7Sopenharmony_ci "" 670e5c31af7Sopenharmony_ci end 671e5c31af7Sopenharmony_ci 672e5c31af7Sopenharmony_ci case float_mat3 673e5c31af7Sopenharmony_ci version 300 es 674e5c31af7Sopenharmony_ci values 675e5c31af7Sopenharmony_ci { 676e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-1.5, 0.0, -2.3) ]; 677e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(2.0, -1.0, 2.0) | vec3(-2.3, 0.0, -2.3) ]; 678e5c31af7Sopenharmony_ci } 679e5c31af7Sopenharmony_ci 680e5c31af7Sopenharmony_ci both "" 681e5c31af7Sopenharmony_ci #version 300 es 682e5c31af7Sopenharmony_ci precision mediump float; 683e5c31af7Sopenharmony_ci ${DECLARATIONS} 684e5c31af7Sopenharmony_ci 685e5c31af7Sopenharmony_ci mat3[3] func(mat3[3] x) 686e5c31af7Sopenharmony_ci { 687e5c31af7Sopenharmony_ci mat3[3] r; 688e5c31af7Sopenharmony_ci r[0] = x[1]; 689e5c31af7Sopenharmony_ci r[1] = x[2]; 690e5c31af7Sopenharmony_ci r[2] = x[0]; 691e5c31af7Sopenharmony_ci return r; 692e5c31af7Sopenharmony_ci } 693e5c31af7Sopenharmony_ci 694e5c31af7Sopenharmony_ci void main() 695e5c31af7Sopenharmony_ci { 696e5c31af7Sopenharmony_ci ${SETUP} 697e5c31af7Sopenharmony_ci mat3[3] a, b; 698e5c31af7Sopenharmony_ci a[0] = mat3(in0.x, in0.y, in0.z, 699e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z, 700e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z); 701e5c31af7Sopenharmony_ci a[1] = mat3(in0.z, in0.x, -in0.y, 702e5c31af7Sopenharmony_ci in0.z, in0.x, -in0.y, 703e5c31af7Sopenharmony_ci in0.z, in0.x, -in0.y); 704e5c31af7Sopenharmony_ci a[2] = mat3(-in0.z, -in0.z, in0.z, 705e5c31af7Sopenharmony_ci -in0.y, -in0.y, in0.y, 706e5c31af7Sopenharmony_ci -in0.x, -in0.x, in0.x); 707e5c31af7Sopenharmony_ci 708e5c31af7Sopenharmony_ci b = func(a); 709e5c31af7Sopenharmony_ci 710e5c31af7Sopenharmony_ci mat3 b0 = b[0]; 711e5c31af7Sopenharmony_ci mat3 b1 = b[1]; 712e5c31af7Sopenharmony_ci mat3 b2 = b[2]; 713e5c31af7Sopenharmony_ci 714e5c31af7Sopenharmony_ci float ret0 = b0[0][0]; 715e5c31af7Sopenharmony_ci float ret1 = b1[1][1]; 716e5c31af7Sopenharmony_ci float ret2 = b2[2][2]; 717e5c31af7Sopenharmony_ci 718e5c31af7Sopenharmony_ci out0 = vec3(ret0, ret1, ret2); 719e5c31af7Sopenharmony_ci ${OUTPUT} 720e5c31af7Sopenharmony_ci } 721e5c31af7Sopenharmony_ci "" 722e5c31af7Sopenharmony_ci end 723e5c31af7Sopenharmony_ci 724e5c31af7Sopenharmony_ci case int_mat3 725e5c31af7Sopenharmony_ci version 300 es 726e5c31af7Sopenharmony_ci values 727e5c31af7Sopenharmony_ci { 728e5c31af7Sopenharmony_ci input ivec3 in0 = [ ivec3(5, 1, 2) | ivec3(-1, 0, -2) ]; 729e5c31af7Sopenharmony_ci output ivec3 out0 = [ ivec3(2, -1, 2) | ivec3(-2, 0, -2) ]; 730e5c31af7Sopenharmony_ci } 731e5c31af7Sopenharmony_ci 732e5c31af7Sopenharmony_ci both "" 733e5c31af7Sopenharmony_ci #version 300 es 734e5c31af7Sopenharmony_ci precision mediump int; 735e5c31af7Sopenharmony_ci precision mediump float; 736e5c31af7Sopenharmony_ci ${DECLARATIONS} 737e5c31af7Sopenharmony_ci 738e5c31af7Sopenharmony_ci mat3[3] func(mat3[3] x) 739e5c31af7Sopenharmony_ci { 740e5c31af7Sopenharmony_ci mat3[3] r; 741e5c31af7Sopenharmony_ci r[0] = x[1]; 742e5c31af7Sopenharmony_ci r[1] = x[2]; 743e5c31af7Sopenharmony_ci r[2] = x[0]; 744e5c31af7Sopenharmony_ci return r; 745e5c31af7Sopenharmony_ci } 746e5c31af7Sopenharmony_ci 747e5c31af7Sopenharmony_ci void main() 748e5c31af7Sopenharmony_ci { 749e5c31af7Sopenharmony_ci ${SETUP} 750e5c31af7Sopenharmony_ci mat3[3] a, b; 751e5c31af7Sopenharmony_ci a[0] = mat3(in0.x, in0.y, in0.z, 752e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z, 753e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z); 754e5c31af7Sopenharmony_ci a[1] = mat3(in0.z, in0.x, -in0.y, 755e5c31af7Sopenharmony_ci in0.z, in0.x, -in0.y, 756e5c31af7Sopenharmony_ci in0.z, in0.x, -in0.y); 757e5c31af7Sopenharmony_ci a[2] = mat3(-in0.z, -in0.z, in0.z, 758e5c31af7Sopenharmony_ci -in0.y, -in0.y, in0.y, 759e5c31af7Sopenharmony_ci -in0.x, -in0.x, in0.x); 760e5c31af7Sopenharmony_ci 761e5c31af7Sopenharmony_ci b = func(a); 762e5c31af7Sopenharmony_ci 763e5c31af7Sopenharmony_ci mat3 b0 = b[0]; 764e5c31af7Sopenharmony_ci mat3 b1 = b[1]; 765e5c31af7Sopenharmony_ci mat3 b2 = b[2]; 766e5c31af7Sopenharmony_ci 767e5c31af7Sopenharmony_ci float ret0 = b0[0][0]; 768e5c31af7Sopenharmony_ci float ret1 = b1[1][1]; 769e5c31af7Sopenharmony_ci float ret2 = b2[2][2]; 770e5c31af7Sopenharmony_ci 771e5c31af7Sopenharmony_ci out0 = ivec3(ret0, ret1, ret2); 772e5c31af7Sopenharmony_ci ${OUTPUT} 773e5c31af7Sopenharmony_ci } 774e5c31af7Sopenharmony_ci "" 775e5c31af7Sopenharmony_ci end 776e5c31af7Sopenharmony_ci 777e5c31af7Sopenharmony_ci case bool_mat3 778e5c31af7Sopenharmony_ci version 300 es 779e5c31af7Sopenharmony_ci values 780e5c31af7Sopenharmony_ci { 781e5c31af7Sopenharmony_ci input bvec3 in0 = [ bvec3(true, false, true) | bvec3(true, true, false) ]; 782e5c31af7Sopenharmony_ci output bvec3 out0 = [ bvec3(true, false, true) | bvec3(false, true, false) ]; 783e5c31af7Sopenharmony_ci } 784e5c31af7Sopenharmony_ci 785e5c31af7Sopenharmony_ci both "" 786e5c31af7Sopenharmony_ci #version 300 es 787e5c31af7Sopenharmony_ci precision mediump float; 788e5c31af7Sopenharmony_ci ${DECLARATIONS} 789e5c31af7Sopenharmony_ci 790e5c31af7Sopenharmony_ci mat3[3] func(mat3[3] x) 791e5c31af7Sopenharmony_ci { 792e5c31af7Sopenharmony_ci mat3[3] r; 793e5c31af7Sopenharmony_ci r[0] = x[1]; 794e5c31af7Sopenharmony_ci r[1] = x[2]; 795e5c31af7Sopenharmony_ci r[2] = x[0]; 796e5c31af7Sopenharmony_ci return r; 797e5c31af7Sopenharmony_ci } 798e5c31af7Sopenharmony_ci 799e5c31af7Sopenharmony_ci void main() 800e5c31af7Sopenharmony_ci { 801e5c31af7Sopenharmony_ci ${SETUP} 802e5c31af7Sopenharmony_ci mat3[3] a, b; 803e5c31af7Sopenharmony_ci a[0] = mat3(in0.x, in0.y, in0.z, 804e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z, 805e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z); 806e5c31af7Sopenharmony_ci a[1] = mat3(in0.z, in0.x, in0.y, 807e5c31af7Sopenharmony_ci in0.z, in0.x, in0.y, 808e5c31af7Sopenharmony_ci in0.z, in0.x, in0.y); 809e5c31af7Sopenharmony_ci a[2] = mat3(in0.z, in0.z, in0.z, 810e5c31af7Sopenharmony_ci in0.y, in0.y, in0.y, 811e5c31af7Sopenharmony_ci in0.x, in0.x, in0.x); 812e5c31af7Sopenharmony_ci 813e5c31af7Sopenharmony_ci b = func(a); 814e5c31af7Sopenharmony_ci 815e5c31af7Sopenharmony_ci mat3 b0 = b[0]; 816e5c31af7Sopenharmony_ci mat3 b1 = b[1]; 817e5c31af7Sopenharmony_ci mat3 b2 = b[2]; 818e5c31af7Sopenharmony_ci 819e5c31af7Sopenharmony_ci float ret0 = b0[0][0]; 820e5c31af7Sopenharmony_ci float ret1 = b1[1][1]; 821e5c31af7Sopenharmony_ci float ret2 = b2[2][2]; 822e5c31af7Sopenharmony_ci 823e5c31af7Sopenharmony_ci out0 = bvec3(ret0, ret1, ret2); 824e5c31af7Sopenharmony_ci ${OUTPUT} 825e5c31af7Sopenharmony_ci } 826e5c31af7Sopenharmony_ci "" 827e5c31af7Sopenharmony_ci end 828e5c31af7Sopenharmony_ci 829e5c31af7Sopenharmony_ciend # return 830e5c31af7Sopenharmony_ci 831e5c31af7Sopenharmony_cigroup unnamed_parameter "Array type as unnamed parameter of a function prototype" 832e5c31af7Sopenharmony_ci 833e5c31af7Sopenharmony_ci case float 834e5c31af7Sopenharmony_ci version 300 es 835e5c31af7Sopenharmony_ci values 836e5c31af7Sopenharmony_ci { 837e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(7.4, -1.0, 2.0) | vec3(3.0, 1.6, -2.0) ]; 838e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(2.0, 0.5, 1.0) | vec3(2.0, 7.4, -1.0) | vec3(-2.0, 3.0, 1.6) ]; 839e5c31af7Sopenharmony_ci } 840e5c31af7Sopenharmony_ci 841e5c31af7Sopenharmony_ci both "" 842e5c31af7Sopenharmony_ci #version 300 es 843e5c31af7Sopenharmony_ci precision mediump float; 844e5c31af7Sopenharmony_ci ${DECLARATIONS} 845e5c31af7Sopenharmony_ci 846e5c31af7Sopenharmony_ci float[3] func(float[3]); 847e5c31af7Sopenharmony_ci 848e5c31af7Sopenharmony_ci void main() 849e5c31af7Sopenharmony_ci { 850e5c31af7Sopenharmony_ci ${SETUP} 851e5c31af7Sopenharmony_ci float[3] a = float[3] (in0.x, in0.y, in0.z); 852e5c31af7Sopenharmony_ci float[3] b = func(a); 853e5c31af7Sopenharmony_ci out0 = vec3(b[0], b[1], b[2]); 854e5c31af7Sopenharmony_ci ${OUTPUT} 855e5c31af7Sopenharmony_ci } 856e5c31af7Sopenharmony_ci 857e5c31af7Sopenharmony_ci float[3] func(float[3] a) 858e5c31af7Sopenharmony_ci { 859e5c31af7Sopenharmony_ci return float[3] (a[2], a[0], a[1]); 860e5c31af7Sopenharmony_ci } 861e5c31af7Sopenharmony_ci 862e5c31af7Sopenharmony_ci "" 863e5c31af7Sopenharmony_ci end 864e5c31af7Sopenharmony_ci 865e5c31af7Sopenharmony_ci case int 866e5c31af7Sopenharmony_ci version 300 es 867e5c31af7Sopenharmony_ci values 868e5c31af7Sopenharmony_ci { 869e5c31af7Sopenharmony_ci input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(7, -1, 2) | ivec3(3, 1, -2) ]; 870e5c31af7Sopenharmony_ci output ivec3 out0 = [ ivec3(2, 0, 1) | ivec3(2, 7, -1) | ivec3(-2, 3, 1) ]; 871e5c31af7Sopenharmony_ci } 872e5c31af7Sopenharmony_ci 873e5c31af7Sopenharmony_ci both "" 874e5c31af7Sopenharmony_ci #version 300 es 875e5c31af7Sopenharmony_ci precision mediump int; 876e5c31af7Sopenharmony_ci precision mediump float; 877e5c31af7Sopenharmony_ci ${DECLARATIONS} 878e5c31af7Sopenharmony_ci 879e5c31af7Sopenharmony_ci int[3] func(int[3]); 880e5c31af7Sopenharmony_ci 881e5c31af7Sopenharmony_ci void main() 882e5c31af7Sopenharmony_ci { 883e5c31af7Sopenharmony_ci ${SETUP} 884e5c31af7Sopenharmony_ci int[3] a = int[3] (in0.x, in0.y, in0.z); 885e5c31af7Sopenharmony_ci int[3] b = func(a); 886e5c31af7Sopenharmony_ci out0 = ivec3(b[0], b[1], b[2]); 887e5c31af7Sopenharmony_ci ${OUTPUT} 888e5c31af7Sopenharmony_ci } 889e5c31af7Sopenharmony_ci 890e5c31af7Sopenharmony_ci int[3] func(int[3] a) 891e5c31af7Sopenharmony_ci { 892e5c31af7Sopenharmony_ci return int[3] (a[2], a[0], a[1]); 893e5c31af7Sopenharmony_ci } 894e5c31af7Sopenharmony_ci 895e5c31af7Sopenharmony_ci "" 896e5c31af7Sopenharmony_ci end 897e5c31af7Sopenharmony_ci 898e5c31af7Sopenharmony_ci case bool 899e5c31af7Sopenharmony_ci version 300 es 900e5c31af7Sopenharmony_ci values 901e5c31af7Sopenharmony_ci { 902e5c31af7Sopenharmony_ci input bvec3 in0 = [ bvec3(false, true, true) ]; 903e5c31af7Sopenharmony_ci output bvec3 out0 = [ bvec3(true, false, true) ]; 904e5c31af7Sopenharmony_ci } 905e5c31af7Sopenharmony_ci 906e5c31af7Sopenharmony_ci both "" 907e5c31af7Sopenharmony_ci #version 300 es 908e5c31af7Sopenharmony_ci precision mediump float; 909e5c31af7Sopenharmony_ci ${DECLARATIONS} 910e5c31af7Sopenharmony_ci 911e5c31af7Sopenharmony_ci bool[3] func(bool[3]); 912e5c31af7Sopenharmony_ci 913e5c31af7Sopenharmony_ci void main() 914e5c31af7Sopenharmony_ci { 915e5c31af7Sopenharmony_ci ${SETUP} 916e5c31af7Sopenharmony_ci bool[3] a = bool[3] (in0.x, in0.y, in0.z); 917e5c31af7Sopenharmony_ci bool[3] b = func(a); 918e5c31af7Sopenharmony_ci out0 = bvec3(b[0], b[1], b[2]); 919e5c31af7Sopenharmony_ci ${OUTPUT} 920e5c31af7Sopenharmony_ci } 921e5c31af7Sopenharmony_ci 922e5c31af7Sopenharmony_ci bool[3] func(bool[3] a) 923e5c31af7Sopenharmony_ci { 924e5c31af7Sopenharmony_ci return bool[3] (a[2], a[0], a[1]); 925e5c31af7Sopenharmony_ci } 926e5c31af7Sopenharmony_ci 927e5c31af7Sopenharmony_ci "" 928e5c31af7Sopenharmony_ci end 929e5c31af7Sopenharmony_ci 930e5c31af7Sopenharmony_ci case struct 931e5c31af7Sopenharmony_ci version 300 es 932e5c31af7Sopenharmony_ci values 933e5c31af7Sopenharmony_ci { 934e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; 935e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(-1.0, 2.0, 0.5) ]; 936e5c31af7Sopenharmony_ci } 937e5c31af7Sopenharmony_ci 938e5c31af7Sopenharmony_ci both "" 939e5c31af7Sopenharmony_ci #version 300 es 940e5c31af7Sopenharmony_ci precision mediump float; 941e5c31af7Sopenharmony_ci ${DECLARATIONS} 942e5c31af7Sopenharmony_ci 943e5c31af7Sopenharmony_ci struct test 944e5c31af7Sopenharmony_ci { 945e5c31af7Sopenharmony_ci float f; 946e5c31af7Sopenharmony_ci vec3 v; 947e5c31af7Sopenharmony_ci }; 948e5c31af7Sopenharmony_ci 949e5c31af7Sopenharmony_ci test[3] func(test[3]); 950e5c31af7Sopenharmony_ci 951e5c31af7Sopenharmony_ci void main() 952e5c31af7Sopenharmony_ci { 953e5c31af7Sopenharmony_ci ${SETUP} 954e5c31af7Sopenharmony_ci 955e5c31af7Sopenharmony_ci test a = test(in0.z, vec3(in0.x, in0.y, in0.z)); 956e5c31af7Sopenharmony_ci test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y)); 957e5c31af7Sopenharmony_ci test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x)); 958e5c31af7Sopenharmony_ci 959e5c31af7Sopenharmony_ci test[3] t = test[3] (a, b, c); 960e5c31af7Sopenharmony_ci test[3] x = func(t); 961e5c31af7Sopenharmony_ci out0 = vec3(x[0].v.z, x[1].v.y, x[2].v.x); 962e5c31af7Sopenharmony_ci ${OUTPUT} 963e5c31af7Sopenharmony_ci } 964e5c31af7Sopenharmony_ci 965e5c31af7Sopenharmony_ci test[3] func(test[3] a) 966e5c31af7Sopenharmony_ci { 967e5c31af7Sopenharmony_ci return test[3] (a[1], a[2], a[0]); 968e5c31af7Sopenharmony_ci } 969e5c31af7Sopenharmony_ci 970e5c31af7Sopenharmony_ci "" 971e5c31af7Sopenharmony_ci end 972e5c31af7Sopenharmony_ci 973e5c31af7Sopenharmony_ci case float_vec3 974e5c31af7Sopenharmony_ci version 300 es 975e5c31af7Sopenharmony_ci values 976e5c31af7Sopenharmony_ci { 977e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-0.5, 11.2, -1.0) ]; 978e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(1.0, 0.5, -2.0) | vec3(11.2, -0.5, 1.0) ]; 979e5c31af7Sopenharmony_ci } 980e5c31af7Sopenharmony_ci 981e5c31af7Sopenharmony_ci both "" 982e5c31af7Sopenharmony_ci #version 300 es 983e5c31af7Sopenharmony_ci precision mediump float; 984e5c31af7Sopenharmony_ci ${DECLARATIONS} 985e5c31af7Sopenharmony_ci 986e5c31af7Sopenharmony_ci vec3[3] func(vec3[3]); 987e5c31af7Sopenharmony_ci 988e5c31af7Sopenharmony_ci void main() 989e5c31af7Sopenharmony_ci { 990e5c31af7Sopenharmony_ci ${SETUP} 991e5c31af7Sopenharmony_ci vec3[3] x = vec3[3](vec3(in0.x, in0.y, -in0.z) , 992e5c31af7Sopenharmony_ci vec3(in0.y, -in0.z, in0.x) , 993e5c31af7Sopenharmony_ci vec3(-in0.z, in0.x, in0.y) ); 994e5c31af7Sopenharmony_ci x = func(x); 995e5c31af7Sopenharmony_ci out0 = vec3(x[0].x, x[1].y, x[2].z); 996e5c31af7Sopenharmony_ci ${OUTPUT} 997e5c31af7Sopenharmony_ci } 998e5c31af7Sopenharmony_ci 999e5c31af7Sopenharmony_ci vec3[3] func(vec3[3] a) 1000e5c31af7Sopenharmony_ci { 1001e5c31af7Sopenharmony_ci return vec3[3] (a[1], a[2], a[0]); 1002e5c31af7Sopenharmony_ci } 1003e5c31af7Sopenharmony_ci "" 1004e5c31af7Sopenharmony_ci end 1005e5c31af7Sopenharmony_ci 1006e5c31af7Sopenharmony_ci case int_vec3 1007e5c31af7Sopenharmony_ci version 300 es 1008e5c31af7Sopenharmony_ci values 1009e5c31af7Sopenharmony_ci { 1010e5c31af7Sopenharmony_ci input ivec3 in0 = [ ivec3(5, 1, 2) | ivec3(-5, 11, -1) ]; 1011e5c31af7Sopenharmony_ci output ivec3 out0 = [ ivec3(1, 5, -2) | ivec3(11, -5, 1) ]; 1012e5c31af7Sopenharmony_ci } 1013e5c31af7Sopenharmony_ci 1014e5c31af7Sopenharmony_ci both "" 1015e5c31af7Sopenharmony_ci #version 300 es 1016e5c31af7Sopenharmony_ci precision mediump int; 1017e5c31af7Sopenharmony_ci precision mediump float; 1018e5c31af7Sopenharmony_ci ${DECLARATIONS} 1019e5c31af7Sopenharmony_ci 1020e5c31af7Sopenharmony_ci ivec3[3] func(ivec3[3]); 1021e5c31af7Sopenharmony_ci 1022e5c31af7Sopenharmony_ci void main() 1023e5c31af7Sopenharmony_ci { 1024e5c31af7Sopenharmony_ci ${SETUP} 1025e5c31af7Sopenharmony_ci ivec3[3] x = ivec3[3]( ivec3(in0.x, in0.y, -in0.z) , 1026e5c31af7Sopenharmony_ci ivec3(in0.y, -in0.z, in0.x) , 1027e5c31af7Sopenharmony_ci ivec3(-in0.z, in0.x, in0.y) ); 1028e5c31af7Sopenharmony_ci x = func(x); 1029e5c31af7Sopenharmony_ci out0 = ivec3(x[0].x, x[1].y, x[2].z); 1030e5c31af7Sopenharmony_ci ${OUTPUT} 1031e5c31af7Sopenharmony_ci } 1032e5c31af7Sopenharmony_ci 1033e5c31af7Sopenharmony_ci ivec3[3] func(ivec3[3] a) 1034e5c31af7Sopenharmony_ci { 1035e5c31af7Sopenharmony_ci return ivec3[3] (a[1], a[2], a[0]); 1036e5c31af7Sopenharmony_ci } 1037e5c31af7Sopenharmony_ci "" 1038e5c31af7Sopenharmony_ci end 1039e5c31af7Sopenharmony_ci 1040e5c31af7Sopenharmony_ci case bool_vec3 1041e5c31af7Sopenharmony_ci version 300 es 1042e5c31af7Sopenharmony_ci values 1043e5c31af7Sopenharmony_ci { 1044e5c31af7Sopenharmony_ci input bvec3 in0 = [ bvec3(true, false, false) ]; 1045e5c31af7Sopenharmony_ci output bvec3 out0 = [ bvec3(false, true, false) ]; 1046e5c31af7Sopenharmony_ci } 1047e5c31af7Sopenharmony_ci 1048e5c31af7Sopenharmony_ci both "" 1049e5c31af7Sopenharmony_ci #version 300 es 1050e5c31af7Sopenharmony_ci precision mediump int; 1051e5c31af7Sopenharmony_ci precision mediump float; 1052e5c31af7Sopenharmony_ci ${DECLARATIONS} 1053e5c31af7Sopenharmony_ci 1054e5c31af7Sopenharmony_ci bvec3[3] func(bvec3[3]); 1055e5c31af7Sopenharmony_ci 1056e5c31af7Sopenharmony_ci void main() 1057e5c31af7Sopenharmony_ci { 1058e5c31af7Sopenharmony_ci ${SETUP} 1059e5c31af7Sopenharmony_ci bvec3[3] x = bvec3[3]( bvec3(in0.x, in0.y, in0.z) , 1060e5c31af7Sopenharmony_ci bvec3(in0.y, in0.z, in0.x) , 1061e5c31af7Sopenharmony_ci bvec3(in0.z, in0.x, in0.y) ); 1062e5c31af7Sopenharmony_ci x = func(x); 1063e5c31af7Sopenharmony_ci out0 = bvec3(x[0].x, x[1].y, x[2].z); 1064e5c31af7Sopenharmony_ci ${OUTPUT} 1065e5c31af7Sopenharmony_ci } 1066e5c31af7Sopenharmony_ci 1067e5c31af7Sopenharmony_ci bvec3[3] func(bvec3[3] a) 1068e5c31af7Sopenharmony_ci { 1069e5c31af7Sopenharmony_ci return bvec3[3] (a[1], a[2], a[0]); 1070e5c31af7Sopenharmony_ci } 1071e5c31af7Sopenharmony_ci 1072e5c31af7Sopenharmony_ci "" 1073e5c31af7Sopenharmony_ci end 1074e5c31af7Sopenharmony_ci 1075e5c31af7Sopenharmony_ci case float_mat3 1076e5c31af7Sopenharmony_ci version 300 es 1077e5c31af7Sopenharmony_ci values 1078e5c31af7Sopenharmony_ci { 1079e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-1.5, 0.0, -2.3) ]; 1080e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(2.0, -1.0, 2.0) | vec3(-2.3, 0.0, -2.3) ]; 1081e5c31af7Sopenharmony_ci } 1082e5c31af7Sopenharmony_ci 1083e5c31af7Sopenharmony_ci both "" 1084e5c31af7Sopenharmony_ci #version 300 es 1085e5c31af7Sopenharmony_ci precision mediump float; 1086e5c31af7Sopenharmony_ci ${DECLARATIONS} 1087e5c31af7Sopenharmony_ci 1088e5c31af7Sopenharmony_ci mat3[3] func(mat3[3]); 1089e5c31af7Sopenharmony_ci 1090e5c31af7Sopenharmony_ci void main() 1091e5c31af7Sopenharmony_ci { 1092e5c31af7Sopenharmony_ci ${SETUP} 1093e5c31af7Sopenharmony_ci mat3[3] a, b; 1094e5c31af7Sopenharmony_ci a[0] = mat3(in0.x, in0.y, in0.z, 1095e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z, 1096e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z); 1097e5c31af7Sopenharmony_ci a[1] = mat3(in0.z, in0.x, -in0.y, 1098e5c31af7Sopenharmony_ci in0.z, in0.x, -in0.y, 1099e5c31af7Sopenharmony_ci in0.z, in0.x, -in0.y); 1100e5c31af7Sopenharmony_ci a[2] = mat3(-in0.z, -in0.z, in0.z, 1101e5c31af7Sopenharmony_ci -in0.y, -in0.y, in0.y, 1102e5c31af7Sopenharmony_ci -in0.x, -in0.x, in0.x); 1103e5c31af7Sopenharmony_ci 1104e5c31af7Sopenharmony_ci b = func(a); 1105e5c31af7Sopenharmony_ci 1106e5c31af7Sopenharmony_ci mat3 b0 = b[0]; 1107e5c31af7Sopenharmony_ci mat3 b1 = b[1]; 1108e5c31af7Sopenharmony_ci mat3 b2 = b[2]; 1109e5c31af7Sopenharmony_ci 1110e5c31af7Sopenharmony_ci float ret0 = b0[0][0]; 1111e5c31af7Sopenharmony_ci float ret1 = b1[1][1]; 1112e5c31af7Sopenharmony_ci float ret2 = b2[2][2]; 1113e5c31af7Sopenharmony_ci 1114e5c31af7Sopenharmony_ci out0 = vec3(ret0, ret1, ret2); 1115e5c31af7Sopenharmony_ci ${OUTPUT} 1116e5c31af7Sopenharmony_ci } 1117e5c31af7Sopenharmony_ci 1118e5c31af7Sopenharmony_ci mat3[3] func(mat3[3] x) 1119e5c31af7Sopenharmony_ci { 1120e5c31af7Sopenharmony_ci mat3[3] r; 1121e5c31af7Sopenharmony_ci r[0] = x[1]; 1122e5c31af7Sopenharmony_ci r[1] = x[2]; 1123e5c31af7Sopenharmony_ci r[2] = x[0]; 1124e5c31af7Sopenharmony_ci return r; 1125e5c31af7Sopenharmony_ci } 1126e5c31af7Sopenharmony_ci "" 1127e5c31af7Sopenharmony_ci end 1128e5c31af7Sopenharmony_ci 1129e5c31af7Sopenharmony_ci case int_mat3 1130e5c31af7Sopenharmony_ci version 300 es 1131e5c31af7Sopenharmony_ci values 1132e5c31af7Sopenharmony_ci { 1133e5c31af7Sopenharmony_ci input ivec3 in0 = [ ivec3(5, 1, 2) | ivec3(-1, 0, -2) ]; 1134e5c31af7Sopenharmony_ci output ivec3 out0 = [ ivec3(2, -1, 2) | ivec3(-2, 0, -2) ]; 1135e5c31af7Sopenharmony_ci } 1136e5c31af7Sopenharmony_ci 1137e5c31af7Sopenharmony_ci both "" 1138e5c31af7Sopenharmony_ci #version 300 es 1139e5c31af7Sopenharmony_ci precision mediump int; 1140e5c31af7Sopenharmony_ci precision mediump float; 1141e5c31af7Sopenharmony_ci ${DECLARATIONS} 1142e5c31af7Sopenharmony_ci 1143e5c31af7Sopenharmony_ci mat3[3] func(mat3[3]); 1144e5c31af7Sopenharmony_ci 1145e5c31af7Sopenharmony_ci void main() 1146e5c31af7Sopenharmony_ci { 1147e5c31af7Sopenharmony_ci ${SETUP} 1148e5c31af7Sopenharmony_ci mat3[3] a, b; 1149e5c31af7Sopenharmony_ci a[0] = mat3(in0.x, in0.y, in0.z, 1150e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z, 1151e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z); 1152e5c31af7Sopenharmony_ci a[1] = mat3(in0.z, in0.x, -in0.y, 1153e5c31af7Sopenharmony_ci in0.z, in0.x, -in0.y, 1154e5c31af7Sopenharmony_ci in0.z, in0.x, -in0.y); 1155e5c31af7Sopenharmony_ci a[2] = mat3(-in0.z, -in0.z, in0.z, 1156e5c31af7Sopenharmony_ci -in0.y, -in0.y, in0.y, 1157e5c31af7Sopenharmony_ci -in0.x, -in0.x, in0.x); 1158e5c31af7Sopenharmony_ci 1159e5c31af7Sopenharmony_ci b = func(a); 1160e5c31af7Sopenharmony_ci 1161e5c31af7Sopenharmony_ci mat3 b0 = b[0]; 1162e5c31af7Sopenharmony_ci mat3 b1 = b[1]; 1163e5c31af7Sopenharmony_ci mat3 b2 = b[2]; 1164e5c31af7Sopenharmony_ci 1165e5c31af7Sopenharmony_ci float ret0 = b0[0][0]; 1166e5c31af7Sopenharmony_ci float ret1 = b1[1][1]; 1167e5c31af7Sopenharmony_ci float ret2 = b2[2][2]; 1168e5c31af7Sopenharmony_ci 1169e5c31af7Sopenharmony_ci out0 = ivec3(ret0, ret1, ret2); 1170e5c31af7Sopenharmony_ci ${OUTPUT} 1171e5c31af7Sopenharmony_ci } 1172e5c31af7Sopenharmony_ci 1173e5c31af7Sopenharmony_ci mat3[3] func(mat3[3] x) 1174e5c31af7Sopenharmony_ci { 1175e5c31af7Sopenharmony_ci mat3[3] r; 1176e5c31af7Sopenharmony_ci r[0] = x[1]; 1177e5c31af7Sopenharmony_ci r[1] = x[2]; 1178e5c31af7Sopenharmony_ci r[2] = x[0]; 1179e5c31af7Sopenharmony_ci return r; 1180e5c31af7Sopenharmony_ci } 1181e5c31af7Sopenharmony_ci "" 1182e5c31af7Sopenharmony_ci end 1183e5c31af7Sopenharmony_ci 1184e5c31af7Sopenharmony_ci case bool_mat3 1185e5c31af7Sopenharmony_ci version 300 es 1186e5c31af7Sopenharmony_ci values 1187e5c31af7Sopenharmony_ci { 1188e5c31af7Sopenharmony_ci input bvec3 in0 = [ bvec3(true, false, true) | bvec3(true, true, false) ]; 1189e5c31af7Sopenharmony_ci output bvec3 out0 = [ bvec3(true, false, true) | bvec3(false, true, false) ]; 1190e5c31af7Sopenharmony_ci } 1191e5c31af7Sopenharmony_ci 1192e5c31af7Sopenharmony_ci both "" 1193e5c31af7Sopenharmony_ci #version 300 es 1194e5c31af7Sopenharmony_ci precision mediump float; 1195e5c31af7Sopenharmony_ci ${DECLARATIONS} 1196e5c31af7Sopenharmony_ci 1197e5c31af7Sopenharmony_ci mat3[3] func(mat3[3]); 1198e5c31af7Sopenharmony_ci void main() 1199e5c31af7Sopenharmony_ci { 1200e5c31af7Sopenharmony_ci ${SETUP} 1201e5c31af7Sopenharmony_ci mat3[3] a, b; 1202e5c31af7Sopenharmony_ci a[0] = mat3(in0.x, in0.y, in0.z, 1203e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z, 1204e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z); 1205e5c31af7Sopenharmony_ci a[1] = mat3(in0.z, in0.x, in0.y, 1206e5c31af7Sopenharmony_ci in0.z, in0.x, in0.y, 1207e5c31af7Sopenharmony_ci in0.z, in0.x, in0.y); 1208e5c31af7Sopenharmony_ci a[2] = mat3(in0.z, in0.z, in0.z, 1209e5c31af7Sopenharmony_ci in0.y, in0.y, in0.y, 1210e5c31af7Sopenharmony_ci in0.x, in0.x, in0.x); 1211e5c31af7Sopenharmony_ci 1212e5c31af7Sopenharmony_ci b = func(a); 1213e5c31af7Sopenharmony_ci 1214e5c31af7Sopenharmony_ci mat3 b0 = b[0]; 1215e5c31af7Sopenharmony_ci mat3 b1 = b[1]; 1216e5c31af7Sopenharmony_ci mat3 b2 = b[2]; 1217e5c31af7Sopenharmony_ci 1218e5c31af7Sopenharmony_ci float ret0 = b0[0][0]; 1219e5c31af7Sopenharmony_ci float ret1 = b1[1][1]; 1220e5c31af7Sopenharmony_ci float ret2 = b2[2][2]; 1221e5c31af7Sopenharmony_ci 1222e5c31af7Sopenharmony_ci out0 = bvec3(ret0, ret1, ret2); 1223e5c31af7Sopenharmony_ci ${OUTPUT} 1224e5c31af7Sopenharmony_ci } 1225e5c31af7Sopenharmony_ci 1226e5c31af7Sopenharmony_ci mat3[3] func(mat3[3] x) 1227e5c31af7Sopenharmony_ci { 1228e5c31af7Sopenharmony_ci mat3[3] r; 1229e5c31af7Sopenharmony_ci r[0] = x[1]; 1230e5c31af7Sopenharmony_ci r[1] = x[2]; 1231e5c31af7Sopenharmony_ci r[2] = x[0]; 1232e5c31af7Sopenharmony_ci return r; 1233e5c31af7Sopenharmony_ci } 1234e5c31af7Sopenharmony_ci "" 1235e5c31af7Sopenharmony_ci end 1236e5c31af7Sopenharmony_ci 1237e5c31af7Sopenharmony_ciend # unnamed_parameter 1238e5c31af7Sopenharmony_ci 1239e5c31af7Sopenharmony_cigroup declaration "Declaring arrays" 1240e5c31af7Sopenharmony_ci 1241e5c31af7Sopenharmony_ci case implicit_size_float 1242e5c31af7Sopenharmony_ci version 300 es 1243e5c31af7Sopenharmony_ci values 1244e5c31af7Sopenharmony_ci { 1245e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(7.4, -1.0, 2.0) | vec3(3.0, 1.6, -2.0) ]; 1246e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(2.0, 0.5, 1.0) | vec3(2.0, 7.4, -1.0) | vec3(-2.0, 3.0, 1.6) ]; 1247e5c31af7Sopenharmony_ci } 1248e5c31af7Sopenharmony_ci 1249e5c31af7Sopenharmony_ci both "" 1250e5c31af7Sopenharmony_ci #version 300 es 1251e5c31af7Sopenharmony_ci precision mediump float; 1252e5c31af7Sopenharmony_ci ${DECLARATIONS} 1253e5c31af7Sopenharmony_ci 1254e5c31af7Sopenharmony_ci void main() 1255e5c31af7Sopenharmony_ci { 1256e5c31af7Sopenharmony_ci ${SETUP} 1257e5c31af7Sopenharmony_ci float[] x = float[] (in0.z, in0.x, in0.y); 1258e5c31af7Sopenharmony_ci float[] y = x; 1259e5c31af7Sopenharmony_ci 1260e5c31af7Sopenharmony_ci out0 = vec3(y[0], y[1], y[2]); 1261e5c31af7Sopenharmony_ci ${OUTPUT} 1262e5c31af7Sopenharmony_ci } 1263e5c31af7Sopenharmony_ci "" 1264e5c31af7Sopenharmony_ci end 1265e5c31af7Sopenharmony_ci 1266e5c31af7Sopenharmony_ci case implicit_size_int 1267e5c31af7Sopenharmony_ci version 300 es 1268e5c31af7Sopenharmony_ci values 1269e5c31af7Sopenharmony_ci { 1270e5c31af7Sopenharmony_ci input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(7, -1, 2) | ivec3(3, 1, -2) ]; 1271e5c31af7Sopenharmony_ci output ivec3 out0 = [ ivec3(2, 0, 1) | ivec3(2, 7, -1) | ivec3(-2, 3, 1) ]; 1272e5c31af7Sopenharmony_ci } 1273e5c31af7Sopenharmony_ci 1274e5c31af7Sopenharmony_ci both "" 1275e5c31af7Sopenharmony_ci #version 300 es 1276e5c31af7Sopenharmony_ci precision mediump int; 1277e5c31af7Sopenharmony_ci precision mediump float; 1278e5c31af7Sopenharmony_ci ${DECLARATIONS} 1279e5c31af7Sopenharmony_ci 1280e5c31af7Sopenharmony_ci void main() 1281e5c31af7Sopenharmony_ci { 1282e5c31af7Sopenharmony_ci ${SETUP} 1283e5c31af7Sopenharmony_ci int[] x = int[] (in0.z, in0.x, in0.y); 1284e5c31af7Sopenharmony_ci int[] y = x; 1285e5c31af7Sopenharmony_ci 1286e5c31af7Sopenharmony_ci out0 = ivec3(y[0], y[1], y[2]); 1287e5c31af7Sopenharmony_ci ${OUTPUT} 1288e5c31af7Sopenharmony_ci } 1289e5c31af7Sopenharmony_ci "" 1290e5c31af7Sopenharmony_ci end 1291e5c31af7Sopenharmony_ci 1292e5c31af7Sopenharmony_ci case implicit_size_bool 1293e5c31af7Sopenharmony_ci version 300 es 1294e5c31af7Sopenharmony_ci values 1295e5c31af7Sopenharmony_ci { 1296e5c31af7Sopenharmony_ci input bvec3 in0 = [ bvec3(false, true, true) ]; 1297e5c31af7Sopenharmony_ci output bvec3 out0 = [ bvec3(true, false, true) ]; 1298e5c31af7Sopenharmony_ci } 1299e5c31af7Sopenharmony_ci 1300e5c31af7Sopenharmony_ci both "" 1301e5c31af7Sopenharmony_ci #version 300 es 1302e5c31af7Sopenharmony_ci precision mediump float; 1303e5c31af7Sopenharmony_ci ${DECLARATIONS} 1304e5c31af7Sopenharmony_ci 1305e5c31af7Sopenharmony_ci void main() 1306e5c31af7Sopenharmony_ci { 1307e5c31af7Sopenharmony_ci ${SETUP} 1308e5c31af7Sopenharmony_ci bool[] x = bool[] (in0.z, in0.x, in0.y); 1309e5c31af7Sopenharmony_ci bool[] y = x; 1310e5c31af7Sopenharmony_ci 1311e5c31af7Sopenharmony_ci out0 = bvec3(y[0], y[1], y[2]); 1312e5c31af7Sopenharmony_ci ${OUTPUT} 1313e5c31af7Sopenharmony_ci } 1314e5c31af7Sopenharmony_ci "" 1315e5c31af7Sopenharmony_ci end 1316e5c31af7Sopenharmony_ci 1317e5c31af7Sopenharmony_ci case implicit_size_struct 1318e5c31af7Sopenharmony_ci version 300 es 1319e5c31af7Sopenharmony_ci values 1320e5c31af7Sopenharmony_ci { 1321e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; 1322e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(-1.0, -0.5, 2.0) ]; 1323e5c31af7Sopenharmony_ci } 1324e5c31af7Sopenharmony_ci 1325e5c31af7Sopenharmony_ci both "" 1326e5c31af7Sopenharmony_ci #version 300 es 1327e5c31af7Sopenharmony_ci precision mediump float; 1328e5c31af7Sopenharmony_ci ${DECLARATIONS} 1329e5c31af7Sopenharmony_ci 1330e5c31af7Sopenharmony_ci struct test 1331e5c31af7Sopenharmony_ci { 1332e5c31af7Sopenharmony_ci float f; 1333e5c31af7Sopenharmony_ci vec3 v; 1334e5c31af7Sopenharmony_ci }; 1335e5c31af7Sopenharmony_ci 1336e5c31af7Sopenharmony_ci void main() 1337e5c31af7Sopenharmony_ci { 1338e5c31af7Sopenharmony_ci ${SETUP} 1339e5c31af7Sopenharmony_ci 1340e5c31af7Sopenharmony_ci test a = test(in0.z, vec3(in0.x, in0.y, in0.z)); 1341e5c31af7Sopenharmony_ci test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y)); 1342e5c31af7Sopenharmony_ci test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x)); 1343e5c31af7Sopenharmony_ci 1344e5c31af7Sopenharmony_ci test[] x = test[] (c, b, a); 1345e5c31af7Sopenharmony_ci test[] y = x; 1346e5c31af7Sopenharmony_ci 1347e5c31af7Sopenharmony_ci out0 = vec3(y[0].v.x, y[1].v.y, y[2].v.z); 1348e5c31af7Sopenharmony_ci ${OUTPUT} 1349e5c31af7Sopenharmony_ci } 1350e5c31af7Sopenharmony_ci "" 1351e5c31af7Sopenharmony_ci end 1352e5c31af7Sopenharmony_ci 1353e5c31af7Sopenharmony_ci case implicit_size_float_vec3 1354e5c31af7Sopenharmony_ci version 300 es 1355e5c31af7Sopenharmony_ci values 1356e5c31af7Sopenharmony_ci { 1357e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-0.5, 11.2, -1.0) ]; 1358e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(0.5, -2.0, 1.0) | vec3(-0.5, 1.0, 11.2) ]; 1359e5c31af7Sopenharmony_ci } 1360e5c31af7Sopenharmony_ci 1361e5c31af7Sopenharmony_ci both "" 1362e5c31af7Sopenharmony_ci #version 300 es 1363e5c31af7Sopenharmony_ci precision mediump float; 1364e5c31af7Sopenharmony_ci ${DECLARATIONS} 1365e5c31af7Sopenharmony_ci 1366e5c31af7Sopenharmony_ci void main() 1367e5c31af7Sopenharmony_ci { 1368e5c31af7Sopenharmony_ci ${SETUP} 1369e5c31af7Sopenharmony_ci vec3[] x = vec3[] ( vec3(in0.x, in0.y, -in0.z) , 1370e5c31af7Sopenharmony_ci vec3(in0.y, -in0.z, in0.x) , 1371e5c31af7Sopenharmony_ci vec3(-in0.z, in0.x, in0.y) ); 1372e5c31af7Sopenharmony_ci vec3[] y = x; 1373e5c31af7Sopenharmony_ci out0 = vec3(y[0].x, y[1].y, y[2].z); 1374e5c31af7Sopenharmony_ci ${OUTPUT} 1375e5c31af7Sopenharmony_ci } 1376e5c31af7Sopenharmony_ci "" 1377e5c31af7Sopenharmony_ci end 1378e5c31af7Sopenharmony_ci 1379e5c31af7Sopenharmony_ci case implicit_size_int_ivec3 1380e5c31af7Sopenharmony_ci version 300 es 1381e5c31af7Sopenharmony_ci values 1382e5c31af7Sopenharmony_ci { 1383e5c31af7Sopenharmony_ci input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(5, 11, -1) ]; 1384e5c31af7Sopenharmony_ci output ivec3 out0 = [ ivec3(0, -2, 1) | ivec3(5, 1, 11) ]; 1385e5c31af7Sopenharmony_ci } 1386e5c31af7Sopenharmony_ci 1387e5c31af7Sopenharmony_ci both "" 1388e5c31af7Sopenharmony_ci #version 300 es 1389e5c31af7Sopenharmony_ci precision mediump int; 1390e5c31af7Sopenharmony_ci precision mediump float; 1391e5c31af7Sopenharmony_ci ${DECLARATIONS} 1392e5c31af7Sopenharmony_ci 1393e5c31af7Sopenharmony_ci void main() 1394e5c31af7Sopenharmony_ci { 1395e5c31af7Sopenharmony_ci ${SETUP} 1396e5c31af7Sopenharmony_ci ivec3[] x = ivec3[] ( ivec3(in0.x, in0.y, -in0.z) , 1397e5c31af7Sopenharmony_ci ivec3(in0.y, -in0.z, in0.x) , 1398e5c31af7Sopenharmony_ci ivec3(-in0.z, in0.x, in0.y) ); 1399e5c31af7Sopenharmony_ci ivec3[] y = x; 1400e5c31af7Sopenharmony_ci out0 = ivec3(y[0].x, y[1].y, y[2].z); 1401e5c31af7Sopenharmony_ci ${OUTPUT} 1402e5c31af7Sopenharmony_ci } 1403e5c31af7Sopenharmony_ci "" 1404e5c31af7Sopenharmony_ci end 1405e5c31af7Sopenharmony_ci 1406e5c31af7Sopenharmony_ci case implicit_size_bool_bvec3 1407e5c31af7Sopenharmony_ci version 300 es 1408e5c31af7Sopenharmony_ci values 1409e5c31af7Sopenharmony_ci { 1410e5c31af7Sopenharmony_ci input bvec3 in0 = [ bvec3(true, false, true) ]; 1411e5c31af7Sopenharmony_ci output bvec3 out0 = [ bvec3(true, true, false) ]; 1412e5c31af7Sopenharmony_ci } 1413e5c31af7Sopenharmony_ci 1414e5c31af7Sopenharmony_ci both "" 1415e5c31af7Sopenharmony_ci #version 300 es 1416e5c31af7Sopenharmony_ci precision mediump float; 1417e5c31af7Sopenharmony_ci ${DECLARATIONS} 1418e5c31af7Sopenharmony_ci 1419e5c31af7Sopenharmony_ci void main() 1420e5c31af7Sopenharmony_ci { 1421e5c31af7Sopenharmony_ci ${SETUP} 1422e5c31af7Sopenharmony_ci bvec3[] x = bvec3[] ( bvec3(in0.x, in0.y, in0.z) , 1423e5c31af7Sopenharmony_ci bvec3(in0.y, in0.z, in0.x) , 1424e5c31af7Sopenharmony_ci bvec3(in0.z, in0.x, in0.y) ); 1425e5c31af7Sopenharmony_ci bvec3[] y = x; 1426e5c31af7Sopenharmony_ci out0 = bvec3(y[0].x, y[1].y, y[2].z); 1427e5c31af7Sopenharmony_ci ${OUTPUT} 1428e5c31af7Sopenharmony_ci } 1429e5c31af7Sopenharmony_ci "" 1430e5c31af7Sopenharmony_ci end 1431e5c31af7Sopenharmony_ci 1432e5c31af7Sopenharmony_ci case implicit_size_float_mat3 1433e5c31af7Sopenharmony_ci version 300 es 1434e5c31af7Sopenharmony_ci values 1435e5c31af7Sopenharmony_ci { 1436e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-1.5, 0.0, -2.3) ]; 1437e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(0.5, -1.0, 1.0) | vec3(-1.5, 0.0, 0.0) ]; 1438e5c31af7Sopenharmony_ci } 1439e5c31af7Sopenharmony_ci 1440e5c31af7Sopenharmony_ci both "" 1441e5c31af7Sopenharmony_ci #version 300 es 1442e5c31af7Sopenharmony_ci precision mediump float; 1443e5c31af7Sopenharmony_ci ${DECLARATIONS} 1444e5c31af7Sopenharmony_ci 1445e5c31af7Sopenharmony_ci void main() 1446e5c31af7Sopenharmony_ci { 1447e5c31af7Sopenharmony_ci ${SETUP} 1448e5c31af7Sopenharmony_ci mat3[] a = mat3[] ( mat3( in0.x, in0.y, in0.z, 1449e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z, 1450e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z) , 1451e5c31af7Sopenharmony_ci mat3( in0.z, in0.x, -in0.y, 1452e5c31af7Sopenharmony_ci in0.z, in0.x, -in0.y, 1453e5c31af7Sopenharmony_ci in0.z, in0.x, -in0.y) , 1454e5c31af7Sopenharmony_ci mat3( -in0.z, -in0.z, in0.z, 1455e5c31af7Sopenharmony_ci -in0.y, -in0.y, in0.y, 1456e5c31af7Sopenharmony_ci -in0.x, -in0.x, in0.x) ); 1457e5c31af7Sopenharmony_ci 1458e5c31af7Sopenharmony_ci mat3 a0 = a[0]; 1459e5c31af7Sopenharmony_ci mat3 a1 = a[1]; 1460e5c31af7Sopenharmony_ci mat3 a2 = a[2]; 1461e5c31af7Sopenharmony_ci 1462e5c31af7Sopenharmony_ci float ret0 = a0[2][0]; 1463e5c31af7Sopenharmony_ci float ret1 = a1[0][2]; 1464e5c31af7Sopenharmony_ci float ret2 = a2[1][2]; 1465e5c31af7Sopenharmony_ci 1466e5c31af7Sopenharmony_ci out0 = vec3(ret0, ret1, ret2); 1467e5c31af7Sopenharmony_ci ${OUTPUT} 1468e5c31af7Sopenharmony_ci } 1469e5c31af7Sopenharmony_ci "" 1470e5c31af7Sopenharmony_ci end 1471e5c31af7Sopenharmony_ci 1472e5c31af7Sopenharmony_ci case implicit_size_int_mat3 1473e5c31af7Sopenharmony_ci version 300 es 1474e5c31af7Sopenharmony_ci values 1475e5c31af7Sopenharmony_ci { 1476e5c31af7Sopenharmony_ci input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(-1, 0, -2) ]; 1477e5c31af7Sopenharmony_ci output ivec3 out0 = [ ivec3(0, -1, 1) | ivec3(-1, 0, 0) ]; 1478e5c31af7Sopenharmony_ci } 1479e5c31af7Sopenharmony_ci 1480e5c31af7Sopenharmony_ci both "" 1481e5c31af7Sopenharmony_ci #version 300 es 1482e5c31af7Sopenharmony_ci precision mediump int; 1483e5c31af7Sopenharmony_ci precision mediump float; 1484e5c31af7Sopenharmony_ci ${DECLARATIONS} 1485e5c31af7Sopenharmony_ci 1486e5c31af7Sopenharmony_ci void main() 1487e5c31af7Sopenharmony_ci { 1488e5c31af7Sopenharmony_ci ${SETUP} 1489e5c31af7Sopenharmony_ci mat3[] a = mat3[] ( mat3( in0.x, in0.y, in0.z, 1490e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z, 1491e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z) , 1492e5c31af7Sopenharmony_ci mat3( in0.z, in0.x, -in0.y, 1493e5c31af7Sopenharmony_ci in0.z, in0.x, -in0.y, 1494e5c31af7Sopenharmony_ci in0.z, in0.x, -in0.y) , 1495e5c31af7Sopenharmony_ci mat3( -in0.z, -in0.z, in0.z, 1496e5c31af7Sopenharmony_ci -in0.y, -in0.y, in0.y, 1497e5c31af7Sopenharmony_ci -in0.x, -in0.x, in0.x) ); 1498e5c31af7Sopenharmony_ci 1499e5c31af7Sopenharmony_ci mat3 a0 = a[0]; 1500e5c31af7Sopenharmony_ci mat3 a1 = a[1]; 1501e5c31af7Sopenharmony_ci mat3 a2 = a[2]; 1502e5c31af7Sopenharmony_ci 1503e5c31af7Sopenharmony_ci float ret0 = a0[2][0]; 1504e5c31af7Sopenharmony_ci float ret1 = a1[0][2]; 1505e5c31af7Sopenharmony_ci float ret2 = a2[1][2]; 1506e5c31af7Sopenharmony_ci 1507e5c31af7Sopenharmony_ci out0 = ivec3(ret0, ret1, ret2); 1508e5c31af7Sopenharmony_ci ${OUTPUT} 1509e5c31af7Sopenharmony_ci } 1510e5c31af7Sopenharmony_ci "" 1511e5c31af7Sopenharmony_ci end 1512e5c31af7Sopenharmony_ci 1513e5c31af7Sopenharmony_ci case implicit_size_bool_mat3 1514e5c31af7Sopenharmony_ci version 300 es 1515e5c31af7Sopenharmony_ci values 1516e5c31af7Sopenharmony_ci { 1517e5c31af7Sopenharmony_ci input bvec3 in0 = [ bvec3(true, false, true) ]; 1518e5c31af7Sopenharmony_ci output bvec3 out0 = [ bvec3(true, false, false) ]; 1519e5c31af7Sopenharmony_ci } 1520e5c31af7Sopenharmony_ci 1521e5c31af7Sopenharmony_ci both "" 1522e5c31af7Sopenharmony_ci #version 300 es 1523e5c31af7Sopenharmony_ci precision mediump float; 1524e5c31af7Sopenharmony_ci ${DECLARATIONS} 1525e5c31af7Sopenharmony_ci 1526e5c31af7Sopenharmony_ci void main() 1527e5c31af7Sopenharmony_ci { 1528e5c31af7Sopenharmony_ci ${SETUP} 1529e5c31af7Sopenharmony_ci mat3[] a = mat3[] ( mat3( in0.x, in0.y, in0.z, 1530e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z, 1531e5c31af7Sopenharmony_ci in0.x, in0.y, in0.z) , 1532e5c31af7Sopenharmony_ci mat3( in0.z, in0.x, in0.y, 1533e5c31af7Sopenharmony_ci in0.z, in0.x, in0.y, 1534e5c31af7Sopenharmony_ci in0.z, in0.x, in0.y) , 1535e5c31af7Sopenharmony_ci mat3( in0.z, in0.z, in0.z, 1536e5c31af7Sopenharmony_ci in0.y, in0.y, in0.y, 1537e5c31af7Sopenharmony_ci in0.x, in0.x, in0.x) ); 1538e5c31af7Sopenharmony_ci 1539e5c31af7Sopenharmony_ci mat3 a0 = a[0]; 1540e5c31af7Sopenharmony_ci mat3 a1 = a[1]; 1541e5c31af7Sopenharmony_ci mat3 a2 = a[2]; 1542e5c31af7Sopenharmony_ci 1543e5c31af7Sopenharmony_ci float ret0 = a0[2][0]; 1544e5c31af7Sopenharmony_ci float ret1 = a1[0][2]; 1545e5c31af7Sopenharmony_ci float ret2 = a2[1][2]; 1546e5c31af7Sopenharmony_ci 1547e5c31af7Sopenharmony_ci out0 = bvec3(ret0, ret1, ret2); 1548e5c31af7Sopenharmony_ci ${OUTPUT} 1549e5c31af7Sopenharmony_ci } 1550e5c31af7Sopenharmony_ci "" 1551e5c31af7Sopenharmony_ci end 1552e5c31af7Sopenharmony_ci 1553e5c31af7Sopenharmony_ci 1554e5c31af7Sopenharmony_ci case constant_expression_array_size 1555e5c31af7Sopenharmony_ci version 300 es 1556e5c31af7Sopenharmony_ci 1557e5c31af7Sopenharmony_ci both "" 1558e5c31af7Sopenharmony_ci #version 300 es 1559e5c31af7Sopenharmony_ci precision mediump float; 1560e5c31af7Sopenharmony_ci ${DECLARATIONS} 1561e5c31af7Sopenharmony_ci 1562e5c31af7Sopenharmony_ci const int a = 4; 1563e5c31af7Sopenharmony_ci 1564e5c31af7Sopenharmony_ci void main () 1565e5c31af7Sopenharmony_ci { 1566e5c31af7Sopenharmony_ci const int b = 5; 1567e5c31af7Sopenharmony_ci float[a] array1; 1568e5c31af7Sopenharmony_ci float[b] array2; 1569e5c31af7Sopenharmony_ci float[array1.length()] array3; 1570e5c31af7Sopenharmony_ci float[a+b] array4; 1571e5c31af7Sopenharmony_ci ${OUTPUT} 1572e5c31af7Sopenharmony_ci } 1573e5c31af7Sopenharmony_ci "" 1574e5c31af7Sopenharmony_ci end 1575e5c31af7Sopenharmony_ci 1576e5c31af7Sopenharmony_ci case constant_expression_array_access 1577e5c31af7Sopenharmony_ci version 300 es 1578e5c31af7Sopenharmony_ci values 1579e5c31af7Sopenharmony_ci { 1580e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; 1581e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(-2.0, -1.0, -0.5) ]; 1582e5c31af7Sopenharmony_ci } 1583e5c31af7Sopenharmony_ci 1584e5c31af7Sopenharmony_ci both "" 1585e5c31af7Sopenharmony_ci #version 300 es 1586e5c31af7Sopenharmony_ci precision mediump float; 1587e5c31af7Sopenharmony_ci ${DECLARATIONS} 1588e5c31af7Sopenharmony_ci 1589e5c31af7Sopenharmony_ci const int a = 3; 1590e5c31af7Sopenharmony_ci 1591e5c31af7Sopenharmony_ci void main () 1592e5c31af7Sopenharmony_ci { 1593e5c31af7Sopenharmony_ci ${SETUP} 1594e5c31af7Sopenharmony_ci const int b = 2; 1595e5c31af7Sopenharmony_ci float x = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [a]; 1596e5c31af7Sopenharmony_ci float y = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [b+2]; 1597e5c31af7Sopenharmony_ci float z = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [5]; 1598e5c31af7Sopenharmony_ci out0 = vec3(x, y, z); 1599e5c31af7Sopenharmony_ci ${OUTPUT} 1600e5c31af7Sopenharmony_ci } 1601e5c31af7Sopenharmony_ci "" 1602e5c31af7Sopenharmony_ci end 1603e5c31af7Sopenharmony_ci 1604e5c31af7Sopenharmony_ci case dynamic_expression_array_access 1605e5c31af7Sopenharmony_ci version 300 es 1606e5c31af7Sopenharmony_ci values 1607e5c31af7Sopenharmony_ci { 1608e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; 1609e5c31af7Sopenharmony_ci input ivec2 in1 = ivec2(3, 2); 1610e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(-2.0, -1.0, -0.5) ]; 1611e5c31af7Sopenharmony_ci } 1612e5c31af7Sopenharmony_ci 1613e5c31af7Sopenharmony_ci both "" 1614e5c31af7Sopenharmony_ci #version 300 es 1615e5c31af7Sopenharmony_ci precision mediump float; 1616e5c31af7Sopenharmony_ci ${DECLARATIONS} 1617e5c31af7Sopenharmony_ci 1618e5c31af7Sopenharmony_ci void main () 1619e5c31af7Sopenharmony_ci { 1620e5c31af7Sopenharmony_ci ${SETUP} 1621e5c31af7Sopenharmony_ci float x = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [in1.x]; 1622e5c31af7Sopenharmony_ci float y = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [in1.y+2]; 1623e5c31af7Sopenharmony_ci float z = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [in1.x+in1.y]; 1624e5c31af7Sopenharmony_ci out0 = vec3(x, y, z); 1625e5c31af7Sopenharmony_ci ${OUTPUT} 1626e5c31af7Sopenharmony_ci } 1627e5c31af7Sopenharmony_ci "" 1628e5c31af7Sopenharmony_ci end 1629e5c31af7Sopenharmony_ci 1630e5c31af7Sopenharmony_ci case multiple_declarations_single_statement_explicit 1631e5c31af7Sopenharmony_ci version 300 es 1632e5c31af7Sopenharmony_ci values 1633e5c31af7Sopenharmony_ci { 1634e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; 1635e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(2.0, -1.0, 0.5) ]; 1636e5c31af7Sopenharmony_ci } 1637e5c31af7Sopenharmony_ci 1638e5c31af7Sopenharmony_ci both "" 1639e5c31af7Sopenharmony_ci #version 300 es 1640e5c31af7Sopenharmony_ci precision mediump float; 1641e5c31af7Sopenharmony_ci ${DECLARATIONS} 1642e5c31af7Sopenharmony_ci 1643e5c31af7Sopenharmony_ci void main () 1644e5c31af7Sopenharmony_ci { 1645e5c31af7Sopenharmony_ci ${SETUP} 1646e5c31af7Sopenharmony_ci float[] x = float[6] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x), 1647e5c31af7Sopenharmony_ci y = float[2] (in0.x, -in0.y); 1648e5c31af7Sopenharmony_ci out0 = vec3(x[2], y[1], x[0]); 1649e5c31af7Sopenharmony_ci ${OUTPUT} 1650e5c31af7Sopenharmony_ci } 1651e5c31af7Sopenharmony_ci "" 1652e5c31af7Sopenharmony_ci end 1653e5c31af7Sopenharmony_ci 1654e5c31af7Sopenharmony_ci case multiple_declarations_single_statement_implicit 1655e5c31af7Sopenharmony_ci version 300 es 1656e5c31af7Sopenharmony_ci values 1657e5c31af7Sopenharmony_ci { 1658e5c31af7Sopenharmony_ci input ivec3 in0 = [ ivec3(5, 1, 2) ]; 1659e5c31af7Sopenharmony_ci output ivec3 out0 = [ ivec3(2, -1, 5) ]; 1660e5c31af7Sopenharmony_ci } 1661e5c31af7Sopenharmony_ci 1662e5c31af7Sopenharmony_ci both "" 1663e5c31af7Sopenharmony_ci #version 300 es 1664e5c31af7Sopenharmony_ci precision mediump float; 1665e5c31af7Sopenharmony_ci ${DECLARATIONS} 1666e5c31af7Sopenharmony_ci 1667e5c31af7Sopenharmony_ci void main () 1668e5c31af7Sopenharmony_ci { 1669e5c31af7Sopenharmony_ci ${SETUP} 1670e5c31af7Sopenharmony_ci int[] x = int[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x), 1671e5c31af7Sopenharmony_ci y = int[] (in0.x, -in0.y); 1672e5c31af7Sopenharmony_ci out0 = ivec3(x[2], y[1], x[0]); 1673e5c31af7Sopenharmony_ci ${OUTPUT} 1674e5c31af7Sopenharmony_ci } 1675e5c31af7Sopenharmony_ci "" 1676e5c31af7Sopenharmony_ci end 1677e5c31af7Sopenharmony_ci 1678e5c31af7Sopenharmony_ciend # declaration 1679e5c31af7Sopenharmony_ci 1680e5c31af7Sopenharmony_cigroup length "Array length method" 1681e5c31af7Sopenharmony_ci 1682e5c31af7Sopenharmony_ci case float 1683e5c31af7Sopenharmony_ci version 300 es 1684e5c31af7Sopenharmony_ci values 1685e5c31af7Sopenharmony_ci { 1686e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; 1687e5c31af7Sopenharmony_ci output ivec3 out0 = [ ivec3(3, 5, 13) ]; 1688e5c31af7Sopenharmony_ci } 1689e5c31af7Sopenharmony_ci 1690e5c31af7Sopenharmony_ci both "" 1691e5c31af7Sopenharmony_ci #version 300 es 1692e5c31af7Sopenharmony_ci precision mediump float; 1693e5c31af7Sopenharmony_ci ${DECLARATIONS} 1694e5c31af7Sopenharmony_ci 1695e5c31af7Sopenharmony_ci void main() 1696e5c31af7Sopenharmony_ci { 1697e5c31af7Sopenharmony_ci ${SETUP} 1698e5c31af7Sopenharmony_ci float[] x = float[3] (in0.z, in0.x, in0.y); 1699e5c31af7Sopenharmony_ci float[] y = float[] (in0.z, in0.x, in0.y, in0.x, in0.y); 1700e5c31af7Sopenharmony_ci float[13] z; 1701e5c31af7Sopenharmony_ci 1702e5c31af7Sopenharmony_ci out0 = ivec3(x.length(), y.length(), z.length()); 1703e5c31af7Sopenharmony_ci ${OUTPUT} 1704e5c31af7Sopenharmony_ci } 1705e5c31af7Sopenharmony_ci "" 1706e5c31af7Sopenharmony_ci end 1707e5c31af7Sopenharmony_ci 1708e5c31af7Sopenharmony_ci case int 1709e5c31af7Sopenharmony_ci version 300 es 1710e5c31af7Sopenharmony_ci values 1711e5c31af7Sopenharmony_ci { 1712e5c31af7Sopenharmony_ci input ivec3 in0 = [ ivec3(0, 1, 2) ]; 1713e5c31af7Sopenharmony_ci output ivec3 out0 = [ ivec3(3, 5, 13) ]; 1714e5c31af7Sopenharmony_ci } 1715e5c31af7Sopenharmony_ci 1716e5c31af7Sopenharmony_ci both "" 1717e5c31af7Sopenharmony_ci #version 300 es 1718e5c31af7Sopenharmony_ci precision mediump int; 1719e5c31af7Sopenharmony_ci precision mediump float; 1720e5c31af7Sopenharmony_ci ${DECLARATIONS} 1721e5c31af7Sopenharmony_ci 1722e5c31af7Sopenharmony_ci void main() 1723e5c31af7Sopenharmony_ci { 1724e5c31af7Sopenharmony_ci ${SETUP} 1725e5c31af7Sopenharmony_ci int[] x = int[3] (in0.z, in0.x, in0.y); 1726e5c31af7Sopenharmony_ci int[] y = int[] (in0.z, in0.x, in0.y, in0.x, in0.y); 1727e5c31af7Sopenharmony_ci int[13] z; 1728e5c31af7Sopenharmony_ci 1729e5c31af7Sopenharmony_ci out0 = ivec3(x.length(), y.length(), z.length()); 1730e5c31af7Sopenharmony_ci ${OUTPUT} 1731e5c31af7Sopenharmony_ci } 1732e5c31af7Sopenharmony_ci "" 1733e5c31af7Sopenharmony_ci end 1734e5c31af7Sopenharmony_ci 1735e5c31af7Sopenharmony_ci case bool 1736e5c31af7Sopenharmony_ci version 300 es 1737e5c31af7Sopenharmony_ci values 1738e5c31af7Sopenharmony_ci { 1739e5c31af7Sopenharmony_ci input bvec3 in0 = [ bvec3(true, false, true) ]; 1740e5c31af7Sopenharmony_ci output ivec3 out0 = [ ivec3(3, 5, 13) ]; 1741e5c31af7Sopenharmony_ci } 1742e5c31af7Sopenharmony_ci 1743e5c31af7Sopenharmony_ci both "" 1744e5c31af7Sopenharmony_ci #version 300 es 1745e5c31af7Sopenharmony_ci precision mediump float; 1746e5c31af7Sopenharmony_ci ${DECLARATIONS} 1747e5c31af7Sopenharmony_ci 1748e5c31af7Sopenharmony_ci void main() 1749e5c31af7Sopenharmony_ci { 1750e5c31af7Sopenharmony_ci ${SETUP} 1751e5c31af7Sopenharmony_ci bool[] x = bool[3] (in0.z, in0.x, in0.y); 1752e5c31af7Sopenharmony_ci bool[] y = bool[] (in0.z, in0.x, in0.y, in0.x, in0.y); 1753e5c31af7Sopenharmony_ci bool[13] z; 1754e5c31af7Sopenharmony_ci 1755e5c31af7Sopenharmony_ci out0 = ivec3(x.length(), y.length(), z.length()); 1756e5c31af7Sopenharmony_ci ${OUTPUT} 1757e5c31af7Sopenharmony_ci } 1758e5c31af7Sopenharmony_ci "" 1759e5c31af7Sopenharmony_ci end 1760e5c31af7Sopenharmony_ci 1761e5c31af7Sopenharmony_ci case struct 1762e5c31af7Sopenharmony_ci version 300 es 1763e5c31af7Sopenharmony_ci values 1764e5c31af7Sopenharmony_ci { 1765e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; 1766e5c31af7Sopenharmony_ci output ivec3 out0 = [ ivec3(3, 5, 13) ]; 1767e5c31af7Sopenharmony_ci } 1768e5c31af7Sopenharmony_ci 1769e5c31af7Sopenharmony_ci both "" 1770e5c31af7Sopenharmony_ci #version 300 es 1771e5c31af7Sopenharmony_ci precision mediump float; 1772e5c31af7Sopenharmony_ci ${DECLARATIONS} 1773e5c31af7Sopenharmony_ci 1774e5c31af7Sopenharmony_ci struct test 1775e5c31af7Sopenharmony_ci { 1776e5c31af7Sopenharmony_ci float f; 1777e5c31af7Sopenharmony_ci vec3 v; 1778e5c31af7Sopenharmony_ci }; 1779e5c31af7Sopenharmony_ci 1780e5c31af7Sopenharmony_ci void main() 1781e5c31af7Sopenharmony_ci { 1782e5c31af7Sopenharmony_ci ${SETUP} 1783e5c31af7Sopenharmony_ci 1784e5c31af7Sopenharmony_ci test a = test(in0.z, vec3(in0.x, in0.y, in0.z)); 1785e5c31af7Sopenharmony_ci test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y)); 1786e5c31af7Sopenharmony_ci test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x)); 1787e5c31af7Sopenharmony_ci 1788e5c31af7Sopenharmony_ci test[] x = test[3] (a, b, c); 1789e5c31af7Sopenharmony_ci test[] y = test[] (c, a, b, b, a); 1790e5c31af7Sopenharmony_ci test[13] z; 1791e5c31af7Sopenharmony_ci 1792e5c31af7Sopenharmony_ci out0 = ivec3(x.length(), y.length(), z.length()); 1793e5c31af7Sopenharmony_ci ${OUTPUT} 1794e5c31af7Sopenharmony_ci } 1795e5c31af7Sopenharmony_ci "" 1796e5c31af7Sopenharmony_ci end 1797e5c31af7Sopenharmony_ci 1798e5c31af7Sopenharmony_ciend # length 1799e5c31af7Sopenharmony_ci 1800e5c31af7Sopenharmony_cigroup invalid "Invalid Functions" 1801e5c31af7Sopenharmony_ci 1802e5c31af7Sopenharmony_ci case multidimensional_array1 1803e5c31af7Sopenharmony_ci version 300 es 1804e5c31af7Sopenharmony_ci expect compile_fail 1805e5c31af7Sopenharmony_ci 1806e5c31af7Sopenharmony_ci both "" 1807e5c31af7Sopenharmony_ci #version 300 es 1808e5c31af7Sopenharmony_ci precision mediump float; 1809e5c31af7Sopenharmony_ci ${DECLARATIONS} 1810e5c31af7Sopenharmony_ci 1811e5c31af7Sopenharmony_ci void main () 1812e5c31af7Sopenharmony_ci { 1813e5c31af7Sopenharmony_ci float a[5][3]; 1814e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 1815e5c31af7Sopenharmony_ci } 1816e5c31af7Sopenharmony_ci "" 1817e5c31af7Sopenharmony_ci end 1818e5c31af7Sopenharmony_ci 1819e5c31af7Sopenharmony_ci case multidimensional_array2 1820e5c31af7Sopenharmony_ci version 300 es 1821e5c31af7Sopenharmony_ci expect compile_fail 1822e5c31af7Sopenharmony_ci 1823e5c31af7Sopenharmony_ci both "" 1824e5c31af7Sopenharmony_ci #version 300 es 1825e5c31af7Sopenharmony_ci precision mediump float; 1826e5c31af7Sopenharmony_ci ${DECLARATIONS} 1827e5c31af7Sopenharmony_ci 1828e5c31af7Sopenharmony_ci void main () 1829e5c31af7Sopenharmony_ci { 1830e5c31af7Sopenharmony_ci float[5] a[3]; 1831e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 1832e5c31af7Sopenharmony_ci } 1833e5c31af7Sopenharmony_ci "" 1834e5c31af7Sopenharmony_ci end 1835e5c31af7Sopenharmony_ci 1836e5c31af7Sopenharmony_ci case multidimensional_uniform_array 1837e5c31af7Sopenharmony_ci version 300 es 1838e5c31af7Sopenharmony_ci expect compile_fail 1839e5c31af7Sopenharmony_ci 1840e5c31af7Sopenharmony_ci both "" 1841e5c31af7Sopenharmony_ci #version 300 es 1842e5c31af7Sopenharmony_ci precision mediump float; 1843e5c31af7Sopenharmony_ci ${DECLARATIONS} 1844e5c31af7Sopenharmony_ci uniform float a[3][2]; 1845e5c31af7Sopenharmony_ci 1846e5c31af7Sopenharmony_ci void main () 1847e5c31af7Sopenharmony_ci { 1848e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 1849e5c31af7Sopenharmony_ci } 1850e5c31af7Sopenharmony_ci "" 1851e5c31af7Sopenharmony_ci end 1852e5c31af7Sopenharmony_ci 1853e5c31af7Sopenharmony_ci case multidimensional_array_in_uniform_block 1854e5c31af7Sopenharmony_ci version 300 es 1855e5c31af7Sopenharmony_ci expect compile_fail 1856e5c31af7Sopenharmony_ci 1857e5c31af7Sopenharmony_ci both "" 1858e5c31af7Sopenharmony_ci #version 300 es 1859e5c31af7Sopenharmony_ci precision mediump float; 1860e5c31af7Sopenharmony_ci ${DECLARATIONS} 1861e5c31af7Sopenharmony_ci uniform MyBlock 1862e5c31af7Sopenharmony_ci { 1863e5c31af7Sopenharmony_ci float a[3][2]; 1864e5c31af7Sopenharmony_ci }; 1865e5c31af7Sopenharmony_ci 1866e5c31af7Sopenharmony_ci void main () 1867e5c31af7Sopenharmony_ci { 1868e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 1869e5c31af7Sopenharmony_ci } 1870e5c31af7Sopenharmony_ci "" 1871e5c31af7Sopenharmony_ci end 1872e5c31af7Sopenharmony_ci 1873e5c31af7Sopenharmony_ci case dynamic_expression_array_size 1874e5c31af7Sopenharmony_ci version 300 es 1875e5c31af7Sopenharmony_ci expect compile_fail 1876e5c31af7Sopenharmony_ci 1877e5c31af7Sopenharmony_ci both "" 1878e5c31af7Sopenharmony_ci #version 300 es 1879e5c31af7Sopenharmony_ci precision mediump float; 1880e5c31af7Sopenharmony_ci ${DECLARATIONS} 1881e5c31af7Sopenharmony_ci 1882e5c31af7Sopenharmony_ci void main () 1883e5c31af7Sopenharmony_ci { 1884e5c31af7Sopenharmony_ci int a = 5; 1885e5c31af7Sopenharmony_ci float[a] array; 1886e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 1887e5c31af7Sopenharmony_ci } 1888e5c31af7Sopenharmony_ci "" 1889e5c31af7Sopenharmony_ci end 1890e5c31af7Sopenharmony_ci 1891e5c31af7Sopenharmony_ci case empty_declaration_without_var_name 1892e5c31af7Sopenharmony_ci version 300 es 1893e5c31af7Sopenharmony_ci expect compile_or_link_fail 1894e5c31af7Sopenharmony_ci 1895e5c31af7Sopenharmony_ci both "" 1896e5c31af7Sopenharmony_ci #version 300 es 1897e5c31af7Sopenharmony_ci precision mediump float; 1898e5c31af7Sopenharmony_ci ${DECLARATIONS} 1899e5c31af7Sopenharmony_ci 1900e5c31af7Sopenharmony_ci void main () 1901e5c31af7Sopenharmony_ci { 1902e5c31af7Sopenharmony_ci int[]; 1903e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 1904e5c31af7Sopenharmony_ci } 1905e5c31af7Sopenharmony_ci "" 1906e5c31af7Sopenharmony_ci end 1907e5c31af7Sopenharmony_ci 1908e5c31af7Sopenharmony_ci case empty_declaration_with_var_name 1909e5c31af7Sopenharmony_ci version 300 es 1910e5c31af7Sopenharmony_ci expect compile_or_link_fail 1911e5c31af7Sopenharmony_ci 1912e5c31af7Sopenharmony_ci both "" 1913e5c31af7Sopenharmony_ci #version 300 es 1914e5c31af7Sopenharmony_ci precision mediump float; 1915e5c31af7Sopenharmony_ci ${DECLARATIONS} 1916e5c31af7Sopenharmony_ci 1917e5c31af7Sopenharmony_ci void main () 1918e5c31af7Sopenharmony_ci { 1919e5c31af7Sopenharmony_ci int[] a; 1920e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 1921e5c31af7Sopenharmony_ci } 1922e5c31af7Sopenharmony_ci "" 1923e5c31af7Sopenharmony_ci end 1924e5c31af7Sopenharmony_ci 1925e5c31af7Sopenharmony_ci case constructor_c_style1 1926e5c31af7Sopenharmony_ci version 300 es 1927e5c31af7Sopenharmony_ci expect compile_fail 1928e5c31af7Sopenharmony_ci 1929e5c31af7Sopenharmony_ci both "" 1930e5c31af7Sopenharmony_ci #version 300 es 1931e5c31af7Sopenharmony_ci precision mediump float; 1932e5c31af7Sopenharmony_ci ${DECLARATIONS} 1933e5c31af7Sopenharmony_ci 1934e5c31af7Sopenharmony_ci void main () 1935e5c31af7Sopenharmony_ci { 1936e5c31af7Sopenharmony_ci float a[]; 1937e5c31af7Sopenharmony_ci a = float[3] { 1.0, 2.0, 3.0 }; 1938e5c31af7Sopenharmony_ci 1939e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 1940e5c31af7Sopenharmony_ci } 1941e5c31af7Sopenharmony_ci "" 1942e5c31af7Sopenharmony_ci end 1943e5c31af7Sopenharmony_ci 1944e5c31af7Sopenharmony_ci case constructor_c_style2 1945e5c31af7Sopenharmony_ci version 300 es 1946e5c31af7Sopenharmony_ci expect compile_fail 1947e5c31af7Sopenharmony_ci 1948e5c31af7Sopenharmony_ci both "" 1949e5c31af7Sopenharmony_ci #version 300 es 1950e5c31af7Sopenharmony_ci precision mediump float; 1951e5c31af7Sopenharmony_ci ${DECLARATIONS} 1952e5c31af7Sopenharmony_ci 1953e5c31af7Sopenharmony_ci void main () 1954e5c31af7Sopenharmony_ci { 1955e5c31af7Sopenharmony_ci float a[5] = { 1.0, 2.0, 3.0 }; 1956e5c31af7Sopenharmony_ci 1957e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 1958e5c31af7Sopenharmony_ci } 1959e5c31af7Sopenharmony_ci "" 1960e5c31af7Sopenharmony_ci end 1961e5c31af7Sopenharmony_ci 1962e5c31af7Sopenharmony_ci case constructor_c_style3 1963e5c31af7Sopenharmony_ci version 300 es 1964e5c31af7Sopenharmony_ci expect compile_fail 1965e5c31af7Sopenharmony_ci 1966e5c31af7Sopenharmony_ci both "" 1967e5c31af7Sopenharmony_ci #version 300 es 1968e5c31af7Sopenharmony_ci precision mediump float; 1969e5c31af7Sopenharmony_ci ${DECLARATIONS} 1970e5c31af7Sopenharmony_ci 1971e5c31af7Sopenharmony_ci void main () 1972e5c31af7Sopenharmony_ci { 1973e5c31af7Sopenharmony_ci float a[] = float[3] { 1.0, 2.0, 3.0 }; 1974e5c31af7Sopenharmony_ci 1975e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 1976e5c31af7Sopenharmony_ci } 1977e5c31af7Sopenharmony_ci "" 1978e5c31af7Sopenharmony_ci end 1979e5c31af7Sopenharmony_ci 1980e5c31af7Sopenharmony_ci case constructor_c_style4 1981e5c31af7Sopenharmony_ci version 300 es 1982e5c31af7Sopenharmony_ci expect compile_fail 1983e5c31af7Sopenharmony_ci 1984e5c31af7Sopenharmony_ci both "" 1985e5c31af7Sopenharmony_ci #version 300 es 1986e5c31af7Sopenharmony_ci precision mediump float; 1987e5c31af7Sopenharmony_ci ${DECLARATIONS} 1988e5c31af7Sopenharmony_ci 1989e5c31af7Sopenharmony_ci void main () 1990e5c31af7Sopenharmony_ci { 1991e5c31af7Sopenharmony_ci float a[3] = { 1.0, 2.0, 3.0 }; 1992e5c31af7Sopenharmony_ci 1993e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 1994e5c31af7Sopenharmony_ci } 1995e5c31af7Sopenharmony_ci "" 1996e5c31af7Sopenharmony_ci end 1997e5c31af7Sopenharmony_ci 1998e5c31af7Sopenharmony_ciend # invalid 1999e5c31af7Sopenharmony_ci 2000e5c31af7Sopenharmony_ci# https://github.com/KhronosGroup/WebGL/blob/master/sdk/tests/conformance2/glsl3/array-in-complex-expression.html 2001e5c31af7Sopenharmony_cigroup complex_expression "Arrays in complex expressions" 2002e5c31af7Sopenharmony_ci 2003e5c31af7Sopenharmony_ci case and_short_circuits 2004e5c31af7Sopenharmony_ci version 300 es 2005e5c31af7Sopenharmony_ci values 2006e5c31af7Sopenharmony_ci { 2007e5c31af7Sopenharmony_ci output int g = -1; 2008e5c31af7Sopenharmony_ci } 2009e5c31af7Sopenharmony_ci 2010e5c31af7Sopenharmony_ci both "" 2011e5c31af7Sopenharmony_ci #version 300 es 2012e5c31af7Sopenharmony_ci precision mediump float; 2013e5c31af7Sopenharmony_ci ${DECLARATIONS} 2014e5c31af7Sopenharmony_ci 2015e5c31af7Sopenharmony_ci int[2] plus() { 2016e5c31af7Sopenharmony_ci ++g; 2017e5c31af7Sopenharmony_ci return int[2](g, g); 2018e5c31af7Sopenharmony_ci } 2019e5c31af7Sopenharmony_ci 2020e5c31af7Sopenharmony_ci bool minus() { 2021e5c31af7Sopenharmony_ci --g; 2022e5c31af7Sopenharmony_ci return false; 2023e5c31af7Sopenharmony_ci } 2024e5c31af7Sopenharmony_ci 2025e5c31af7Sopenharmony_ci void main() { 2026e5c31af7Sopenharmony_ci ${SETUP} 2027e5c31af7Sopenharmony_ci g = 0; 2028e5c31af7Sopenharmony_ci int a[2] = int[2](0, 0); 2029e5c31af7Sopenharmony_ci // The plus() call must not be evaluated, since && short-circuits 2030e5c31af7Sopenharmony_ci minus() && (a == plus()); 2031e5c31af7Sopenharmony_ci ${OUTPUT} 2032e5c31af7Sopenharmony_ci } 2033e5c31af7Sopenharmony_ci "" 2034e5c31af7Sopenharmony_ci end 2035e5c31af7Sopenharmony_ci 2036e5c31af7Sopenharmony_ci case or_short_circuits 2037e5c31af7Sopenharmony_ci version 300 es 2038e5c31af7Sopenharmony_ci values 2039e5c31af7Sopenharmony_ci { 2040e5c31af7Sopenharmony_ci output int g = -1; 2041e5c31af7Sopenharmony_ci } 2042e5c31af7Sopenharmony_ci 2043e5c31af7Sopenharmony_ci both "" 2044e5c31af7Sopenharmony_ci #version 300 es 2045e5c31af7Sopenharmony_ci precision mediump float; 2046e5c31af7Sopenharmony_ci ${DECLARATIONS} 2047e5c31af7Sopenharmony_ci 2048e5c31af7Sopenharmony_ci int[2] plus() { 2049e5c31af7Sopenharmony_ci ++g; 2050e5c31af7Sopenharmony_ci return int[2](g, g); 2051e5c31af7Sopenharmony_ci } 2052e5c31af7Sopenharmony_ci 2053e5c31af7Sopenharmony_ci bool minus() { 2054e5c31af7Sopenharmony_ci --g; 2055e5c31af7Sopenharmony_ci return false; 2056e5c31af7Sopenharmony_ci } 2057e5c31af7Sopenharmony_ci 2058e5c31af7Sopenharmony_ci void main() { 2059e5c31af7Sopenharmony_ci ${SETUP} 2060e5c31af7Sopenharmony_ci g = 0; 2061e5c31af7Sopenharmony_ci int a[2] = int[2](0, 0); 2062e5c31af7Sopenharmony_ci // The function call must not be evaluated, since && short-circuits 2063e5c31af7Sopenharmony_ci minus() && (a == plus()); 2064e5c31af7Sopenharmony_ci ${OUTPUT} 2065e5c31af7Sopenharmony_ci } 2066e5c31af7Sopenharmony_ci "" 2067e5c31af7Sopenharmony_ci end 2068e5c31af7Sopenharmony_ci 2069e5c31af7Sopenharmony_ci case ternary_only_evaluates_one_operand 2070e5c31af7Sopenharmony_ci version 300 es 2071e5c31af7Sopenharmony_ci values 2072e5c31af7Sopenharmony_ci { 2073e5c31af7Sopenharmony_ci output int g = 0; 2074e5c31af7Sopenharmony_ci } 2075e5c31af7Sopenharmony_ci 2076e5c31af7Sopenharmony_ci both "" 2077e5c31af7Sopenharmony_ci #version 300 es 2078e5c31af7Sopenharmony_ci precision mediump float; 2079e5c31af7Sopenharmony_ci ${DECLARATIONS} 2080e5c31af7Sopenharmony_ci 2081e5c31af7Sopenharmony_ci int[2] plus() { 2082e5c31af7Sopenharmony_ci ++g; 2083e5c31af7Sopenharmony_ci return int[2](g, g); 2084e5c31af7Sopenharmony_ci } 2085e5c31af7Sopenharmony_ci 2086e5c31af7Sopenharmony_ci void main() { 2087e5c31af7Sopenharmony_ci ${SETUP} 2088e5c31af7Sopenharmony_ci g = 0; 2089e5c31af7Sopenharmony_ci int a[2] = int[2](0, 0); 2090e5c31af7Sopenharmony_ci // The function call must not be evaluated, since the condition is true. 2091e5c31af7Sopenharmony_ci (g == 0) ? true : (a == plus()); 2092e5c31af7Sopenharmony_ci ${OUTPUT} 2093e5c31af7Sopenharmony_ci } 2094e5c31af7Sopenharmony_ci "" 2095e5c31af7Sopenharmony_ci end 2096e5c31af7Sopenharmony_ci 2097e5c31af7Sopenharmony_ci case sequence_side_effects_affecting_compared_array_content 2098e5c31af7Sopenharmony_ci version 300 es 2099e5c31af7Sopenharmony_ci values 2100e5c31af7Sopenharmony_ci { 2101e5c31af7Sopenharmony_ci output bool success = true; 2102e5c31af7Sopenharmony_ci } 2103e5c31af7Sopenharmony_ci 2104e5c31af7Sopenharmony_ci both "" 2105e5c31af7Sopenharmony_ci #version 300 es 2106e5c31af7Sopenharmony_ci precision mediump float; 2107e5c31af7Sopenharmony_ci ${DECLARATIONS} 2108e5c31af7Sopenharmony_ci 2109e5c31af7Sopenharmony_ci int[2] func(int param) { 2110e5c31af7Sopenharmony_ci return int[2](param, param); 2111e5c31af7Sopenharmony_ci } 2112e5c31af7Sopenharmony_ci 2113e5c31af7Sopenharmony_ci void main() { 2114e5c31af7Sopenharmony_ci ${SETUP} 2115e5c31af7Sopenharmony_ci int a[2]; 2116e5c31af7Sopenharmony_ci for (int i = 0; i < 2; ++i) { 2117e5c31af7Sopenharmony_ci a[i] = 1; 2118e5c31af7Sopenharmony_ci } 2119e5c31af7Sopenharmony_ci int j = 0; 2120e5c31af7Sopenharmony_ci // Sequence operator evaluates operands from left to right (ESSL 3.00 section 5.9). 2121e5c31af7Sopenharmony_ci // The function call that returns the array needs to be evaluated after ++j 2122e5c31af7Sopenharmony_ci // for the expression to return the correct value (true). 2123e5c31af7Sopenharmony_ci success = ((++j), (a == func(j))); 2124e5c31af7Sopenharmony_ci ${OUTPUT} 2125e5c31af7Sopenharmony_ci } 2126e5c31af7Sopenharmony_ci "" 2127e5c31af7Sopenharmony_ci end 2128e5c31af7Sopenharmony_ci 2129e5c31af7Sopenharmony_ciend # complex_expression 2130e5c31af7Sopenharmony_ci 2131e5c31af7Sopenharmony_cigroup compare "Array comparisons" 2132e5c31af7Sopenharmony_ci 2133e5c31af7Sopenharmony_ci case equal_lowp_int_lowp_int 2134e5c31af7Sopenharmony_ci version 300 es 2135e5c31af7Sopenharmony_ci values 2136e5c31af7Sopenharmony_ci { 2137e5c31af7Sopenharmony_ci output bool success = true; 2138e5c31af7Sopenharmony_ci } 2139e5c31af7Sopenharmony_ci 2140e5c31af7Sopenharmony_ci both "" 2141e5c31af7Sopenharmony_ci #version 300 es 2142e5c31af7Sopenharmony_ci precision lowp float; 2143e5c31af7Sopenharmony_ci ${DECLARATIONS} 2144e5c31af7Sopenharmony_ci void main() 2145e5c31af7Sopenharmony_ci { 2146e5c31af7Sopenharmony_ci ${SETUP} 2147e5c31af7Sopenharmony_ci lowp int x[3] = int[3](1, 2, 3); 2148e5c31af7Sopenharmony_ci lowp int y[3] = x; 2149e5c31af7Sopenharmony_ci x = y; 2150e5c31af7Sopenharmony_ci success = (x == y); 2151e5c31af7Sopenharmony_ci ${OUTPUT} 2152e5c31af7Sopenharmony_ci } 2153e5c31af7Sopenharmony_ci "" 2154e5c31af7Sopenharmony_ci end 2155e5c31af7Sopenharmony_ci 2156e5c31af7Sopenharmony_ci case equal_lowp_uint_lowp_uint 2157e5c31af7Sopenharmony_ci version 300 es 2158e5c31af7Sopenharmony_ci values 2159e5c31af7Sopenharmony_ci { 2160e5c31af7Sopenharmony_ci output bool success = true; 2161e5c31af7Sopenharmony_ci } 2162e5c31af7Sopenharmony_ci 2163e5c31af7Sopenharmony_ci both "" 2164e5c31af7Sopenharmony_ci #version 300 es 2165e5c31af7Sopenharmony_ci precision lowp float; 2166e5c31af7Sopenharmony_ci ${DECLARATIONS} 2167e5c31af7Sopenharmony_ci void main() 2168e5c31af7Sopenharmony_ci { 2169e5c31af7Sopenharmony_ci ${SETUP} 2170e5c31af7Sopenharmony_ci lowp uint x[3] = uint[3](1u, 2u, 3u); 2171e5c31af7Sopenharmony_ci lowp uint y[3] = x; 2172e5c31af7Sopenharmony_ci x = y; 2173e5c31af7Sopenharmony_ci success = (x == y); 2174e5c31af7Sopenharmony_ci ${OUTPUT} 2175e5c31af7Sopenharmony_ci } 2176e5c31af7Sopenharmony_ci "" 2177e5c31af7Sopenharmony_ci end 2178e5c31af7Sopenharmony_ci 2179e5c31af7Sopenharmony_ci case equal_lowp_float_lowp_float 2180e5c31af7Sopenharmony_ci version 300 es 2181e5c31af7Sopenharmony_ci values 2182e5c31af7Sopenharmony_ci { 2183e5c31af7Sopenharmony_ci output bool success = true; 2184e5c31af7Sopenharmony_ci } 2185e5c31af7Sopenharmony_ci 2186e5c31af7Sopenharmony_ci both "" 2187e5c31af7Sopenharmony_ci #version 300 es 2188e5c31af7Sopenharmony_ci precision lowp float; 2189e5c31af7Sopenharmony_ci ${DECLARATIONS} 2190e5c31af7Sopenharmony_ci void main() 2191e5c31af7Sopenharmony_ci { 2192e5c31af7Sopenharmony_ci ${SETUP} 2193e5c31af7Sopenharmony_ci lowp float x[3] = float[3](1.0, 2.0, 3.0); 2194e5c31af7Sopenharmony_ci lowp float y[3] = x; 2195e5c31af7Sopenharmony_ci x = y; 2196e5c31af7Sopenharmony_ci success = (x == y); 2197e5c31af7Sopenharmony_ci ${OUTPUT} 2198e5c31af7Sopenharmony_ci } 2199e5c31af7Sopenharmony_ci "" 2200e5c31af7Sopenharmony_ci end 2201e5c31af7Sopenharmony_ci 2202e5c31af7Sopenharmony_ci case equal_lowp_vec2_lowp_vec2 2203e5c31af7Sopenharmony_ci version 300 es 2204e5c31af7Sopenharmony_ci values 2205e5c31af7Sopenharmony_ci { 2206e5c31af7Sopenharmony_ci output bool success = true; 2207e5c31af7Sopenharmony_ci } 2208e5c31af7Sopenharmony_ci 2209e5c31af7Sopenharmony_ci both "" 2210e5c31af7Sopenharmony_ci #version 300 es 2211e5c31af7Sopenharmony_ci precision lowp float; 2212e5c31af7Sopenharmony_ci ${DECLARATIONS} 2213e5c31af7Sopenharmony_ci void main() 2214e5c31af7Sopenharmony_ci { 2215e5c31af7Sopenharmony_ci ${SETUP} 2216e5c31af7Sopenharmony_ci lowp vec2 x[3] = vec2[3](vec2(1.0, 2.0), 2217e5c31af7Sopenharmony_ci vec2(3.0, 4.0), 2218e5c31af7Sopenharmony_ci vec2(5.0, 6.0)); 2219e5c31af7Sopenharmony_ci lowp vec2 y[3] = x; 2220e5c31af7Sopenharmony_ci x = y; 2221e5c31af7Sopenharmony_ci success = (x == y); 2222e5c31af7Sopenharmony_ci ${OUTPUT} 2223e5c31af7Sopenharmony_ci } 2224e5c31af7Sopenharmony_ci "" 2225e5c31af7Sopenharmony_ci end 2226e5c31af7Sopenharmony_ci 2227e5c31af7Sopenharmony_ci case equal_lowp_vec3_lowp_vec3 2228e5c31af7Sopenharmony_ci version 300 es 2229e5c31af7Sopenharmony_ci values 2230e5c31af7Sopenharmony_ci { 2231e5c31af7Sopenharmony_ci output bool success = true; 2232e5c31af7Sopenharmony_ci } 2233e5c31af7Sopenharmony_ci 2234e5c31af7Sopenharmony_ci both "" 2235e5c31af7Sopenharmony_ci #version 300 es 2236e5c31af7Sopenharmony_ci precision lowp float; 2237e5c31af7Sopenharmony_ci ${DECLARATIONS} 2238e5c31af7Sopenharmony_ci void main() 2239e5c31af7Sopenharmony_ci { 2240e5c31af7Sopenharmony_ci ${SETUP} 2241e5c31af7Sopenharmony_ci lowp vec3 x[3] = vec3[3](vec3(1.0, 2.0, 3.0), 2242e5c31af7Sopenharmony_ci vec3(4.0, 5.0, 6.0), 2243e5c31af7Sopenharmony_ci vec3(7.0, 8.0, 9.0)); 2244e5c31af7Sopenharmony_ci lowp vec3 y[3] = x; 2245e5c31af7Sopenharmony_ci x = y; 2246e5c31af7Sopenharmony_ci success = (x == y); 2247e5c31af7Sopenharmony_ci ${OUTPUT} 2248e5c31af7Sopenharmony_ci } 2249e5c31af7Sopenharmony_ci "" 2250e5c31af7Sopenharmony_ci end 2251e5c31af7Sopenharmony_ci 2252e5c31af7Sopenharmony_ci case equal_lowp_vec4_lowp_vec4 2253e5c31af7Sopenharmony_ci version 300 es 2254e5c31af7Sopenharmony_ci values 2255e5c31af7Sopenharmony_ci { 2256e5c31af7Sopenharmony_ci output bool success = true; 2257e5c31af7Sopenharmony_ci } 2258e5c31af7Sopenharmony_ci 2259e5c31af7Sopenharmony_ci both "" 2260e5c31af7Sopenharmony_ci #version 300 es 2261e5c31af7Sopenharmony_ci precision lowp float; 2262e5c31af7Sopenharmony_ci ${DECLARATIONS} 2263e5c31af7Sopenharmony_ci void main() 2264e5c31af7Sopenharmony_ci { 2265e5c31af7Sopenharmony_ci ${SETUP} 2266e5c31af7Sopenharmony_ci lowp vec4 x[3] = vec4[3](vec4(1.0, 2.0, 3.0, 4.0), 2267e5c31af7Sopenharmony_ci vec4(5.0, 6.0, 7.0, 8.0), 2268e5c31af7Sopenharmony_ci vec4(9.0, 10.0, 11.0, 12.0)); 2269e5c31af7Sopenharmony_ci lowp vec4 y[3] = x; 2270e5c31af7Sopenharmony_ci x = y; 2271e5c31af7Sopenharmony_ci success = (x == y); 2272e5c31af7Sopenharmony_ci ${OUTPUT} 2273e5c31af7Sopenharmony_ci } 2274e5c31af7Sopenharmony_ci "" 2275e5c31af7Sopenharmony_ci end 2276e5c31af7Sopenharmony_ci 2277e5c31af7Sopenharmony_ci case equal_lowp_ivec2_lowp_ivec2 2278e5c31af7Sopenharmony_ci version 300 es 2279e5c31af7Sopenharmony_ci values 2280e5c31af7Sopenharmony_ci { 2281e5c31af7Sopenharmony_ci output bool success = true; 2282e5c31af7Sopenharmony_ci } 2283e5c31af7Sopenharmony_ci 2284e5c31af7Sopenharmony_ci both "" 2285e5c31af7Sopenharmony_ci #version 300 es 2286e5c31af7Sopenharmony_ci precision lowp float; 2287e5c31af7Sopenharmony_ci ${DECLARATIONS} 2288e5c31af7Sopenharmony_ci void main() 2289e5c31af7Sopenharmony_ci { 2290e5c31af7Sopenharmony_ci ${SETUP} 2291e5c31af7Sopenharmony_ci lowp ivec2 x[3] = ivec2[3](ivec2(1, 2), 2292e5c31af7Sopenharmony_ci ivec2(3, 4), 2293e5c31af7Sopenharmony_ci ivec2(5, 6)); 2294e5c31af7Sopenharmony_ci lowp ivec2 y[3] = x; 2295e5c31af7Sopenharmony_ci x = y; 2296e5c31af7Sopenharmony_ci success = (x == y); 2297e5c31af7Sopenharmony_ci ${OUTPUT} 2298e5c31af7Sopenharmony_ci } 2299e5c31af7Sopenharmony_ci "" 2300e5c31af7Sopenharmony_ci end 2301e5c31af7Sopenharmony_ci 2302e5c31af7Sopenharmony_ci case equal_lowp_ivec3_lowp_ivec3 2303e5c31af7Sopenharmony_ci version 300 es 2304e5c31af7Sopenharmony_ci values 2305e5c31af7Sopenharmony_ci { 2306e5c31af7Sopenharmony_ci output bool success = true; 2307e5c31af7Sopenharmony_ci } 2308e5c31af7Sopenharmony_ci 2309e5c31af7Sopenharmony_ci both "" 2310e5c31af7Sopenharmony_ci #version 300 es 2311e5c31af7Sopenharmony_ci precision lowp float; 2312e5c31af7Sopenharmony_ci ${DECLARATIONS} 2313e5c31af7Sopenharmony_ci void main() 2314e5c31af7Sopenharmony_ci { 2315e5c31af7Sopenharmony_ci ${SETUP} 2316e5c31af7Sopenharmony_ci lowp ivec3 x[3] = ivec3[3](ivec3(1, 2, 3), 2317e5c31af7Sopenharmony_ci ivec3(4, 5, 6), 2318e5c31af7Sopenharmony_ci ivec3(7, 8, 9)); 2319e5c31af7Sopenharmony_ci lowp ivec3 y[3] = x; 2320e5c31af7Sopenharmony_ci x = y; 2321e5c31af7Sopenharmony_ci success = (x == y); 2322e5c31af7Sopenharmony_ci ${OUTPUT} 2323e5c31af7Sopenharmony_ci } 2324e5c31af7Sopenharmony_ci "" 2325e5c31af7Sopenharmony_ci end 2326e5c31af7Sopenharmony_ci 2327e5c31af7Sopenharmony_ci case equal_lowp_ivec4_lowp_ivec4 2328e5c31af7Sopenharmony_ci version 300 es 2329e5c31af7Sopenharmony_ci values 2330e5c31af7Sopenharmony_ci { 2331e5c31af7Sopenharmony_ci output bool success = true; 2332e5c31af7Sopenharmony_ci } 2333e5c31af7Sopenharmony_ci 2334e5c31af7Sopenharmony_ci both "" 2335e5c31af7Sopenharmony_ci #version 300 es 2336e5c31af7Sopenharmony_ci precision lowp float; 2337e5c31af7Sopenharmony_ci ${DECLARATIONS} 2338e5c31af7Sopenharmony_ci void main() 2339e5c31af7Sopenharmony_ci { 2340e5c31af7Sopenharmony_ci ${SETUP} 2341e5c31af7Sopenharmony_ci lowp ivec4 x[3] = ivec4[3](ivec4(1, 2, 3, 4), 2342e5c31af7Sopenharmony_ci ivec4(5, 6, 7, 8), 2343e5c31af7Sopenharmony_ci ivec4(9, 10, 11, 12)); 2344e5c31af7Sopenharmony_ci lowp ivec4 y[3] = x; 2345e5c31af7Sopenharmony_ci x = y; 2346e5c31af7Sopenharmony_ci success = (x == y); 2347e5c31af7Sopenharmony_ci ${OUTPUT} 2348e5c31af7Sopenharmony_ci } 2349e5c31af7Sopenharmony_ci "" 2350e5c31af7Sopenharmony_ci end 2351e5c31af7Sopenharmony_ci 2352e5c31af7Sopenharmony_ci case equal_lowp_uvec2_lowp_uvec2 2353e5c31af7Sopenharmony_ci version 300 es 2354e5c31af7Sopenharmony_ci values 2355e5c31af7Sopenharmony_ci { 2356e5c31af7Sopenharmony_ci output bool success = true; 2357e5c31af7Sopenharmony_ci } 2358e5c31af7Sopenharmony_ci 2359e5c31af7Sopenharmony_ci both "" 2360e5c31af7Sopenharmony_ci #version 300 es 2361e5c31af7Sopenharmony_ci precision lowp float; 2362e5c31af7Sopenharmony_ci ${DECLARATIONS} 2363e5c31af7Sopenharmony_ci void main() 2364e5c31af7Sopenharmony_ci { 2365e5c31af7Sopenharmony_ci ${SETUP} 2366e5c31af7Sopenharmony_ci lowp uvec2 x[3] = uvec2[3](uvec2(1u, 2u), 2367e5c31af7Sopenharmony_ci uvec2(3u, 4u), 2368e5c31af7Sopenharmony_ci uvec2(5u, 6u)); 2369e5c31af7Sopenharmony_ci lowp uvec2 y[3] = x; 2370e5c31af7Sopenharmony_ci x = y; 2371e5c31af7Sopenharmony_ci success = (x == y); 2372e5c31af7Sopenharmony_ci ${OUTPUT} 2373e5c31af7Sopenharmony_ci } 2374e5c31af7Sopenharmony_ci "" 2375e5c31af7Sopenharmony_ci end 2376e5c31af7Sopenharmony_ci 2377e5c31af7Sopenharmony_ci case equal_lowp_uvec3_lowp_uvec3 2378e5c31af7Sopenharmony_ci version 300 es 2379e5c31af7Sopenharmony_ci values 2380e5c31af7Sopenharmony_ci { 2381e5c31af7Sopenharmony_ci output bool success = true; 2382e5c31af7Sopenharmony_ci } 2383e5c31af7Sopenharmony_ci 2384e5c31af7Sopenharmony_ci both "" 2385e5c31af7Sopenharmony_ci #version 300 es 2386e5c31af7Sopenharmony_ci precision lowp float; 2387e5c31af7Sopenharmony_ci ${DECLARATIONS} 2388e5c31af7Sopenharmony_ci void main() 2389e5c31af7Sopenharmony_ci { 2390e5c31af7Sopenharmony_ci ${SETUP} 2391e5c31af7Sopenharmony_ci lowp uvec3 x[3] = uvec3[3](uvec3(1u, 2u, 3u), 2392e5c31af7Sopenharmony_ci uvec3(4u, 5u, 6u), 2393e5c31af7Sopenharmony_ci uvec3(7u, 8u, 9u)); 2394e5c31af7Sopenharmony_ci lowp uvec3 y[3] = x; 2395e5c31af7Sopenharmony_ci x = y; 2396e5c31af7Sopenharmony_ci success = (x == y); 2397e5c31af7Sopenharmony_ci ${OUTPUT} 2398e5c31af7Sopenharmony_ci } 2399e5c31af7Sopenharmony_ci "" 2400e5c31af7Sopenharmony_ci end 2401e5c31af7Sopenharmony_ci 2402e5c31af7Sopenharmony_ci case equal_lowp_uvec4_lowp_uvec4 2403e5c31af7Sopenharmony_ci version 300 es 2404e5c31af7Sopenharmony_ci values 2405e5c31af7Sopenharmony_ci { 2406e5c31af7Sopenharmony_ci output bool success = true; 2407e5c31af7Sopenharmony_ci } 2408e5c31af7Sopenharmony_ci 2409e5c31af7Sopenharmony_ci both "" 2410e5c31af7Sopenharmony_ci #version 300 es 2411e5c31af7Sopenharmony_ci precision lowp float; 2412e5c31af7Sopenharmony_ci ${DECLARATIONS} 2413e5c31af7Sopenharmony_ci void main() 2414e5c31af7Sopenharmony_ci { 2415e5c31af7Sopenharmony_ci ${SETUP} 2416e5c31af7Sopenharmony_ci lowp uvec4 x[3] = uvec4[3](uvec4(1u, 2u, 3u, 4u), 2417e5c31af7Sopenharmony_ci uvec4(5u, 6u, 7u, 8u), 2418e5c31af7Sopenharmony_ci uvec4(9u, 10u, 11u, 12u)); 2419e5c31af7Sopenharmony_ci lowp uvec4 y[3] = x; 2420e5c31af7Sopenharmony_ci x = y; 2421e5c31af7Sopenharmony_ci success = (x == y); 2422e5c31af7Sopenharmony_ci ${OUTPUT} 2423e5c31af7Sopenharmony_ci } 2424e5c31af7Sopenharmony_ci "" 2425e5c31af7Sopenharmony_ci end 2426e5c31af7Sopenharmony_ci 2427e5c31af7Sopenharmony_ci case equal_lowp_mat2_lowp_mat2 2428e5c31af7Sopenharmony_ci version 300 es 2429e5c31af7Sopenharmony_ci values 2430e5c31af7Sopenharmony_ci { 2431e5c31af7Sopenharmony_ci output bool success = true; 2432e5c31af7Sopenharmony_ci } 2433e5c31af7Sopenharmony_ci 2434e5c31af7Sopenharmony_ci both "" 2435e5c31af7Sopenharmony_ci #version 300 es 2436e5c31af7Sopenharmony_ci precision lowp float; 2437e5c31af7Sopenharmony_ci ${DECLARATIONS} 2438e5c31af7Sopenharmony_ci void main() 2439e5c31af7Sopenharmony_ci { 2440e5c31af7Sopenharmony_ci ${SETUP} 2441e5c31af7Sopenharmony_ci lowp mat2 x[3] = mat2[3](mat2(1.0, 2.0, 3.0, 4.0), 2442e5c31af7Sopenharmony_ci mat2(5.0, 6.0, 7.0, 8.0), 2443e5c31af7Sopenharmony_ci mat2(9.0, 10.0, 11.0, 12.0)); 2444e5c31af7Sopenharmony_ci lowp mat2 y[3] = x; 2445e5c31af7Sopenharmony_ci x = y; 2446e5c31af7Sopenharmony_ci success = (x == y); 2447e5c31af7Sopenharmony_ci ${OUTPUT} 2448e5c31af7Sopenharmony_ci } 2449e5c31af7Sopenharmony_ci "" 2450e5c31af7Sopenharmony_ci end 2451e5c31af7Sopenharmony_ci 2452e5c31af7Sopenharmony_ci case equal_lowp_mat3_lowp_mat3 2453e5c31af7Sopenharmony_ci version 300 es 2454e5c31af7Sopenharmony_ci values 2455e5c31af7Sopenharmony_ci { 2456e5c31af7Sopenharmony_ci output bool success = true; 2457e5c31af7Sopenharmony_ci } 2458e5c31af7Sopenharmony_ci 2459e5c31af7Sopenharmony_ci both "" 2460e5c31af7Sopenharmony_ci #version 300 es 2461e5c31af7Sopenharmony_ci precision lowp float; 2462e5c31af7Sopenharmony_ci ${DECLARATIONS} 2463e5c31af7Sopenharmony_ci void main() 2464e5c31af7Sopenharmony_ci { 2465e5c31af7Sopenharmony_ci ${SETUP} 2466e5c31af7Sopenharmony_ci lowp mat3 x[3] = mat3[3](mat3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0), 2467e5c31af7Sopenharmony_ci mat3(10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0), 2468e5c31af7Sopenharmony_ci mat3(19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0)); 2469e5c31af7Sopenharmony_ci lowp mat3 y[3] = x; 2470e5c31af7Sopenharmony_ci x = y; 2471e5c31af7Sopenharmony_ci success = (x == y); 2472e5c31af7Sopenharmony_ci ${OUTPUT} 2473e5c31af7Sopenharmony_ci } 2474e5c31af7Sopenharmony_ci "" 2475e5c31af7Sopenharmony_ci end 2476e5c31af7Sopenharmony_ci 2477e5c31af7Sopenharmony_ci case equal_lowp_mat4_lowp_mat4 2478e5c31af7Sopenharmony_ci version 300 es 2479e5c31af7Sopenharmony_ci values 2480e5c31af7Sopenharmony_ci { 2481e5c31af7Sopenharmony_ci output bool success = true; 2482e5c31af7Sopenharmony_ci } 2483e5c31af7Sopenharmony_ci 2484e5c31af7Sopenharmony_ci both "" 2485e5c31af7Sopenharmony_ci #version 300 es 2486e5c31af7Sopenharmony_ci precision lowp float; 2487e5c31af7Sopenharmony_ci ${DECLARATIONS} 2488e5c31af7Sopenharmony_ci void main() 2489e5c31af7Sopenharmony_ci { 2490e5c31af7Sopenharmony_ci ${SETUP} 2491e5c31af7Sopenharmony_ci lowp mat4 x[3] = mat4[3](mat4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0), 2492e5c31af7Sopenharmony_ci mat4(17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0), 2493e5c31af7Sopenharmony_ci mat4(33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0)); 2494e5c31af7Sopenharmony_ci lowp mat4 y[3] = x; 2495e5c31af7Sopenharmony_ci x = y; 2496e5c31af7Sopenharmony_ci success = (x == y); 2497e5c31af7Sopenharmony_ci ${OUTPUT} 2498e5c31af7Sopenharmony_ci } 2499e5c31af7Sopenharmony_ci "" 2500e5c31af7Sopenharmony_ci end 2501e5c31af7Sopenharmony_ci 2502e5c31af7Sopenharmony_ci case equal_mediump_int_lowp_int 2503e5c31af7Sopenharmony_ci version 300 es 2504e5c31af7Sopenharmony_ci values 2505e5c31af7Sopenharmony_ci { 2506e5c31af7Sopenharmony_ci output bool success = true; 2507e5c31af7Sopenharmony_ci } 2508e5c31af7Sopenharmony_ci 2509e5c31af7Sopenharmony_ci both "" 2510e5c31af7Sopenharmony_ci #version 300 es 2511e5c31af7Sopenharmony_ci precision mediump float; 2512e5c31af7Sopenharmony_ci ${DECLARATIONS} 2513e5c31af7Sopenharmony_ci void main() 2514e5c31af7Sopenharmony_ci { 2515e5c31af7Sopenharmony_ci ${SETUP} 2516e5c31af7Sopenharmony_ci mediump int x[3] = int[3](1, 2, 3); 2517e5c31af7Sopenharmony_ci lowp int y[3] = x; 2518e5c31af7Sopenharmony_ci x = y; 2519e5c31af7Sopenharmony_ci success = (x == y); 2520e5c31af7Sopenharmony_ci ${OUTPUT} 2521e5c31af7Sopenharmony_ci } 2522e5c31af7Sopenharmony_ci "" 2523e5c31af7Sopenharmony_ci end 2524e5c31af7Sopenharmony_ci 2525e5c31af7Sopenharmony_ci case equal_mediump_uint_lowp_uint 2526e5c31af7Sopenharmony_ci version 300 es 2527e5c31af7Sopenharmony_ci values 2528e5c31af7Sopenharmony_ci { 2529e5c31af7Sopenharmony_ci output bool success = true; 2530e5c31af7Sopenharmony_ci } 2531e5c31af7Sopenharmony_ci 2532e5c31af7Sopenharmony_ci both "" 2533e5c31af7Sopenharmony_ci #version 300 es 2534e5c31af7Sopenharmony_ci precision mediump float; 2535e5c31af7Sopenharmony_ci ${DECLARATIONS} 2536e5c31af7Sopenharmony_ci void main() 2537e5c31af7Sopenharmony_ci { 2538e5c31af7Sopenharmony_ci ${SETUP} 2539e5c31af7Sopenharmony_ci mediump uint x[3] = uint[3](1u, 2u, 3u); 2540e5c31af7Sopenharmony_ci lowp uint y[3] = x; 2541e5c31af7Sopenharmony_ci x = y; 2542e5c31af7Sopenharmony_ci success = (x == y); 2543e5c31af7Sopenharmony_ci ${OUTPUT} 2544e5c31af7Sopenharmony_ci } 2545e5c31af7Sopenharmony_ci "" 2546e5c31af7Sopenharmony_ci end 2547e5c31af7Sopenharmony_ci 2548e5c31af7Sopenharmony_ci case equal_mediump_float_lowp_float 2549e5c31af7Sopenharmony_ci version 300 es 2550e5c31af7Sopenharmony_ci values 2551e5c31af7Sopenharmony_ci { 2552e5c31af7Sopenharmony_ci output bool success = true; 2553e5c31af7Sopenharmony_ci } 2554e5c31af7Sopenharmony_ci 2555e5c31af7Sopenharmony_ci both "" 2556e5c31af7Sopenharmony_ci #version 300 es 2557e5c31af7Sopenharmony_ci precision mediump float; 2558e5c31af7Sopenharmony_ci ${DECLARATIONS} 2559e5c31af7Sopenharmony_ci void main() 2560e5c31af7Sopenharmony_ci { 2561e5c31af7Sopenharmony_ci ${SETUP} 2562e5c31af7Sopenharmony_ci mediump float x[3] = float[3](1.0, 2.0, 3.0); 2563e5c31af7Sopenharmony_ci lowp float y[3] = x; 2564e5c31af7Sopenharmony_ci x = y; 2565e5c31af7Sopenharmony_ci success = (x == y); 2566e5c31af7Sopenharmony_ci ${OUTPUT} 2567e5c31af7Sopenharmony_ci } 2568e5c31af7Sopenharmony_ci "" 2569e5c31af7Sopenharmony_ci end 2570e5c31af7Sopenharmony_ci 2571e5c31af7Sopenharmony_ci case equal_mediump_vec2_lowp_vec2 2572e5c31af7Sopenharmony_ci version 300 es 2573e5c31af7Sopenharmony_ci values 2574e5c31af7Sopenharmony_ci { 2575e5c31af7Sopenharmony_ci output bool success = true; 2576e5c31af7Sopenharmony_ci } 2577e5c31af7Sopenharmony_ci 2578e5c31af7Sopenharmony_ci both "" 2579e5c31af7Sopenharmony_ci #version 300 es 2580e5c31af7Sopenharmony_ci precision mediump float; 2581e5c31af7Sopenharmony_ci ${DECLARATIONS} 2582e5c31af7Sopenharmony_ci void main() 2583e5c31af7Sopenharmony_ci { 2584e5c31af7Sopenharmony_ci ${SETUP} 2585e5c31af7Sopenharmony_ci mediump vec2 x[3] = vec2[3](vec2(1.0, 2.0), 2586e5c31af7Sopenharmony_ci vec2(3.0, 4.0), 2587e5c31af7Sopenharmony_ci vec2(5.0, 6.0)); 2588e5c31af7Sopenharmony_ci lowp vec2 y[3] = x; 2589e5c31af7Sopenharmony_ci x = y; 2590e5c31af7Sopenharmony_ci success = (x == y); 2591e5c31af7Sopenharmony_ci ${OUTPUT} 2592e5c31af7Sopenharmony_ci } 2593e5c31af7Sopenharmony_ci "" 2594e5c31af7Sopenharmony_ci end 2595e5c31af7Sopenharmony_ci 2596e5c31af7Sopenharmony_ci case equal_mediump_vec3_lowp_vec3 2597e5c31af7Sopenharmony_ci version 300 es 2598e5c31af7Sopenharmony_ci values 2599e5c31af7Sopenharmony_ci { 2600e5c31af7Sopenharmony_ci output bool success = true; 2601e5c31af7Sopenharmony_ci } 2602e5c31af7Sopenharmony_ci 2603e5c31af7Sopenharmony_ci both "" 2604e5c31af7Sopenharmony_ci #version 300 es 2605e5c31af7Sopenharmony_ci precision mediump float; 2606e5c31af7Sopenharmony_ci ${DECLARATIONS} 2607e5c31af7Sopenharmony_ci void main() 2608e5c31af7Sopenharmony_ci { 2609e5c31af7Sopenharmony_ci ${SETUP} 2610e5c31af7Sopenharmony_ci mediump vec3 x[3] = vec3[3](vec3(1.0, 2.0, 3.0), 2611e5c31af7Sopenharmony_ci vec3(4.0, 5.0, 6.0), 2612e5c31af7Sopenharmony_ci vec3(7.0, 8.0, 9.0)); 2613e5c31af7Sopenharmony_ci lowp vec3 y[3] = x; 2614e5c31af7Sopenharmony_ci x = y; 2615e5c31af7Sopenharmony_ci success = (x == y); 2616e5c31af7Sopenharmony_ci ${OUTPUT} 2617e5c31af7Sopenharmony_ci } 2618e5c31af7Sopenharmony_ci "" 2619e5c31af7Sopenharmony_ci end 2620e5c31af7Sopenharmony_ci 2621e5c31af7Sopenharmony_ci case equal_mediump_vec4_lowp_vec4 2622e5c31af7Sopenharmony_ci version 300 es 2623e5c31af7Sopenharmony_ci values 2624e5c31af7Sopenharmony_ci { 2625e5c31af7Sopenharmony_ci output bool success = true; 2626e5c31af7Sopenharmony_ci } 2627e5c31af7Sopenharmony_ci 2628e5c31af7Sopenharmony_ci both "" 2629e5c31af7Sopenharmony_ci #version 300 es 2630e5c31af7Sopenharmony_ci precision mediump float; 2631e5c31af7Sopenharmony_ci ${DECLARATIONS} 2632e5c31af7Sopenharmony_ci void main() 2633e5c31af7Sopenharmony_ci { 2634e5c31af7Sopenharmony_ci ${SETUP} 2635e5c31af7Sopenharmony_ci mediump vec4 x[3] = vec4[3](vec4(1.0, 2.0, 3.0, 4.0), 2636e5c31af7Sopenharmony_ci vec4(5.0, 6.0, 7.0, 8.0), 2637e5c31af7Sopenharmony_ci vec4(9.0, 10.0, 11.0, 12.0)); 2638e5c31af7Sopenharmony_ci lowp vec4 y[3] = x; 2639e5c31af7Sopenharmony_ci x = y; 2640e5c31af7Sopenharmony_ci success = (x == y); 2641e5c31af7Sopenharmony_ci ${OUTPUT} 2642e5c31af7Sopenharmony_ci } 2643e5c31af7Sopenharmony_ci "" 2644e5c31af7Sopenharmony_ci end 2645e5c31af7Sopenharmony_ci 2646e5c31af7Sopenharmony_ci case equal_mediump_ivec2_lowp_ivec2 2647e5c31af7Sopenharmony_ci version 300 es 2648e5c31af7Sopenharmony_ci values 2649e5c31af7Sopenharmony_ci { 2650e5c31af7Sopenharmony_ci output bool success = true; 2651e5c31af7Sopenharmony_ci } 2652e5c31af7Sopenharmony_ci 2653e5c31af7Sopenharmony_ci both "" 2654e5c31af7Sopenharmony_ci #version 300 es 2655e5c31af7Sopenharmony_ci precision mediump float; 2656e5c31af7Sopenharmony_ci ${DECLARATIONS} 2657e5c31af7Sopenharmony_ci void main() 2658e5c31af7Sopenharmony_ci { 2659e5c31af7Sopenharmony_ci ${SETUP} 2660e5c31af7Sopenharmony_ci mediump ivec2 x[3] = ivec2[3](ivec2(1, 2), 2661e5c31af7Sopenharmony_ci ivec2(3, 4), 2662e5c31af7Sopenharmony_ci ivec2(5, 6)); 2663e5c31af7Sopenharmony_ci lowp ivec2 y[3] = x; 2664e5c31af7Sopenharmony_ci x = y; 2665e5c31af7Sopenharmony_ci success = (x == y); 2666e5c31af7Sopenharmony_ci ${OUTPUT} 2667e5c31af7Sopenharmony_ci } 2668e5c31af7Sopenharmony_ci "" 2669e5c31af7Sopenharmony_ci end 2670e5c31af7Sopenharmony_ci 2671e5c31af7Sopenharmony_ci case equal_mediump_ivec3_lowp_ivec3 2672e5c31af7Sopenharmony_ci version 300 es 2673e5c31af7Sopenharmony_ci values 2674e5c31af7Sopenharmony_ci { 2675e5c31af7Sopenharmony_ci output bool success = true; 2676e5c31af7Sopenharmony_ci } 2677e5c31af7Sopenharmony_ci 2678e5c31af7Sopenharmony_ci both "" 2679e5c31af7Sopenharmony_ci #version 300 es 2680e5c31af7Sopenharmony_ci precision mediump float; 2681e5c31af7Sopenharmony_ci ${DECLARATIONS} 2682e5c31af7Sopenharmony_ci void main() 2683e5c31af7Sopenharmony_ci { 2684e5c31af7Sopenharmony_ci ${SETUP} 2685e5c31af7Sopenharmony_ci mediump ivec3 x[3] = ivec3[3](ivec3(1, 2, 3), 2686e5c31af7Sopenharmony_ci ivec3(4, 5, 6), 2687e5c31af7Sopenharmony_ci ivec3(7, 8, 9)); 2688e5c31af7Sopenharmony_ci lowp ivec3 y[3] = x; 2689e5c31af7Sopenharmony_ci x = y; 2690e5c31af7Sopenharmony_ci success = (x == y); 2691e5c31af7Sopenharmony_ci ${OUTPUT} 2692e5c31af7Sopenharmony_ci } 2693e5c31af7Sopenharmony_ci "" 2694e5c31af7Sopenharmony_ci end 2695e5c31af7Sopenharmony_ci 2696e5c31af7Sopenharmony_ci case equal_mediump_ivec4_lowp_ivec4 2697e5c31af7Sopenharmony_ci version 300 es 2698e5c31af7Sopenharmony_ci values 2699e5c31af7Sopenharmony_ci { 2700e5c31af7Sopenharmony_ci output bool success = true; 2701e5c31af7Sopenharmony_ci } 2702e5c31af7Sopenharmony_ci 2703e5c31af7Sopenharmony_ci both "" 2704e5c31af7Sopenharmony_ci #version 300 es 2705e5c31af7Sopenharmony_ci precision mediump float; 2706e5c31af7Sopenharmony_ci ${DECLARATIONS} 2707e5c31af7Sopenharmony_ci void main() 2708e5c31af7Sopenharmony_ci { 2709e5c31af7Sopenharmony_ci ${SETUP} 2710e5c31af7Sopenharmony_ci mediump ivec4 x[3] = ivec4[3](ivec4(1, 2, 3, 4), 2711e5c31af7Sopenharmony_ci ivec4(5, 6, 7, 8), 2712e5c31af7Sopenharmony_ci ivec4(9, 10, 11, 12)); 2713e5c31af7Sopenharmony_ci lowp ivec4 y[3] = x; 2714e5c31af7Sopenharmony_ci x = y; 2715e5c31af7Sopenharmony_ci success = (x == y); 2716e5c31af7Sopenharmony_ci ${OUTPUT} 2717e5c31af7Sopenharmony_ci } 2718e5c31af7Sopenharmony_ci "" 2719e5c31af7Sopenharmony_ci end 2720e5c31af7Sopenharmony_ci 2721e5c31af7Sopenharmony_ci case equal_mediump_uvec2_lowp_uvec2 2722e5c31af7Sopenharmony_ci version 300 es 2723e5c31af7Sopenharmony_ci values 2724e5c31af7Sopenharmony_ci { 2725e5c31af7Sopenharmony_ci output bool success = true; 2726e5c31af7Sopenharmony_ci } 2727e5c31af7Sopenharmony_ci 2728e5c31af7Sopenharmony_ci both "" 2729e5c31af7Sopenharmony_ci #version 300 es 2730e5c31af7Sopenharmony_ci precision mediump float; 2731e5c31af7Sopenharmony_ci ${DECLARATIONS} 2732e5c31af7Sopenharmony_ci void main() 2733e5c31af7Sopenharmony_ci { 2734e5c31af7Sopenharmony_ci ${SETUP} 2735e5c31af7Sopenharmony_ci mediump uvec2 x[3] = uvec2[3](uvec2(1u, 2u), 2736e5c31af7Sopenharmony_ci uvec2(3u, 4u), 2737e5c31af7Sopenharmony_ci uvec2(5u, 6u)); 2738e5c31af7Sopenharmony_ci lowp uvec2 y[3] = x; 2739e5c31af7Sopenharmony_ci x = y; 2740e5c31af7Sopenharmony_ci success = (x == y); 2741e5c31af7Sopenharmony_ci ${OUTPUT} 2742e5c31af7Sopenharmony_ci } 2743e5c31af7Sopenharmony_ci "" 2744e5c31af7Sopenharmony_ci end 2745e5c31af7Sopenharmony_ci 2746e5c31af7Sopenharmony_ci case equal_mediump_uvec3_lowp_uvec3 2747e5c31af7Sopenharmony_ci version 300 es 2748e5c31af7Sopenharmony_ci values 2749e5c31af7Sopenharmony_ci { 2750e5c31af7Sopenharmony_ci output bool success = true; 2751e5c31af7Sopenharmony_ci } 2752e5c31af7Sopenharmony_ci 2753e5c31af7Sopenharmony_ci both "" 2754e5c31af7Sopenharmony_ci #version 300 es 2755e5c31af7Sopenharmony_ci precision mediump float; 2756e5c31af7Sopenharmony_ci ${DECLARATIONS} 2757e5c31af7Sopenharmony_ci void main() 2758e5c31af7Sopenharmony_ci { 2759e5c31af7Sopenharmony_ci ${SETUP} 2760e5c31af7Sopenharmony_ci mediump uvec3 x[3] = uvec3[3](uvec3(1u, 2u, 3u), 2761e5c31af7Sopenharmony_ci uvec3(4u, 5u, 6u), 2762e5c31af7Sopenharmony_ci uvec3(7u, 8u, 9u)); 2763e5c31af7Sopenharmony_ci lowp uvec3 y[3] = x; 2764e5c31af7Sopenharmony_ci x = y; 2765e5c31af7Sopenharmony_ci success = (x == y); 2766e5c31af7Sopenharmony_ci ${OUTPUT} 2767e5c31af7Sopenharmony_ci } 2768e5c31af7Sopenharmony_ci "" 2769e5c31af7Sopenharmony_ci end 2770e5c31af7Sopenharmony_ci 2771e5c31af7Sopenharmony_ci case equal_mediump_uvec4_lowp_uvec4 2772e5c31af7Sopenharmony_ci version 300 es 2773e5c31af7Sopenharmony_ci values 2774e5c31af7Sopenharmony_ci { 2775e5c31af7Sopenharmony_ci output bool success = true; 2776e5c31af7Sopenharmony_ci } 2777e5c31af7Sopenharmony_ci 2778e5c31af7Sopenharmony_ci both "" 2779e5c31af7Sopenharmony_ci #version 300 es 2780e5c31af7Sopenharmony_ci precision mediump float; 2781e5c31af7Sopenharmony_ci ${DECLARATIONS} 2782e5c31af7Sopenharmony_ci void main() 2783e5c31af7Sopenharmony_ci { 2784e5c31af7Sopenharmony_ci ${SETUP} 2785e5c31af7Sopenharmony_ci mediump uvec4 x[3] = uvec4[3](uvec4(1u, 2u, 3u, 4u), 2786e5c31af7Sopenharmony_ci uvec4(5u, 6u, 7u, 8u), 2787e5c31af7Sopenharmony_ci uvec4(9u, 10u, 11u, 12u)); 2788e5c31af7Sopenharmony_ci lowp uvec4 y[3] = x; 2789e5c31af7Sopenharmony_ci x = y; 2790e5c31af7Sopenharmony_ci success = (x == y); 2791e5c31af7Sopenharmony_ci ${OUTPUT} 2792e5c31af7Sopenharmony_ci } 2793e5c31af7Sopenharmony_ci "" 2794e5c31af7Sopenharmony_ci end 2795e5c31af7Sopenharmony_ci 2796e5c31af7Sopenharmony_ci case equal_mediump_mat2_lowp_mat2 2797e5c31af7Sopenharmony_ci version 300 es 2798e5c31af7Sopenharmony_ci values 2799e5c31af7Sopenharmony_ci { 2800e5c31af7Sopenharmony_ci output bool success = true; 2801e5c31af7Sopenharmony_ci } 2802e5c31af7Sopenharmony_ci 2803e5c31af7Sopenharmony_ci both "" 2804e5c31af7Sopenharmony_ci #version 300 es 2805e5c31af7Sopenharmony_ci precision mediump float; 2806e5c31af7Sopenharmony_ci ${DECLARATIONS} 2807e5c31af7Sopenharmony_ci void main() 2808e5c31af7Sopenharmony_ci { 2809e5c31af7Sopenharmony_ci ${SETUP} 2810e5c31af7Sopenharmony_ci mediump mat2 x[3] = mat2[3](mat2(1.0, 2.0, 3.0, 4.0), 2811e5c31af7Sopenharmony_ci mat2(5.0, 6.0, 7.0, 8.0), 2812e5c31af7Sopenharmony_ci mat2(9.0, 10.0, 11.0, 12.0)); 2813e5c31af7Sopenharmony_ci lowp mat2 y[3] = x; 2814e5c31af7Sopenharmony_ci x = y; 2815e5c31af7Sopenharmony_ci success = (x == y); 2816e5c31af7Sopenharmony_ci ${OUTPUT} 2817e5c31af7Sopenharmony_ci } 2818e5c31af7Sopenharmony_ci "" 2819e5c31af7Sopenharmony_ci end 2820e5c31af7Sopenharmony_ci 2821e5c31af7Sopenharmony_ci case equal_mediump_mat3_lowp_mat3 2822e5c31af7Sopenharmony_ci version 300 es 2823e5c31af7Sopenharmony_ci values 2824e5c31af7Sopenharmony_ci { 2825e5c31af7Sopenharmony_ci output bool success = true; 2826e5c31af7Sopenharmony_ci } 2827e5c31af7Sopenharmony_ci 2828e5c31af7Sopenharmony_ci both "" 2829e5c31af7Sopenharmony_ci #version 300 es 2830e5c31af7Sopenharmony_ci precision mediump float; 2831e5c31af7Sopenharmony_ci ${DECLARATIONS} 2832e5c31af7Sopenharmony_ci void main() 2833e5c31af7Sopenharmony_ci { 2834e5c31af7Sopenharmony_ci ${SETUP} 2835e5c31af7Sopenharmony_ci mediump mat3 x[3] = mat3[3](mat3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0), 2836e5c31af7Sopenharmony_ci mat3(10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0), 2837e5c31af7Sopenharmony_ci mat3(19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0)); 2838e5c31af7Sopenharmony_ci lowp mat3 y[3] = x; 2839e5c31af7Sopenharmony_ci x = y; 2840e5c31af7Sopenharmony_ci success = (x == y); 2841e5c31af7Sopenharmony_ci ${OUTPUT} 2842e5c31af7Sopenharmony_ci } 2843e5c31af7Sopenharmony_ci "" 2844e5c31af7Sopenharmony_ci end 2845e5c31af7Sopenharmony_ci 2846e5c31af7Sopenharmony_ci case equal_mediump_mat4_lowp_mat4 2847e5c31af7Sopenharmony_ci version 300 es 2848e5c31af7Sopenharmony_ci values 2849e5c31af7Sopenharmony_ci { 2850e5c31af7Sopenharmony_ci output bool success = true; 2851e5c31af7Sopenharmony_ci } 2852e5c31af7Sopenharmony_ci 2853e5c31af7Sopenharmony_ci both "" 2854e5c31af7Sopenharmony_ci #version 300 es 2855e5c31af7Sopenharmony_ci precision mediump float; 2856e5c31af7Sopenharmony_ci ${DECLARATIONS} 2857e5c31af7Sopenharmony_ci void main() 2858e5c31af7Sopenharmony_ci { 2859e5c31af7Sopenharmony_ci ${SETUP} 2860e5c31af7Sopenharmony_ci mediump mat4 x[3] = mat4[3](mat4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0), 2861e5c31af7Sopenharmony_ci mat4(17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0), 2862e5c31af7Sopenharmony_ci mat4(33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0)); 2863e5c31af7Sopenharmony_ci lowp mat4 y[3] = x; 2864e5c31af7Sopenharmony_ci x = y; 2865e5c31af7Sopenharmony_ci success = (x == y); 2866e5c31af7Sopenharmony_ci ${OUTPUT} 2867e5c31af7Sopenharmony_ci } 2868e5c31af7Sopenharmony_ci "" 2869e5c31af7Sopenharmony_ci end 2870e5c31af7Sopenharmony_ci 2871e5c31af7Sopenharmony_ci case equal_mediump_int_mediump_int 2872e5c31af7Sopenharmony_ci version 300 es 2873e5c31af7Sopenharmony_ci values 2874e5c31af7Sopenharmony_ci { 2875e5c31af7Sopenharmony_ci output bool success = true; 2876e5c31af7Sopenharmony_ci } 2877e5c31af7Sopenharmony_ci 2878e5c31af7Sopenharmony_ci both "" 2879e5c31af7Sopenharmony_ci #version 300 es 2880e5c31af7Sopenharmony_ci precision mediump float; 2881e5c31af7Sopenharmony_ci ${DECLARATIONS} 2882e5c31af7Sopenharmony_ci void main() 2883e5c31af7Sopenharmony_ci { 2884e5c31af7Sopenharmony_ci ${SETUP} 2885e5c31af7Sopenharmony_ci mediump int x[3] = int[3](1, 2, 3); 2886e5c31af7Sopenharmony_ci mediump int y[3] = x; 2887e5c31af7Sopenharmony_ci x = y; 2888e5c31af7Sopenharmony_ci success = (x == y); 2889e5c31af7Sopenharmony_ci ${OUTPUT} 2890e5c31af7Sopenharmony_ci } 2891e5c31af7Sopenharmony_ci "" 2892e5c31af7Sopenharmony_ci end 2893e5c31af7Sopenharmony_ci 2894e5c31af7Sopenharmony_ci case equal_mediump_uint_mediump_uint 2895e5c31af7Sopenharmony_ci version 300 es 2896e5c31af7Sopenharmony_ci values 2897e5c31af7Sopenharmony_ci { 2898e5c31af7Sopenharmony_ci output bool success = true; 2899e5c31af7Sopenharmony_ci } 2900e5c31af7Sopenharmony_ci 2901e5c31af7Sopenharmony_ci both "" 2902e5c31af7Sopenharmony_ci #version 300 es 2903e5c31af7Sopenharmony_ci precision mediump float; 2904e5c31af7Sopenharmony_ci ${DECLARATIONS} 2905e5c31af7Sopenharmony_ci void main() 2906e5c31af7Sopenharmony_ci { 2907e5c31af7Sopenharmony_ci ${SETUP} 2908e5c31af7Sopenharmony_ci mediump uint x[3] = uint[3](1u, 2u, 3u); 2909e5c31af7Sopenharmony_ci mediump uint y[3] = x; 2910e5c31af7Sopenharmony_ci x = y; 2911e5c31af7Sopenharmony_ci success = (x == y); 2912e5c31af7Sopenharmony_ci ${OUTPUT} 2913e5c31af7Sopenharmony_ci } 2914e5c31af7Sopenharmony_ci "" 2915e5c31af7Sopenharmony_ci end 2916e5c31af7Sopenharmony_ci 2917e5c31af7Sopenharmony_ci case equal_mediump_float_mediump_float 2918e5c31af7Sopenharmony_ci version 300 es 2919e5c31af7Sopenharmony_ci values 2920e5c31af7Sopenharmony_ci { 2921e5c31af7Sopenharmony_ci output bool success = true; 2922e5c31af7Sopenharmony_ci } 2923e5c31af7Sopenharmony_ci 2924e5c31af7Sopenharmony_ci both "" 2925e5c31af7Sopenharmony_ci #version 300 es 2926e5c31af7Sopenharmony_ci precision mediump float; 2927e5c31af7Sopenharmony_ci ${DECLARATIONS} 2928e5c31af7Sopenharmony_ci void main() 2929e5c31af7Sopenharmony_ci { 2930e5c31af7Sopenharmony_ci ${SETUP} 2931e5c31af7Sopenharmony_ci mediump float x[3] = float[3](1.0, 2.0, 3.0); 2932e5c31af7Sopenharmony_ci mediump float y[3] = x; 2933e5c31af7Sopenharmony_ci x = y; 2934e5c31af7Sopenharmony_ci success = (x == y); 2935e5c31af7Sopenharmony_ci ${OUTPUT} 2936e5c31af7Sopenharmony_ci } 2937e5c31af7Sopenharmony_ci "" 2938e5c31af7Sopenharmony_ci end 2939e5c31af7Sopenharmony_ci 2940e5c31af7Sopenharmony_ci case equal_mediump_vec2_mediump_vec2 2941e5c31af7Sopenharmony_ci version 300 es 2942e5c31af7Sopenharmony_ci values 2943e5c31af7Sopenharmony_ci { 2944e5c31af7Sopenharmony_ci output bool success = true; 2945e5c31af7Sopenharmony_ci } 2946e5c31af7Sopenharmony_ci 2947e5c31af7Sopenharmony_ci both "" 2948e5c31af7Sopenharmony_ci #version 300 es 2949e5c31af7Sopenharmony_ci precision mediump float; 2950e5c31af7Sopenharmony_ci ${DECLARATIONS} 2951e5c31af7Sopenharmony_ci void main() 2952e5c31af7Sopenharmony_ci { 2953e5c31af7Sopenharmony_ci ${SETUP} 2954e5c31af7Sopenharmony_ci mediump vec2 x[3] = vec2[3](vec2(1.0, 2.0), 2955e5c31af7Sopenharmony_ci vec2(3.0, 4.0), 2956e5c31af7Sopenharmony_ci vec2(5.0, 6.0)); 2957e5c31af7Sopenharmony_ci mediump vec2 y[3] = x; 2958e5c31af7Sopenharmony_ci x = y; 2959e5c31af7Sopenharmony_ci success = (x == y); 2960e5c31af7Sopenharmony_ci ${OUTPUT} 2961e5c31af7Sopenharmony_ci } 2962e5c31af7Sopenharmony_ci "" 2963e5c31af7Sopenharmony_ci end 2964e5c31af7Sopenharmony_ci 2965e5c31af7Sopenharmony_ci case equal_mediump_vec3_mediump_vec3 2966e5c31af7Sopenharmony_ci version 300 es 2967e5c31af7Sopenharmony_ci values 2968e5c31af7Sopenharmony_ci { 2969e5c31af7Sopenharmony_ci output bool success = true; 2970e5c31af7Sopenharmony_ci } 2971e5c31af7Sopenharmony_ci 2972e5c31af7Sopenharmony_ci both "" 2973e5c31af7Sopenharmony_ci #version 300 es 2974e5c31af7Sopenharmony_ci precision mediump float; 2975e5c31af7Sopenharmony_ci ${DECLARATIONS} 2976e5c31af7Sopenharmony_ci void main() 2977e5c31af7Sopenharmony_ci { 2978e5c31af7Sopenharmony_ci ${SETUP} 2979e5c31af7Sopenharmony_ci mediump vec3 x[3] = vec3[3](vec3(1.0, 2.0, 3.0), 2980e5c31af7Sopenharmony_ci vec3(4.0, 5.0, 6.0), 2981e5c31af7Sopenharmony_ci vec3(7.0, 8.0, 9.0)); 2982e5c31af7Sopenharmony_ci mediump vec3 y[3] = x; 2983e5c31af7Sopenharmony_ci x = y; 2984e5c31af7Sopenharmony_ci success = (x == y); 2985e5c31af7Sopenharmony_ci ${OUTPUT} 2986e5c31af7Sopenharmony_ci } 2987e5c31af7Sopenharmony_ci "" 2988e5c31af7Sopenharmony_ci end 2989e5c31af7Sopenharmony_ci 2990e5c31af7Sopenharmony_ci case equal_mediump_vec4_mediump_vec4 2991e5c31af7Sopenharmony_ci version 300 es 2992e5c31af7Sopenharmony_ci values 2993e5c31af7Sopenharmony_ci { 2994e5c31af7Sopenharmony_ci output bool success = true; 2995e5c31af7Sopenharmony_ci } 2996e5c31af7Sopenharmony_ci 2997e5c31af7Sopenharmony_ci both "" 2998e5c31af7Sopenharmony_ci #version 300 es 2999e5c31af7Sopenharmony_ci precision mediump float; 3000e5c31af7Sopenharmony_ci ${DECLARATIONS} 3001e5c31af7Sopenharmony_ci void main() 3002e5c31af7Sopenharmony_ci { 3003e5c31af7Sopenharmony_ci ${SETUP} 3004e5c31af7Sopenharmony_ci mediump vec4 x[3] = vec4[3](vec4(1.0, 2.0, 3.0, 4.0), 3005e5c31af7Sopenharmony_ci vec4(5.0, 6.0, 7.0, 8.0), 3006e5c31af7Sopenharmony_ci vec4(9.0, 10.0, 11.0, 12.0)); 3007e5c31af7Sopenharmony_ci mediump vec4 y[3] = x; 3008e5c31af7Sopenharmony_ci x = y; 3009e5c31af7Sopenharmony_ci success = (x == y); 3010e5c31af7Sopenharmony_ci ${OUTPUT} 3011e5c31af7Sopenharmony_ci } 3012e5c31af7Sopenharmony_ci "" 3013e5c31af7Sopenharmony_ci end 3014e5c31af7Sopenharmony_ci 3015e5c31af7Sopenharmony_ci case equal_mediump_ivec2_mediump_ivec2 3016e5c31af7Sopenharmony_ci version 300 es 3017e5c31af7Sopenharmony_ci values 3018e5c31af7Sopenharmony_ci { 3019e5c31af7Sopenharmony_ci output bool success = true; 3020e5c31af7Sopenharmony_ci } 3021e5c31af7Sopenharmony_ci 3022e5c31af7Sopenharmony_ci both "" 3023e5c31af7Sopenharmony_ci #version 300 es 3024e5c31af7Sopenharmony_ci precision mediump float; 3025e5c31af7Sopenharmony_ci ${DECLARATIONS} 3026e5c31af7Sopenharmony_ci void main() 3027e5c31af7Sopenharmony_ci { 3028e5c31af7Sopenharmony_ci ${SETUP} 3029e5c31af7Sopenharmony_ci mediump ivec2 x[3] = ivec2[3](ivec2(1, 2), 3030e5c31af7Sopenharmony_ci ivec2(3, 4), 3031e5c31af7Sopenharmony_ci ivec2(5, 6)); 3032e5c31af7Sopenharmony_ci mediump ivec2 y[3] = x; 3033e5c31af7Sopenharmony_ci x = y; 3034e5c31af7Sopenharmony_ci success = (x == y); 3035e5c31af7Sopenharmony_ci ${OUTPUT} 3036e5c31af7Sopenharmony_ci } 3037e5c31af7Sopenharmony_ci "" 3038e5c31af7Sopenharmony_ci end 3039e5c31af7Sopenharmony_ci 3040e5c31af7Sopenharmony_ci case equal_mediump_ivec3_mediump_ivec3 3041e5c31af7Sopenharmony_ci version 300 es 3042e5c31af7Sopenharmony_ci values 3043e5c31af7Sopenharmony_ci { 3044e5c31af7Sopenharmony_ci output bool success = true; 3045e5c31af7Sopenharmony_ci } 3046e5c31af7Sopenharmony_ci 3047e5c31af7Sopenharmony_ci both "" 3048e5c31af7Sopenharmony_ci #version 300 es 3049e5c31af7Sopenharmony_ci precision mediump float; 3050e5c31af7Sopenharmony_ci ${DECLARATIONS} 3051e5c31af7Sopenharmony_ci void main() 3052e5c31af7Sopenharmony_ci { 3053e5c31af7Sopenharmony_ci ${SETUP} 3054e5c31af7Sopenharmony_ci mediump ivec3 x[3] = ivec3[3](ivec3(1, 2, 3), 3055e5c31af7Sopenharmony_ci ivec3(4, 5, 6), 3056e5c31af7Sopenharmony_ci ivec3(7, 8, 9)); 3057e5c31af7Sopenharmony_ci mediump ivec3 y[3] = x; 3058e5c31af7Sopenharmony_ci x = y; 3059e5c31af7Sopenharmony_ci success = (x == y); 3060e5c31af7Sopenharmony_ci ${OUTPUT} 3061e5c31af7Sopenharmony_ci } 3062e5c31af7Sopenharmony_ci "" 3063e5c31af7Sopenharmony_ci end 3064e5c31af7Sopenharmony_ci 3065e5c31af7Sopenharmony_ci case equal_mediump_ivec4_mediump_ivec4 3066e5c31af7Sopenharmony_ci version 300 es 3067e5c31af7Sopenharmony_ci values 3068e5c31af7Sopenharmony_ci { 3069e5c31af7Sopenharmony_ci output bool success = true; 3070e5c31af7Sopenharmony_ci } 3071e5c31af7Sopenharmony_ci 3072e5c31af7Sopenharmony_ci both "" 3073e5c31af7Sopenharmony_ci #version 300 es 3074e5c31af7Sopenharmony_ci precision mediump float; 3075e5c31af7Sopenharmony_ci ${DECLARATIONS} 3076e5c31af7Sopenharmony_ci void main() 3077e5c31af7Sopenharmony_ci { 3078e5c31af7Sopenharmony_ci ${SETUP} 3079e5c31af7Sopenharmony_ci mediump ivec4 x[3] = ivec4[3](ivec4(1, 2, 3, 4), 3080e5c31af7Sopenharmony_ci ivec4(5, 6, 7, 8), 3081e5c31af7Sopenharmony_ci ivec4(9, 10, 11, 12)); 3082e5c31af7Sopenharmony_ci mediump ivec4 y[3] = x; 3083e5c31af7Sopenharmony_ci x = y; 3084e5c31af7Sopenharmony_ci success = (x == y); 3085e5c31af7Sopenharmony_ci ${OUTPUT} 3086e5c31af7Sopenharmony_ci } 3087e5c31af7Sopenharmony_ci "" 3088e5c31af7Sopenharmony_ci end 3089e5c31af7Sopenharmony_ci 3090e5c31af7Sopenharmony_ci case equal_mediump_uvec2_mediump_uvec2 3091e5c31af7Sopenharmony_ci version 300 es 3092e5c31af7Sopenharmony_ci values 3093e5c31af7Sopenharmony_ci { 3094e5c31af7Sopenharmony_ci output bool success = true; 3095e5c31af7Sopenharmony_ci } 3096e5c31af7Sopenharmony_ci 3097e5c31af7Sopenharmony_ci both "" 3098e5c31af7Sopenharmony_ci #version 300 es 3099e5c31af7Sopenharmony_ci precision mediump float; 3100e5c31af7Sopenharmony_ci ${DECLARATIONS} 3101e5c31af7Sopenharmony_ci void main() 3102e5c31af7Sopenharmony_ci { 3103e5c31af7Sopenharmony_ci ${SETUP} 3104e5c31af7Sopenharmony_ci mediump uvec2 x[3] = uvec2[3](uvec2(1u, 2u), 3105e5c31af7Sopenharmony_ci uvec2(3u, 4u), 3106e5c31af7Sopenharmony_ci uvec2(5u, 6u)); 3107e5c31af7Sopenharmony_ci mediump uvec2 y[3] = x; 3108e5c31af7Sopenharmony_ci x = y; 3109e5c31af7Sopenharmony_ci success = (x == y); 3110e5c31af7Sopenharmony_ci ${OUTPUT} 3111e5c31af7Sopenharmony_ci } 3112e5c31af7Sopenharmony_ci "" 3113e5c31af7Sopenharmony_ci end 3114e5c31af7Sopenharmony_ci 3115e5c31af7Sopenharmony_ci case equal_mediump_uvec3_mediump_uvec3 3116e5c31af7Sopenharmony_ci version 300 es 3117e5c31af7Sopenharmony_ci values 3118e5c31af7Sopenharmony_ci { 3119e5c31af7Sopenharmony_ci output bool success = true; 3120e5c31af7Sopenharmony_ci } 3121e5c31af7Sopenharmony_ci 3122e5c31af7Sopenharmony_ci both "" 3123e5c31af7Sopenharmony_ci #version 300 es 3124e5c31af7Sopenharmony_ci precision mediump float; 3125e5c31af7Sopenharmony_ci ${DECLARATIONS} 3126e5c31af7Sopenharmony_ci void main() 3127e5c31af7Sopenharmony_ci { 3128e5c31af7Sopenharmony_ci ${SETUP} 3129e5c31af7Sopenharmony_ci mediump uvec3 x[3] = uvec3[3](uvec3(1u, 2u, 3u), 3130e5c31af7Sopenharmony_ci uvec3(4u, 5u, 6u), 3131e5c31af7Sopenharmony_ci uvec3(7u, 8u, 9u)); 3132e5c31af7Sopenharmony_ci mediump uvec3 y[3] = x; 3133e5c31af7Sopenharmony_ci x = y; 3134e5c31af7Sopenharmony_ci success = (x == y); 3135e5c31af7Sopenharmony_ci ${OUTPUT} 3136e5c31af7Sopenharmony_ci } 3137e5c31af7Sopenharmony_ci "" 3138e5c31af7Sopenharmony_ci end 3139e5c31af7Sopenharmony_ci 3140e5c31af7Sopenharmony_ci case equal_mediump_uvec4_mediump_uvec4 3141e5c31af7Sopenharmony_ci version 300 es 3142e5c31af7Sopenharmony_ci values 3143e5c31af7Sopenharmony_ci { 3144e5c31af7Sopenharmony_ci output bool success = true; 3145e5c31af7Sopenharmony_ci } 3146e5c31af7Sopenharmony_ci 3147e5c31af7Sopenharmony_ci both "" 3148e5c31af7Sopenharmony_ci #version 300 es 3149e5c31af7Sopenharmony_ci precision mediump float; 3150e5c31af7Sopenharmony_ci ${DECLARATIONS} 3151e5c31af7Sopenharmony_ci void main() 3152e5c31af7Sopenharmony_ci { 3153e5c31af7Sopenharmony_ci ${SETUP} 3154e5c31af7Sopenharmony_ci mediump uvec4 x[3] = uvec4[3](uvec4(1u, 2u, 3u, 4u), 3155e5c31af7Sopenharmony_ci uvec4(5u, 6u, 7u, 8u), 3156e5c31af7Sopenharmony_ci uvec4(9u, 10u, 11u, 12u)); 3157e5c31af7Sopenharmony_ci mediump uvec4 y[3] = x; 3158e5c31af7Sopenharmony_ci x = y; 3159e5c31af7Sopenharmony_ci success = (x == y); 3160e5c31af7Sopenharmony_ci ${OUTPUT} 3161e5c31af7Sopenharmony_ci } 3162e5c31af7Sopenharmony_ci "" 3163e5c31af7Sopenharmony_ci end 3164e5c31af7Sopenharmony_ci 3165e5c31af7Sopenharmony_ci case equal_mediump_mat2_mediump_mat2 3166e5c31af7Sopenharmony_ci version 300 es 3167e5c31af7Sopenharmony_ci values 3168e5c31af7Sopenharmony_ci { 3169e5c31af7Sopenharmony_ci output bool success = true; 3170e5c31af7Sopenharmony_ci } 3171e5c31af7Sopenharmony_ci 3172e5c31af7Sopenharmony_ci both "" 3173e5c31af7Sopenharmony_ci #version 300 es 3174e5c31af7Sopenharmony_ci precision mediump float; 3175e5c31af7Sopenharmony_ci ${DECLARATIONS} 3176e5c31af7Sopenharmony_ci void main() 3177e5c31af7Sopenharmony_ci { 3178e5c31af7Sopenharmony_ci ${SETUP} 3179e5c31af7Sopenharmony_ci mediump mat2 x[3] = mat2[3](mat2(1.0, 2.0, 3.0, 4.0), 3180e5c31af7Sopenharmony_ci mat2(5.0, 6.0, 7.0, 8.0), 3181e5c31af7Sopenharmony_ci mat2(9.0, 10.0, 11.0, 12.0)); 3182e5c31af7Sopenharmony_ci mediump mat2 y[3] = x; 3183e5c31af7Sopenharmony_ci x = y; 3184e5c31af7Sopenharmony_ci success = (x == y); 3185e5c31af7Sopenharmony_ci ${OUTPUT} 3186e5c31af7Sopenharmony_ci } 3187e5c31af7Sopenharmony_ci "" 3188e5c31af7Sopenharmony_ci end 3189e5c31af7Sopenharmony_ci 3190e5c31af7Sopenharmony_ci case equal_mediump_mat3_mediump_mat3 3191e5c31af7Sopenharmony_ci version 300 es 3192e5c31af7Sopenharmony_ci values 3193e5c31af7Sopenharmony_ci { 3194e5c31af7Sopenharmony_ci output bool success = true; 3195e5c31af7Sopenharmony_ci } 3196e5c31af7Sopenharmony_ci 3197e5c31af7Sopenharmony_ci both "" 3198e5c31af7Sopenharmony_ci #version 300 es 3199e5c31af7Sopenharmony_ci precision mediump float; 3200e5c31af7Sopenharmony_ci ${DECLARATIONS} 3201e5c31af7Sopenharmony_ci void main() 3202e5c31af7Sopenharmony_ci { 3203e5c31af7Sopenharmony_ci ${SETUP} 3204e5c31af7Sopenharmony_ci mediump mat3 x[3] = mat3[3](mat3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0), 3205e5c31af7Sopenharmony_ci mat3(10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0), 3206e5c31af7Sopenharmony_ci mat3(19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0)); 3207e5c31af7Sopenharmony_ci mediump mat3 y[3] = x; 3208e5c31af7Sopenharmony_ci x = y; 3209e5c31af7Sopenharmony_ci success = (x == y); 3210e5c31af7Sopenharmony_ci ${OUTPUT} 3211e5c31af7Sopenharmony_ci } 3212e5c31af7Sopenharmony_ci "" 3213e5c31af7Sopenharmony_ci end 3214e5c31af7Sopenharmony_ci 3215e5c31af7Sopenharmony_ci case equal_mediump_mat4_mediump_mat4 3216e5c31af7Sopenharmony_ci version 300 es 3217e5c31af7Sopenharmony_ci values 3218e5c31af7Sopenharmony_ci { 3219e5c31af7Sopenharmony_ci output bool success = true; 3220e5c31af7Sopenharmony_ci } 3221e5c31af7Sopenharmony_ci 3222e5c31af7Sopenharmony_ci both "" 3223e5c31af7Sopenharmony_ci #version 300 es 3224e5c31af7Sopenharmony_ci precision mediump float; 3225e5c31af7Sopenharmony_ci ${DECLARATIONS} 3226e5c31af7Sopenharmony_ci void main() 3227e5c31af7Sopenharmony_ci { 3228e5c31af7Sopenharmony_ci ${SETUP} 3229e5c31af7Sopenharmony_ci mediump mat4 x[3] = mat4[3](mat4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0), 3230e5c31af7Sopenharmony_ci mat4(17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0), 3231e5c31af7Sopenharmony_ci mat4(33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0)); 3232e5c31af7Sopenharmony_ci mediump mat4 y[3] = x; 3233e5c31af7Sopenharmony_ci x = y; 3234e5c31af7Sopenharmony_ci success = (x == y); 3235e5c31af7Sopenharmony_ci ${OUTPUT} 3236e5c31af7Sopenharmony_ci } 3237e5c31af7Sopenharmony_ci "" 3238e5c31af7Sopenharmony_ci end 3239e5c31af7Sopenharmony_ci 3240e5c31af7Sopenharmony_ci case equal_highp_int_mediump_int 3241e5c31af7Sopenharmony_ci version 300 es 3242e5c31af7Sopenharmony_ci values 3243e5c31af7Sopenharmony_ci { 3244e5c31af7Sopenharmony_ci output bool success = true; 3245e5c31af7Sopenharmony_ci } 3246e5c31af7Sopenharmony_ci 3247e5c31af7Sopenharmony_ci both "" 3248e5c31af7Sopenharmony_ci #version 300 es 3249e5c31af7Sopenharmony_ci precision highp float; 3250e5c31af7Sopenharmony_ci ${DECLARATIONS} 3251e5c31af7Sopenharmony_ci void main() 3252e5c31af7Sopenharmony_ci { 3253e5c31af7Sopenharmony_ci ${SETUP} 3254e5c31af7Sopenharmony_ci highp int x[3] = int[3](1, 2, 3); 3255e5c31af7Sopenharmony_ci mediump int y[3] = x; 3256e5c31af7Sopenharmony_ci x = y; 3257e5c31af7Sopenharmony_ci success = (x == y); 3258e5c31af7Sopenharmony_ci ${OUTPUT} 3259e5c31af7Sopenharmony_ci } 3260e5c31af7Sopenharmony_ci "" 3261e5c31af7Sopenharmony_ci end 3262e5c31af7Sopenharmony_ci 3263e5c31af7Sopenharmony_ci case equal_highp_uint_mediump_uint 3264e5c31af7Sopenharmony_ci version 300 es 3265e5c31af7Sopenharmony_ci values 3266e5c31af7Sopenharmony_ci { 3267e5c31af7Sopenharmony_ci output bool success = true; 3268e5c31af7Sopenharmony_ci } 3269e5c31af7Sopenharmony_ci 3270e5c31af7Sopenharmony_ci both "" 3271e5c31af7Sopenharmony_ci #version 300 es 3272e5c31af7Sopenharmony_ci precision highp float; 3273e5c31af7Sopenharmony_ci ${DECLARATIONS} 3274e5c31af7Sopenharmony_ci void main() 3275e5c31af7Sopenharmony_ci { 3276e5c31af7Sopenharmony_ci ${SETUP} 3277e5c31af7Sopenharmony_ci highp uint x[3] = uint[3](1u, 2u, 3u); 3278e5c31af7Sopenharmony_ci mediump uint y[3] = x; 3279e5c31af7Sopenharmony_ci x = y; 3280e5c31af7Sopenharmony_ci success = (x == y); 3281e5c31af7Sopenharmony_ci ${OUTPUT} 3282e5c31af7Sopenharmony_ci } 3283e5c31af7Sopenharmony_ci "" 3284e5c31af7Sopenharmony_ci end 3285e5c31af7Sopenharmony_ci 3286e5c31af7Sopenharmony_ci case equal_highp_float_mediump_float 3287e5c31af7Sopenharmony_ci version 300 es 3288e5c31af7Sopenharmony_ci values 3289e5c31af7Sopenharmony_ci { 3290e5c31af7Sopenharmony_ci output bool success = true; 3291e5c31af7Sopenharmony_ci } 3292e5c31af7Sopenharmony_ci 3293e5c31af7Sopenharmony_ci both "" 3294e5c31af7Sopenharmony_ci #version 300 es 3295e5c31af7Sopenharmony_ci precision highp float; 3296e5c31af7Sopenharmony_ci ${DECLARATIONS} 3297e5c31af7Sopenharmony_ci void main() 3298e5c31af7Sopenharmony_ci { 3299e5c31af7Sopenharmony_ci ${SETUP} 3300e5c31af7Sopenharmony_ci highp float x[3] = float[3](1.0, 2.0, 3.0); 3301e5c31af7Sopenharmony_ci mediump float y[3] = x; 3302e5c31af7Sopenharmony_ci x = y; 3303e5c31af7Sopenharmony_ci success = (x == y); 3304e5c31af7Sopenharmony_ci ${OUTPUT} 3305e5c31af7Sopenharmony_ci } 3306e5c31af7Sopenharmony_ci "" 3307e5c31af7Sopenharmony_ci end 3308e5c31af7Sopenharmony_ci 3309e5c31af7Sopenharmony_ci case equal_highp_vec2_mediump_vec2 3310e5c31af7Sopenharmony_ci version 300 es 3311e5c31af7Sopenharmony_ci values 3312e5c31af7Sopenharmony_ci { 3313e5c31af7Sopenharmony_ci output bool success = true; 3314e5c31af7Sopenharmony_ci } 3315e5c31af7Sopenharmony_ci 3316e5c31af7Sopenharmony_ci both "" 3317e5c31af7Sopenharmony_ci #version 300 es 3318e5c31af7Sopenharmony_ci precision highp float; 3319e5c31af7Sopenharmony_ci ${DECLARATIONS} 3320e5c31af7Sopenharmony_ci void main() 3321e5c31af7Sopenharmony_ci { 3322e5c31af7Sopenharmony_ci ${SETUP} 3323e5c31af7Sopenharmony_ci highp vec2 x[3] = vec2[3](vec2(1.0, 2.0), 3324e5c31af7Sopenharmony_ci vec2(3.0, 4.0), 3325e5c31af7Sopenharmony_ci vec2(5.0, 6.0)); 3326e5c31af7Sopenharmony_ci mediump vec2 y[3] = x; 3327e5c31af7Sopenharmony_ci x = y; 3328e5c31af7Sopenharmony_ci success = (x == y); 3329e5c31af7Sopenharmony_ci ${OUTPUT} 3330e5c31af7Sopenharmony_ci } 3331e5c31af7Sopenharmony_ci "" 3332e5c31af7Sopenharmony_ci end 3333e5c31af7Sopenharmony_ci 3334e5c31af7Sopenharmony_ci case equal_highp_vec3_mediump_vec3 3335e5c31af7Sopenharmony_ci version 300 es 3336e5c31af7Sopenharmony_ci values 3337e5c31af7Sopenharmony_ci { 3338e5c31af7Sopenharmony_ci output bool success = true; 3339e5c31af7Sopenharmony_ci } 3340e5c31af7Sopenharmony_ci 3341e5c31af7Sopenharmony_ci both "" 3342e5c31af7Sopenharmony_ci #version 300 es 3343e5c31af7Sopenharmony_ci precision highp float; 3344e5c31af7Sopenharmony_ci ${DECLARATIONS} 3345e5c31af7Sopenharmony_ci void main() 3346e5c31af7Sopenharmony_ci { 3347e5c31af7Sopenharmony_ci ${SETUP} 3348e5c31af7Sopenharmony_ci highp vec3 x[3] = vec3[3](vec3(1.0, 2.0, 3.0), 3349e5c31af7Sopenharmony_ci vec3(4.0, 5.0, 6.0), 3350e5c31af7Sopenharmony_ci vec3(7.0, 8.0, 9.0)); 3351e5c31af7Sopenharmony_ci mediump vec3 y[3] = x; 3352e5c31af7Sopenharmony_ci x = y; 3353e5c31af7Sopenharmony_ci success = (x == y); 3354e5c31af7Sopenharmony_ci ${OUTPUT} 3355e5c31af7Sopenharmony_ci } 3356e5c31af7Sopenharmony_ci "" 3357e5c31af7Sopenharmony_ci end 3358e5c31af7Sopenharmony_ci 3359e5c31af7Sopenharmony_ci case equal_highp_vec4_mediump_vec4 3360e5c31af7Sopenharmony_ci version 300 es 3361e5c31af7Sopenharmony_ci values 3362e5c31af7Sopenharmony_ci { 3363e5c31af7Sopenharmony_ci output bool success = true; 3364e5c31af7Sopenharmony_ci } 3365e5c31af7Sopenharmony_ci 3366e5c31af7Sopenharmony_ci both "" 3367e5c31af7Sopenharmony_ci #version 300 es 3368e5c31af7Sopenharmony_ci precision highp float; 3369e5c31af7Sopenharmony_ci ${DECLARATIONS} 3370e5c31af7Sopenharmony_ci void main() 3371e5c31af7Sopenharmony_ci { 3372e5c31af7Sopenharmony_ci ${SETUP} 3373e5c31af7Sopenharmony_ci highp vec4 x[3] = vec4[3](vec4(1.0, 2.0, 3.0, 4.0), 3374e5c31af7Sopenharmony_ci vec4(5.0, 6.0, 7.0, 8.0), 3375e5c31af7Sopenharmony_ci vec4(9.0, 10.0, 11.0, 12.0)); 3376e5c31af7Sopenharmony_ci mediump vec4 y[3] = x; 3377e5c31af7Sopenharmony_ci x = y; 3378e5c31af7Sopenharmony_ci success = (x == y); 3379e5c31af7Sopenharmony_ci ${OUTPUT} 3380e5c31af7Sopenharmony_ci } 3381e5c31af7Sopenharmony_ci "" 3382e5c31af7Sopenharmony_ci end 3383e5c31af7Sopenharmony_ci 3384e5c31af7Sopenharmony_ci case equal_highp_ivec2_mediump_ivec2 3385e5c31af7Sopenharmony_ci version 300 es 3386e5c31af7Sopenharmony_ci values 3387e5c31af7Sopenharmony_ci { 3388e5c31af7Sopenharmony_ci output bool success = true; 3389e5c31af7Sopenharmony_ci } 3390e5c31af7Sopenharmony_ci 3391e5c31af7Sopenharmony_ci both "" 3392e5c31af7Sopenharmony_ci #version 300 es 3393e5c31af7Sopenharmony_ci precision highp float; 3394e5c31af7Sopenharmony_ci ${DECLARATIONS} 3395e5c31af7Sopenharmony_ci void main() 3396e5c31af7Sopenharmony_ci { 3397e5c31af7Sopenharmony_ci ${SETUP} 3398e5c31af7Sopenharmony_ci highp ivec2 x[3] = ivec2[3](ivec2(1, 2), 3399e5c31af7Sopenharmony_ci ivec2(3, 4), 3400e5c31af7Sopenharmony_ci ivec2(5, 6)); 3401e5c31af7Sopenharmony_ci mediump ivec2 y[3] = x; 3402e5c31af7Sopenharmony_ci x = y; 3403e5c31af7Sopenharmony_ci success = (x == y); 3404e5c31af7Sopenharmony_ci ${OUTPUT} 3405e5c31af7Sopenharmony_ci } 3406e5c31af7Sopenharmony_ci "" 3407e5c31af7Sopenharmony_ci end 3408e5c31af7Sopenharmony_ci 3409e5c31af7Sopenharmony_ci case equal_highp_ivec3_mediump_ivec3 3410e5c31af7Sopenharmony_ci version 300 es 3411e5c31af7Sopenharmony_ci values 3412e5c31af7Sopenharmony_ci { 3413e5c31af7Sopenharmony_ci output bool success = true; 3414e5c31af7Sopenharmony_ci } 3415e5c31af7Sopenharmony_ci 3416e5c31af7Sopenharmony_ci both "" 3417e5c31af7Sopenharmony_ci #version 300 es 3418e5c31af7Sopenharmony_ci precision highp float; 3419e5c31af7Sopenharmony_ci ${DECLARATIONS} 3420e5c31af7Sopenharmony_ci void main() 3421e5c31af7Sopenharmony_ci { 3422e5c31af7Sopenharmony_ci ${SETUP} 3423e5c31af7Sopenharmony_ci highp ivec3 x[3] = ivec3[3](ivec3(1, 2, 3), 3424e5c31af7Sopenharmony_ci ivec3(4, 5, 6), 3425e5c31af7Sopenharmony_ci ivec3(7, 8, 9)); 3426e5c31af7Sopenharmony_ci mediump ivec3 y[3] = x; 3427e5c31af7Sopenharmony_ci x = y; 3428e5c31af7Sopenharmony_ci success = (x == y); 3429e5c31af7Sopenharmony_ci ${OUTPUT} 3430e5c31af7Sopenharmony_ci } 3431e5c31af7Sopenharmony_ci "" 3432e5c31af7Sopenharmony_ci end 3433e5c31af7Sopenharmony_ci 3434e5c31af7Sopenharmony_ci case equal_highp_ivec4_mediump_ivec4 3435e5c31af7Sopenharmony_ci version 300 es 3436e5c31af7Sopenharmony_ci values 3437e5c31af7Sopenharmony_ci { 3438e5c31af7Sopenharmony_ci output bool success = true; 3439e5c31af7Sopenharmony_ci } 3440e5c31af7Sopenharmony_ci 3441e5c31af7Sopenharmony_ci both "" 3442e5c31af7Sopenharmony_ci #version 300 es 3443e5c31af7Sopenharmony_ci precision highp float; 3444e5c31af7Sopenharmony_ci ${DECLARATIONS} 3445e5c31af7Sopenharmony_ci void main() 3446e5c31af7Sopenharmony_ci { 3447e5c31af7Sopenharmony_ci ${SETUP} 3448e5c31af7Sopenharmony_ci highp ivec4 x[3] = ivec4[3](ivec4(1, 2, 3, 4), 3449e5c31af7Sopenharmony_ci ivec4(5, 6, 7, 8), 3450e5c31af7Sopenharmony_ci ivec4(9, 10, 11, 12)); 3451e5c31af7Sopenharmony_ci mediump ivec4 y[3] = x; 3452e5c31af7Sopenharmony_ci x = y; 3453e5c31af7Sopenharmony_ci success = (x == y); 3454e5c31af7Sopenharmony_ci ${OUTPUT} 3455e5c31af7Sopenharmony_ci } 3456e5c31af7Sopenharmony_ci "" 3457e5c31af7Sopenharmony_ci end 3458e5c31af7Sopenharmony_ci 3459e5c31af7Sopenharmony_ci case equal_highp_uvec2_mediump_uvec2 3460e5c31af7Sopenharmony_ci version 300 es 3461e5c31af7Sopenharmony_ci values 3462e5c31af7Sopenharmony_ci { 3463e5c31af7Sopenharmony_ci output bool success = true; 3464e5c31af7Sopenharmony_ci } 3465e5c31af7Sopenharmony_ci 3466e5c31af7Sopenharmony_ci both "" 3467e5c31af7Sopenharmony_ci #version 300 es 3468e5c31af7Sopenharmony_ci precision highp float; 3469e5c31af7Sopenharmony_ci ${DECLARATIONS} 3470e5c31af7Sopenharmony_ci void main() 3471e5c31af7Sopenharmony_ci { 3472e5c31af7Sopenharmony_ci ${SETUP} 3473e5c31af7Sopenharmony_ci highp uvec2 x[3] = uvec2[3](uvec2(1u, 2u), 3474e5c31af7Sopenharmony_ci uvec2(3u, 4u), 3475e5c31af7Sopenharmony_ci uvec2(5u, 6u)); 3476e5c31af7Sopenharmony_ci mediump uvec2 y[3] = x; 3477e5c31af7Sopenharmony_ci x = y; 3478e5c31af7Sopenharmony_ci success = (x == y); 3479e5c31af7Sopenharmony_ci ${OUTPUT} 3480e5c31af7Sopenharmony_ci } 3481e5c31af7Sopenharmony_ci "" 3482e5c31af7Sopenharmony_ci end 3483e5c31af7Sopenharmony_ci 3484e5c31af7Sopenharmony_ci case equal_highp_uvec3_mediump_uvec3 3485e5c31af7Sopenharmony_ci version 300 es 3486e5c31af7Sopenharmony_ci values 3487e5c31af7Sopenharmony_ci { 3488e5c31af7Sopenharmony_ci output bool success = true; 3489e5c31af7Sopenharmony_ci } 3490e5c31af7Sopenharmony_ci 3491e5c31af7Sopenharmony_ci both "" 3492e5c31af7Sopenharmony_ci #version 300 es 3493e5c31af7Sopenharmony_ci precision highp float; 3494e5c31af7Sopenharmony_ci ${DECLARATIONS} 3495e5c31af7Sopenharmony_ci void main() 3496e5c31af7Sopenharmony_ci { 3497e5c31af7Sopenharmony_ci ${SETUP} 3498e5c31af7Sopenharmony_ci highp uvec3 x[3] = uvec3[3](uvec3(1u, 2u, 3u), 3499e5c31af7Sopenharmony_ci uvec3(4u, 5u, 6u), 3500e5c31af7Sopenharmony_ci uvec3(7u, 8u, 9u)); 3501e5c31af7Sopenharmony_ci mediump uvec3 y[3] = x; 3502e5c31af7Sopenharmony_ci x = y; 3503e5c31af7Sopenharmony_ci success = (x == y); 3504e5c31af7Sopenharmony_ci ${OUTPUT} 3505e5c31af7Sopenharmony_ci } 3506e5c31af7Sopenharmony_ci "" 3507e5c31af7Sopenharmony_ci end 3508e5c31af7Sopenharmony_ci 3509e5c31af7Sopenharmony_ci case equal_highp_uvec4_mediump_uvec4 3510e5c31af7Sopenharmony_ci version 300 es 3511e5c31af7Sopenharmony_ci values 3512e5c31af7Sopenharmony_ci { 3513e5c31af7Sopenharmony_ci output bool success = true; 3514e5c31af7Sopenharmony_ci } 3515e5c31af7Sopenharmony_ci 3516e5c31af7Sopenharmony_ci both "" 3517e5c31af7Sopenharmony_ci #version 300 es 3518e5c31af7Sopenharmony_ci precision highp float; 3519e5c31af7Sopenharmony_ci ${DECLARATIONS} 3520e5c31af7Sopenharmony_ci void main() 3521e5c31af7Sopenharmony_ci { 3522e5c31af7Sopenharmony_ci ${SETUP} 3523e5c31af7Sopenharmony_ci highp uvec4 x[3] = uvec4[3](uvec4(1u, 2u, 3u, 4u), 3524e5c31af7Sopenharmony_ci uvec4(5u, 6u, 7u, 8u), 3525e5c31af7Sopenharmony_ci uvec4(9u, 10u, 11u, 12u)); 3526e5c31af7Sopenharmony_ci mediump uvec4 y[3] = x; 3527e5c31af7Sopenharmony_ci x = y; 3528e5c31af7Sopenharmony_ci success = (x == y); 3529e5c31af7Sopenharmony_ci ${OUTPUT} 3530e5c31af7Sopenharmony_ci } 3531e5c31af7Sopenharmony_ci "" 3532e5c31af7Sopenharmony_ci end 3533e5c31af7Sopenharmony_ci 3534e5c31af7Sopenharmony_ci case equal_highp_mat2_mediump_mat2 3535e5c31af7Sopenharmony_ci version 300 es 3536e5c31af7Sopenharmony_ci values 3537e5c31af7Sopenharmony_ci { 3538e5c31af7Sopenharmony_ci output bool success = true; 3539e5c31af7Sopenharmony_ci } 3540e5c31af7Sopenharmony_ci 3541e5c31af7Sopenharmony_ci both "" 3542e5c31af7Sopenharmony_ci #version 300 es 3543e5c31af7Sopenharmony_ci precision highp float; 3544e5c31af7Sopenharmony_ci ${DECLARATIONS} 3545e5c31af7Sopenharmony_ci void main() 3546e5c31af7Sopenharmony_ci { 3547e5c31af7Sopenharmony_ci ${SETUP} 3548e5c31af7Sopenharmony_ci highp mat2 x[3] = mat2[3](mat2(1.0, 2.0, 3.0, 4.0), 3549e5c31af7Sopenharmony_ci mat2(5.0, 6.0, 7.0, 8.0), 3550e5c31af7Sopenharmony_ci mat2(9.0, 10.0, 11.0, 12.0)); 3551e5c31af7Sopenharmony_ci mediump mat2 y[3] = x; 3552e5c31af7Sopenharmony_ci x = y; 3553e5c31af7Sopenharmony_ci success = (x == y); 3554e5c31af7Sopenharmony_ci ${OUTPUT} 3555e5c31af7Sopenharmony_ci } 3556e5c31af7Sopenharmony_ci "" 3557e5c31af7Sopenharmony_ci end 3558e5c31af7Sopenharmony_ci 3559e5c31af7Sopenharmony_ci case equal_highp_mat3_mediump_mat3 3560e5c31af7Sopenharmony_ci version 300 es 3561e5c31af7Sopenharmony_ci values 3562e5c31af7Sopenharmony_ci { 3563e5c31af7Sopenharmony_ci output bool success = true; 3564e5c31af7Sopenharmony_ci } 3565e5c31af7Sopenharmony_ci 3566e5c31af7Sopenharmony_ci both "" 3567e5c31af7Sopenharmony_ci #version 300 es 3568e5c31af7Sopenharmony_ci precision highp float; 3569e5c31af7Sopenharmony_ci ${DECLARATIONS} 3570e5c31af7Sopenharmony_ci void main() 3571e5c31af7Sopenharmony_ci { 3572e5c31af7Sopenharmony_ci ${SETUP} 3573e5c31af7Sopenharmony_ci highp mat3 x[3] = mat3[3](mat3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0), 3574e5c31af7Sopenharmony_ci mat3(10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0), 3575e5c31af7Sopenharmony_ci mat3(19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0)); 3576e5c31af7Sopenharmony_ci mediump mat3 y[3] = x; 3577e5c31af7Sopenharmony_ci x = y; 3578e5c31af7Sopenharmony_ci success = (x == y); 3579e5c31af7Sopenharmony_ci ${OUTPUT} 3580e5c31af7Sopenharmony_ci } 3581e5c31af7Sopenharmony_ci "" 3582e5c31af7Sopenharmony_ci end 3583e5c31af7Sopenharmony_ci 3584e5c31af7Sopenharmony_ci case equal_highp_mat4_mediump_mat4 3585e5c31af7Sopenharmony_ci version 300 es 3586e5c31af7Sopenharmony_ci values 3587e5c31af7Sopenharmony_ci { 3588e5c31af7Sopenharmony_ci output bool success = true; 3589e5c31af7Sopenharmony_ci } 3590e5c31af7Sopenharmony_ci 3591e5c31af7Sopenharmony_ci both "" 3592e5c31af7Sopenharmony_ci #version 300 es 3593e5c31af7Sopenharmony_ci precision highp float; 3594e5c31af7Sopenharmony_ci ${DECLARATIONS} 3595e5c31af7Sopenharmony_ci void main() 3596e5c31af7Sopenharmony_ci { 3597e5c31af7Sopenharmony_ci ${SETUP} 3598e5c31af7Sopenharmony_ci highp mat4 x[3] = mat4[3](mat4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0), 3599e5c31af7Sopenharmony_ci mat4(17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0), 3600e5c31af7Sopenharmony_ci mat4(33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0)); 3601e5c31af7Sopenharmony_ci mediump mat4 y[3] = x; 3602e5c31af7Sopenharmony_ci x = y; 3603e5c31af7Sopenharmony_ci success = (x == y); 3604e5c31af7Sopenharmony_ci ${OUTPUT} 3605e5c31af7Sopenharmony_ci } 3606e5c31af7Sopenharmony_ci "" 3607e5c31af7Sopenharmony_ci end 3608e5c31af7Sopenharmony_ci 3609e5c31af7Sopenharmony_ci case equal_highp_int_lowp_int 3610e5c31af7Sopenharmony_ci version 300 es 3611e5c31af7Sopenharmony_ci values 3612e5c31af7Sopenharmony_ci { 3613e5c31af7Sopenharmony_ci output bool success = true; 3614e5c31af7Sopenharmony_ci } 3615e5c31af7Sopenharmony_ci 3616e5c31af7Sopenharmony_ci both "" 3617e5c31af7Sopenharmony_ci #version 300 es 3618e5c31af7Sopenharmony_ci precision highp float; 3619e5c31af7Sopenharmony_ci ${DECLARATIONS} 3620e5c31af7Sopenharmony_ci void main() 3621e5c31af7Sopenharmony_ci { 3622e5c31af7Sopenharmony_ci ${SETUP} 3623e5c31af7Sopenharmony_ci highp int x[3] = int[3](1, 2, 3); 3624e5c31af7Sopenharmony_ci lowp int y[3] = x; 3625e5c31af7Sopenharmony_ci x = y; 3626e5c31af7Sopenharmony_ci success = (x == y); 3627e5c31af7Sopenharmony_ci ${OUTPUT} 3628e5c31af7Sopenharmony_ci } 3629e5c31af7Sopenharmony_ci "" 3630e5c31af7Sopenharmony_ci end 3631e5c31af7Sopenharmony_ci 3632e5c31af7Sopenharmony_ci case equal_highp_uint_lowp_uint 3633e5c31af7Sopenharmony_ci version 300 es 3634e5c31af7Sopenharmony_ci values 3635e5c31af7Sopenharmony_ci { 3636e5c31af7Sopenharmony_ci output bool success = true; 3637e5c31af7Sopenharmony_ci } 3638e5c31af7Sopenharmony_ci 3639e5c31af7Sopenharmony_ci both "" 3640e5c31af7Sopenharmony_ci #version 300 es 3641e5c31af7Sopenharmony_ci precision highp float; 3642e5c31af7Sopenharmony_ci ${DECLARATIONS} 3643e5c31af7Sopenharmony_ci void main() 3644e5c31af7Sopenharmony_ci { 3645e5c31af7Sopenharmony_ci ${SETUP} 3646e5c31af7Sopenharmony_ci highp uint x[3] = uint[3](1u, 2u, 3u); 3647e5c31af7Sopenharmony_ci lowp uint y[3] = x; 3648e5c31af7Sopenharmony_ci x = y; 3649e5c31af7Sopenharmony_ci success = (x == y); 3650e5c31af7Sopenharmony_ci ${OUTPUT} 3651e5c31af7Sopenharmony_ci } 3652e5c31af7Sopenharmony_ci "" 3653e5c31af7Sopenharmony_ci end 3654e5c31af7Sopenharmony_ci 3655e5c31af7Sopenharmony_ci case equal_highp_float_lowp_float 3656e5c31af7Sopenharmony_ci version 300 es 3657e5c31af7Sopenharmony_ci values 3658e5c31af7Sopenharmony_ci { 3659e5c31af7Sopenharmony_ci output bool success = true; 3660e5c31af7Sopenharmony_ci } 3661e5c31af7Sopenharmony_ci 3662e5c31af7Sopenharmony_ci both "" 3663e5c31af7Sopenharmony_ci #version 300 es 3664e5c31af7Sopenharmony_ci precision highp float; 3665e5c31af7Sopenharmony_ci ${DECLARATIONS} 3666e5c31af7Sopenharmony_ci void main() 3667e5c31af7Sopenharmony_ci { 3668e5c31af7Sopenharmony_ci ${SETUP} 3669e5c31af7Sopenharmony_ci highp float x[3] = float[3](1.0, 2.0, 3.0); 3670e5c31af7Sopenharmony_ci lowp float y[3] = x; 3671e5c31af7Sopenharmony_ci x = y; 3672e5c31af7Sopenharmony_ci success = (x == y); 3673e5c31af7Sopenharmony_ci ${OUTPUT} 3674e5c31af7Sopenharmony_ci } 3675e5c31af7Sopenharmony_ci "" 3676e5c31af7Sopenharmony_ci end 3677e5c31af7Sopenharmony_ci 3678e5c31af7Sopenharmony_ci case equal_highp_vec2_lowp_vec2 3679e5c31af7Sopenharmony_ci version 300 es 3680e5c31af7Sopenharmony_ci values 3681e5c31af7Sopenharmony_ci { 3682e5c31af7Sopenharmony_ci output bool success = true; 3683e5c31af7Sopenharmony_ci } 3684e5c31af7Sopenharmony_ci 3685e5c31af7Sopenharmony_ci both "" 3686e5c31af7Sopenharmony_ci #version 300 es 3687e5c31af7Sopenharmony_ci precision highp float; 3688e5c31af7Sopenharmony_ci ${DECLARATIONS} 3689e5c31af7Sopenharmony_ci void main() 3690e5c31af7Sopenharmony_ci { 3691e5c31af7Sopenharmony_ci ${SETUP} 3692e5c31af7Sopenharmony_ci highp vec2 x[3] = vec2[3](vec2(1.0, 2.0), 3693e5c31af7Sopenharmony_ci vec2(3.0, 4.0), 3694e5c31af7Sopenharmony_ci vec2(5.0, 6.0)); 3695e5c31af7Sopenharmony_ci lowp vec2 y[3] = x; 3696e5c31af7Sopenharmony_ci x = y; 3697e5c31af7Sopenharmony_ci success = (x == y); 3698e5c31af7Sopenharmony_ci ${OUTPUT} 3699e5c31af7Sopenharmony_ci } 3700e5c31af7Sopenharmony_ci "" 3701e5c31af7Sopenharmony_ci end 3702e5c31af7Sopenharmony_ci 3703e5c31af7Sopenharmony_ci case equal_highp_vec3_lowp_vec3 3704e5c31af7Sopenharmony_ci version 300 es 3705e5c31af7Sopenharmony_ci values 3706e5c31af7Sopenharmony_ci { 3707e5c31af7Sopenharmony_ci output bool success = true; 3708e5c31af7Sopenharmony_ci } 3709e5c31af7Sopenharmony_ci 3710e5c31af7Sopenharmony_ci both "" 3711e5c31af7Sopenharmony_ci #version 300 es 3712e5c31af7Sopenharmony_ci precision highp float; 3713e5c31af7Sopenharmony_ci ${DECLARATIONS} 3714e5c31af7Sopenharmony_ci void main() 3715e5c31af7Sopenharmony_ci { 3716e5c31af7Sopenharmony_ci ${SETUP} 3717e5c31af7Sopenharmony_ci highp vec3 x[3] = vec3[3](vec3(1.0, 2.0, 3.0), 3718e5c31af7Sopenharmony_ci vec3(4.0, 5.0, 6.0), 3719e5c31af7Sopenharmony_ci vec3(7.0, 8.0, 9.0)); 3720e5c31af7Sopenharmony_ci lowp vec3 y[3] = x; 3721e5c31af7Sopenharmony_ci x = y; 3722e5c31af7Sopenharmony_ci success = (x == y); 3723e5c31af7Sopenharmony_ci ${OUTPUT} 3724e5c31af7Sopenharmony_ci } 3725e5c31af7Sopenharmony_ci "" 3726e5c31af7Sopenharmony_ci end 3727e5c31af7Sopenharmony_ci 3728e5c31af7Sopenharmony_ci case equal_highp_vec4_lowp_vec4 3729e5c31af7Sopenharmony_ci version 300 es 3730e5c31af7Sopenharmony_ci values 3731e5c31af7Sopenharmony_ci { 3732e5c31af7Sopenharmony_ci output bool success = true; 3733e5c31af7Sopenharmony_ci } 3734e5c31af7Sopenharmony_ci 3735e5c31af7Sopenharmony_ci both "" 3736e5c31af7Sopenharmony_ci #version 300 es 3737e5c31af7Sopenharmony_ci precision highp float; 3738e5c31af7Sopenharmony_ci ${DECLARATIONS} 3739e5c31af7Sopenharmony_ci void main() 3740e5c31af7Sopenharmony_ci { 3741e5c31af7Sopenharmony_ci ${SETUP} 3742e5c31af7Sopenharmony_ci highp vec4 x[3] = vec4[3](vec4(1.0, 2.0, 3.0, 4.0), 3743e5c31af7Sopenharmony_ci vec4(5.0, 6.0, 7.0, 8.0), 3744e5c31af7Sopenharmony_ci vec4(9.0, 10.0, 11.0, 12.0)); 3745e5c31af7Sopenharmony_ci lowp vec4 y[3] = x; 3746e5c31af7Sopenharmony_ci x = y; 3747e5c31af7Sopenharmony_ci success = (x == y); 3748e5c31af7Sopenharmony_ci ${OUTPUT} 3749e5c31af7Sopenharmony_ci } 3750e5c31af7Sopenharmony_ci "" 3751e5c31af7Sopenharmony_ci end 3752e5c31af7Sopenharmony_ci 3753e5c31af7Sopenharmony_ci case equal_highp_ivec2_lowp_ivec2 3754e5c31af7Sopenharmony_ci version 300 es 3755e5c31af7Sopenharmony_ci values 3756e5c31af7Sopenharmony_ci { 3757e5c31af7Sopenharmony_ci output bool success = true; 3758e5c31af7Sopenharmony_ci } 3759e5c31af7Sopenharmony_ci 3760e5c31af7Sopenharmony_ci both "" 3761e5c31af7Sopenharmony_ci #version 300 es 3762e5c31af7Sopenharmony_ci precision highp float; 3763e5c31af7Sopenharmony_ci ${DECLARATIONS} 3764e5c31af7Sopenharmony_ci void main() 3765e5c31af7Sopenharmony_ci { 3766e5c31af7Sopenharmony_ci ${SETUP} 3767e5c31af7Sopenharmony_ci highp ivec2 x[3] = ivec2[3](ivec2(1, 2), 3768e5c31af7Sopenharmony_ci ivec2(3, 4), 3769e5c31af7Sopenharmony_ci ivec2(5, 6)); 3770e5c31af7Sopenharmony_ci lowp ivec2 y[3] = x; 3771e5c31af7Sopenharmony_ci x = y; 3772e5c31af7Sopenharmony_ci success = (x == y); 3773e5c31af7Sopenharmony_ci ${OUTPUT} 3774e5c31af7Sopenharmony_ci } 3775e5c31af7Sopenharmony_ci "" 3776e5c31af7Sopenharmony_ci end 3777e5c31af7Sopenharmony_ci 3778e5c31af7Sopenharmony_ci case equal_highp_ivec3_lowp_ivec3 3779e5c31af7Sopenharmony_ci version 300 es 3780e5c31af7Sopenharmony_ci values 3781e5c31af7Sopenharmony_ci { 3782e5c31af7Sopenharmony_ci output bool success = true; 3783e5c31af7Sopenharmony_ci } 3784e5c31af7Sopenharmony_ci 3785e5c31af7Sopenharmony_ci both "" 3786e5c31af7Sopenharmony_ci #version 300 es 3787e5c31af7Sopenharmony_ci precision highp float; 3788e5c31af7Sopenharmony_ci ${DECLARATIONS} 3789e5c31af7Sopenharmony_ci void main() 3790e5c31af7Sopenharmony_ci { 3791e5c31af7Sopenharmony_ci ${SETUP} 3792e5c31af7Sopenharmony_ci highp ivec3 x[3] = ivec3[3](ivec3(1, 2, 3), 3793e5c31af7Sopenharmony_ci ivec3(4, 5, 6), 3794e5c31af7Sopenharmony_ci ivec3(7, 8, 9)); 3795e5c31af7Sopenharmony_ci lowp ivec3 y[3] = x; 3796e5c31af7Sopenharmony_ci x = y; 3797e5c31af7Sopenharmony_ci success = (x == y); 3798e5c31af7Sopenharmony_ci ${OUTPUT} 3799e5c31af7Sopenharmony_ci } 3800e5c31af7Sopenharmony_ci "" 3801e5c31af7Sopenharmony_ci end 3802e5c31af7Sopenharmony_ci 3803e5c31af7Sopenharmony_ci case equal_highp_ivec4_lowp_ivec4 3804e5c31af7Sopenharmony_ci version 300 es 3805e5c31af7Sopenharmony_ci values 3806e5c31af7Sopenharmony_ci { 3807e5c31af7Sopenharmony_ci output bool success = true; 3808e5c31af7Sopenharmony_ci } 3809e5c31af7Sopenharmony_ci 3810e5c31af7Sopenharmony_ci both "" 3811e5c31af7Sopenharmony_ci #version 300 es 3812e5c31af7Sopenharmony_ci precision highp float; 3813e5c31af7Sopenharmony_ci ${DECLARATIONS} 3814e5c31af7Sopenharmony_ci void main() 3815e5c31af7Sopenharmony_ci { 3816e5c31af7Sopenharmony_ci ${SETUP} 3817e5c31af7Sopenharmony_ci highp ivec4 x[3] = ivec4[3](ivec4(1, 2, 3, 4), 3818e5c31af7Sopenharmony_ci ivec4(5, 6, 7, 8), 3819e5c31af7Sopenharmony_ci ivec4(9, 10, 11, 12)); 3820e5c31af7Sopenharmony_ci lowp ivec4 y[3] = x; 3821e5c31af7Sopenharmony_ci x = y; 3822e5c31af7Sopenharmony_ci success = (x == y); 3823e5c31af7Sopenharmony_ci ${OUTPUT} 3824e5c31af7Sopenharmony_ci } 3825e5c31af7Sopenharmony_ci "" 3826e5c31af7Sopenharmony_ci end 3827e5c31af7Sopenharmony_ci 3828e5c31af7Sopenharmony_ci case equal_highp_uvec2_lowp_uvec2 3829e5c31af7Sopenharmony_ci version 300 es 3830e5c31af7Sopenharmony_ci values 3831e5c31af7Sopenharmony_ci { 3832e5c31af7Sopenharmony_ci output bool success = true; 3833e5c31af7Sopenharmony_ci } 3834e5c31af7Sopenharmony_ci 3835e5c31af7Sopenharmony_ci both "" 3836e5c31af7Sopenharmony_ci #version 300 es 3837e5c31af7Sopenharmony_ci precision highp float; 3838e5c31af7Sopenharmony_ci ${DECLARATIONS} 3839e5c31af7Sopenharmony_ci void main() 3840e5c31af7Sopenharmony_ci { 3841e5c31af7Sopenharmony_ci ${SETUP} 3842e5c31af7Sopenharmony_ci highp uvec2 x[3] = uvec2[3](uvec2(1u, 2u), 3843e5c31af7Sopenharmony_ci uvec2(3u, 4u), 3844e5c31af7Sopenharmony_ci uvec2(5u, 6u)); 3845e5c31af7Sopenharmony_ci lowp uvec2 y[3] = x; 3846e5c31af7Sopenharmony_ci x = y; 3847e5c31af7Sopenharmony_ci success = (x == y); 3848e5c31af7Sopenharmony_ci ${OUTPUT} 3849e5c31af7Sopenharmony_ci } 3850e5c31af7Sopenharmony_ci "" 3851e5c31af7Sopenharmony_ci end 3852e5c31af7Sopenharmony_ci 3853e5c31af7Sopenharmony_ci case equal_highp_uvec3_lowp_uvec3 3854e5c31af7Sopenharmony_ci version 300 es 3855e5c31af7Sopenharmony_ci values 3856e5c31af7Sopenharmony_ci { 3857e5c31af7Sopenharmony_ci output bool success = true; 3858e5c31af7Sopenharmony_ci } 3859e5c31af7Sopenharmony_ci 3860e5c31af7Sopenharmony_ci both "" 3861e5c31af7Sopenharmony_ci #version 300 es 3862e5c31af7Sopenharmony_ci precision highp float; 3863e5c31af7Sopenharmony_ci ${DECLARATIONS} 3864e5c31af7Sopenharmony_ci void main() 3865e5c31af7Sopenharmony_ci { 3866e5c31af7Sopenharmony_ci ${SETUP} 3867e5c31af7Sopenharmony_ci highp uvec3 x[3] = uvec3[3](uvec3(1u, 2u, 3u), 3868e5c31af7Sopenharmony_ci uvec3(4u, 5u, 6u), 3869e5c31af7Sopenharmony_ci uvec3(7u, 8u, 9u)); 3870e5c31af7Sopenharmony_ci lowp uvec3 y[3] = x; 3871e5c31af7Sopenharmony_ci x = y; 3872e5c31af7Sopenharmony_ci success = (x == y); 3873e5c31af7Sopenharmony_ci ${OUTPUT} 3874e5c31af7Sopenharmony_ci } 3875e5c31af7Sopenharmony_ci "" 3876e5c31af7Sopenharmony_ci end 3877e5c31af7Sopenharmony_ci 3878e5c31af7Sopenharmony_ci case equal_highp_uvec4_lowp_uvec4 3879e5c31af7Sopenharmony_ci version 300 es 3880e5c31af7Sopenharmony_ci values 3881e5c31af7Sopenharmony_ci { 3882e5c31af7Sopenharmony_ci output bool success = true; 3883e5c31af7Sopenharmony_ci } 3884e5c31af7Sopenharmony_ci 3885e5c31af7Sopenharmony_ci both "" 3886e5c31af7Sopenharmony_ci #version 300 es 3887e5c31af7Sopenharmony_ci precision highp float; 3888e5c31af7Sopenharmony_ci ${DECLARATIONS} 3889e5c31af7Sopenharmony_ci void main() 3890e5c31af7Sopenharmony_ci { 3891e5c31af7Sopenharmony_ci ${SETUP} 3892e5c31af7Sopenharmony_ci highp uvec4 x[3] = uvec4[3](uvec4(1u, 2u, 3u, 4u), 3893e5c31af7Sopenharmony_ci uvec4(5u, 6u, 7u, 8u), 3894e5c31af7Sopenharmony_ci uvec4(9u, 10u, 11u, 12u)); 3895e5c31af7Sopenharmony_ci lowp uvec4 y[3] = x; 3896e5c31af7Sopenharmony_ci x = y; 3897e5c31af7Sopenharmony_ci success = (x == y); 3898e5c31af7Sopenharmony_ci ${OUTPUT} 3899e5c31af7Sopenharmony_ci } 3900e5c31af7Sopenharmony_ci "" 3901e5c31af7Sopenharmony_ci end 3902e5c31af7Sopenharmony_ci 3903e5c31af7Sopenharmony_ci case equal_highp_mat2_lowp_mat2 3904e5c31af7Sopenharmony_ci version 300 es 3905e5c31af7Sopenharmony_ci values 3906e5c31af7Sopenharmony_ci { 3907e5c31af7Sopenharmony_ci output bool success = true; 3908e5c31af7Sopenharmony_ci } 3909e5c31af7Sopenharmony_ci 3910e5c31af7Sopenharmony_ci both "" 3911e5c31af7Sopenharmony_ci #version 300 es 3912e5c31af7Sopenharmony_ci precision highp float; 3913e5c31af7Sopenharmony_ci ${DECLARATIONS} 3914e5c31af7Sopenharmony_ci void main() 3915e5c31af7Sopenharmony_ci { 3916e5c31af7Sopenharmony_ci ${SETUP} 3917e5c31af7Sopenharmony_ci highp mat2 x[3] = mat2[3](mat2(1.0, 2.0, 3.0, 4.0), 3918e5c31af7Sopenharmony_ci mat2(5.0, 6.0, 7.0, 8.0), 3919e5c31af7Sopenharmony_ci mat2(9.0, 10.0, 11.0, 12.0)); 3920e5c31af7Sopenharmony_ci lowp mat2 y[3] = x; 3921e5c31af7Sopenharmony_ci x = y; 3922e5c31af7Sopenharmony_ci success = (x == y); 3923e5c31af7Sopenharmony_ci ${OUTPUT} 3924e5c31af7Sopenharmony_ci } 3925e5c31af7Sopenharmony_ci "" 3926e5c31af7Sopenharmony_ci end 3927e5c31af7Sopenharmony_ci 3928e5c31af7Sopenharmony_ci case equal_highp_mat3_lowp_mat3 3929e5c31af7Sopenharmony_ci version 300 es 3930e5c31af7Sopenharmony_ci values 3931e5c31af7Sopenharmony_ci { 3932e5c31af7Sopenharmony_ci output bool success = true; 3933e5c31af7Sopenharmony_ci } 3934e5c31af7Sopenharmony_ci 3935e5c31af7Sopenharmony_ci both "" 3936e5c31af7Sopenharmony_ci #version 300 es 3937e5c31af7Sopenharmony_ci precision highp float; 3938e5c31af7Sopenharmony_ci ${DECLARATIONS} 3939e5c31af7Sopenharmony_ci void main() 3940e5c31af7Sopenharmony_ci { 3941e5c31af7Sopenharmony_ci ${SETUP} 3942e5c31af7Sopenharmony_ci highp mat3 x[3] = mat3[3](mat3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0), 3943e5c31af7Sopenharmony_ci mat3(10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0), 3944e5c31af7Sopenharmony_ci mat3(19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0)); 3945e5c31af7Sopenharmony_ci lowp mat3 y[3] = x; 3946e5c31af7Sopenharmony_ci x = y; 3947e5c31af7Sopenharmony_ci success = (x == y); 3948e5c31af7Sopenharmony_ci ${OUTPUT} 3949e5c31af7Sopenharmony_ci } 3950e5c31af7Sopenharmony_ci "" 3951e5c31af7Sopenharmony_ci end 3952e5c31af7Sopenharmony_ci 3953e5c31af7Sopenharmony_ci case equal_highp_mat4_lowp_mat4 3954e5c31af7Sopenharmony_ci version 300 es 3955e5c31af7Sopenharmony_ci values 3956e5c31af7Sopenharmony_ci { 3957e5c31af7Sopenharmony_ci output bool success = true; 3958e5c31af7Sopenharmony_ci } 3959e5c31af7Sopenharmony_ci 3960e5c31af7Sopenharmony_ci both "" 3961e5c31af7Sopenharmony_ci #version 300 es 3962e5c31af7Sopenharmony_ci precision highp float; 3963e5c31af7Sopenharmony_ci ${DECLARATIONS} 3964e5c31af7Sopenharmony_ci void main() 3965e5c31af7Sopenharmony_ci { 3966e5c31af7Sopenharmony_ci ${SETUP} 3967e5c31af7Sopenharmony_ci highp mat4 x[3] = mat4[3](mat4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0), 3968e5c31af7Sopenharmony_ci mat4(17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0), 3969e5c31af7Sopenharmony_ci mat4(33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0)); 3970e5c31af7Sopenharmony_ci lowp mat4 y[3] = x; 3971e5c31af7Sopenharmony_ci x = y; 3972e5c31af7Sopenharmony_ci success = (x == y); 3973e5c31af7Sopenharmony_ci ${OUTPUT} 3974e5c31af7Sopenharmony_ci } 3975e5c31af7Sopenharmony_ci "" 3976e5c31af7Sopenharmony_ci end 3977e5c31af7Sopenharmony_ci 3978e5c31af7Sopenharmony_ci case equal_highp_int_highp_int 3979e5c31af7Sopenharmony_ci version 300 es 3980e5c31af7Sopenharmony_ci values 3981e5c31af7Sopenharmony_ci { 3982e5c31af7Sopenharmony_ci output bool success = true; 3983e5c31af7Sopenharmony_ci } 3984e5c31af7Sopenharmony_ci 3985e5c31af7Sopenharmony_ci both "" 3986e5c31af7Sopenharmony_ci #version 300 es 3987e5c31af7Sopenharmony_ci precision highp float; 3988e5c31af7Sopenharmony_ci ${DECLARATIONS} 3989e5c31af7Sopenharmony_ci void main() 3990e5c31af7Sopenharmony_ci { 3991e5c31af7Sopenharmony_ci ${SETUP} 3992e5c31af7Sopenharmony_ci highp int x[3] = int[3](1, 2, 3); 3993e5c31af7Sopenharmony_ci highp int y[3] = x; 3994e5c31af7Sopenharmony_ci x = y; 3995e5c31af7Sopenharmony_ci success = (x == y); 3996e5c31af7Sopenharmony_ci ${OUTPUT} 3997e5c31af7Sopenharmony_ci } 3998e5c31af7Sopenharmony_ci "" 3999e5c31af7Sopenharmony_ci end 4000e5c31af7Sopenharmony_ci 4001e5c31af7Sopenharmony_ci case equal_highp_uint_highp_uint 4002e5c31af7Sopenharmony_ci version 300 es 4003e5c31af7Sopenharmony_ci values 4004e5c31af7Sopenharmony_ci { 4005e5c31af7Sopenharmony_ci output bool success = true; 4006e5c31af7Sopenharmony_ci } 4007e5c31af7Sopenharmony_ci 4008e5c31af7Sopenharmony_ci both "" 4009e5c31af7Sopenharmony_ci #version 300 es 4010e5c31af7Sopenharmony_ci precision highp float; 4011e5c31af7Sopenharmony_ci ${DECLARATIONS} 4012e5c31af7Sopenharmony_ci void main() 4013e5c31af7Sopenharmony_ci { 4014e5c31af7Sopenharmony_ci ${SETUP} 4015e5c31af7Sopenharmony_ci highp uint x[3] = uint[3](1u, 2u, 3u); 4016e5c31af7Sopenharmony_ci highp uint y[3] = x; 4017e5c31af7Sopenharmony_ci x = y; 4018e5c31af7Sopenharmony_ci success = (x == y); 4019e5c31af7Sopenharmony_ci ${OUTPUT} 4020e5c31af7Sopenharmony_ci } 4021e5c31af7Sopenharmony_ci "" 4022e5c31af7Sopenharmony_ci end 4023e5c31af7Sopenharmony_ci 4024e5c31af7Sopenharmony_ci case equal_highp_float_highp_float 4025e5c31af7Sopenharmony_ci version 300 es 4026e5c31af7Sopenharmony_ci values 4027e5c31af7Sopenharmony_ci { 4028e5c31af7Sopenharmony_ci output bool success = true; 4029e5c31af7Sopenharmony_ci } 4030e5c31af7Sopenharmony_ci 4031e5c31af7Sopenharmony_ci both "" 4032e5c31af7Sopenharmony_ci #version 300 es 4033e5c31af7Sopenharmony_ci precision highp float; 4034e5c31af7Sopenharmony_ci ${DECLARATIONS} 4035e5c31af7Sopenharmony_ci void main() 4036e5c31af7Sopenharmony_ci { 4037e5c31af7Sopenharmony_ci ${SETUP} 4038e5c31af7Sopenharmony_ci highp float x[3] = float[3](1.0, 2.0, 3.0); 4039e5c31af7Sopenharmony_ci highp float y[3] = x; 4040e5c31af7Sopenharmony_ci x = y; 4041e5c31af7Sopenharmony_ci success = (x == y); 4042e5c31af7Sopenharmony_ci ${OUTPUT} 4043e5c31af7Sopenharmony_ci } 4044e5c31af7Sopenharmony_ci "" 4045e5c31af7Sopenharmony_ci end 4046e5c31af7Sopenharmony_ci 4047e5c31af7Sopenharmony_ci case equal_highp_vec2_highp_vec2 4048e5c31af7Sopenharmony_ci version 300 es 4049e5c31af7Sopenharmony_ci values 4050e5c31af7Sopenharmony_ci { 4051e5c31af7Sopenharmony_ci output bool success = true; 4052e5c31af7Sopenharmony_ci } 4053e5c31af7Sopenharmony_ci 4054e5c31af7Sopenharmony_ci both "" 4055e5c31af7Sopenharmony_ci #version 300 es 4056e5c31af7Sopenharmony_ci precision highp float; 4057e5c31af7Sopenharmony_ci ${DECLARATIONS} 4058e5c31af7Sopenharmony_ci void main() 4059e5c31af7Sopenharmony_ci { 4060e5c31af7Sopenharmony_ci ${SETUP} 4061e5c31af7Sopenharmony_ci highp vec2 x[3] = vec2[3](vec2(1.0, 2.0), 4062e5c31af7Sopenharmony_ci vec2(3.0, 4.0), 4063e5c31af7Sopenharmony_ci vec2(5.0, 6.0)); 4064e5c31af7Sopenharmony_ci highp vec2 y[3] = x; 4065e5c31af7Sopenharmony_ci x = y; 4066e5c31af7Sopenharmony_ci success = (x == y); 4067e5c31af7Sopenharmony_ci ${OUTPUT} 4068e5c31af7Sopenharmony_ci } 4069e5c31af7Sopenharmony_ci "" 4070e5c31af7Sopenharmony_ci end 4071e5c31af7Sopenharmony_ci 4072e5c31af7Sopenharmony_ci case equal_highp_vec3_highp_vec3 4073e5c31af7Sopenharmony_ci version 300 es 4074e5c31af7Sopenharmony_ci values 4075e5c31af7Sopenharmony_ci { 4076e5c31af7Sopenharmony_ci output bool success = true; 4077e5c31af7Sopenharmony_ci } 4078e5c31af7Sopenharmony_ci 4079e5c31af7Sopenharmony_ci both "" 4080e5c31af7Sopenharmony_ci #version 300 es 4081e5c31af7Sopenharmony_ci precision highp float; 4082e5c31af7Sopenharmony_ci ${DECLARATIONS} 4083e5c31af7Sopenharmony_ci void main() 4084e5c31af7Sopenharmony_ci { 4085e5c31af7Sopenharmony_ci ${SETUP} 4086e5c31af7Sopenharmony_ci highp vec3 x[3] = vec3[3](vec3(1.0, 2.0, 3.0), 4087e5c31af7Sopenharmony_ci vec3(4.0, 5.0, 6.0), 4088e5c31af7Sopenharmony_ci vec3(7.0, 8.0, 9.0)); 4089e5c31af7Sopenharmony_ci highp vec3 y[3] = x; 4090e5c31af7Sopenharmony_ci x = y; 4091e5c31af7Sopenharmony_ci success = (x == y); 4092e5c31af7Sopenharmony_ci ${OUTPUT} 4093e5c31af7Sopenharmony_ci } 4094e5c31af7Sopenharmony_ci "" 4095e5c31af7Sopenharmony_ci end 4096e5c31af7Sopenharmony_ci 4097e5c31af7Sopenharmony_ci case equal_highp_vec4_highp_vec4 4098e5c31af7Sopenharmony_ci version 300 es 4099e5c31af7Sopenharmony_ci values 4100e5c31af7Sopenharmony_ci { 4101e5c31af7Sopenharmony_ci output bool success = true; 4102e5c31af7Sopenharmony_ci } 4103e5c31af7Sopenharmony_ci 4104e5c31af7Sopenharmony_ci both "" 4105e5c31af7Sopenharmony_ci #version 300 es 4106e5c31af7Sopenharmony_ci precision highp float; 4107e5c31af7Sopenharmony_ci ${DECLARATIONS} 4108e5c31af7Sopenharmony_ci void main() 4109e5c31af7Sopenharmony_ci { 4110e5c31af7Sopenharmony_ci ${SETUP} 4111e5c31af7Sopenharmony_ci highp vec4 x[3] = vec4[3](vec4(1.0, 2.0, 3.0, 4.0), 4112e5c31af7Sopenharmony_ci vec4(5.0, 6.0, 7.0, 8.0), 4113e5c31af7Sopenharmony_ci vec4(9.0, 10.0, 11.0, 12.0)); 4114e5c31af7Sopenharmony_ci highp vec4 y[3] = x; 4115e5c31af7Sopenharmony_ci x = y; 4116e5c31af7Sopenharmony_ci success = (x == y); 4117e5c31af7Sopenharmony_ci ${OUTPUT} 4118e5c31af7Sopenharmony_ci } 4119e5c31af7Sopenharmony_ci "" 4120e5c31af7Sopenharmony_ci end 4121e5c31af7Sopenharmony_ci 4122e5c31af7Sopenharmony_ci case equal_highp_ivec2_highp_ivec2 4123e5c31af7Sopenharmony_ci version 300 es 4124e5c31af7Sopenharmony_ci values 4125e5c31af7Sopenharmony_ci { 4126e5c31af7Sopenharmony_ci output bool success = true; 4127e5c31af7Sopenharmony_ci } 4128e5c31af7Sopenharmony_ci 4129e5c31af7Sopenharmony_ci both "" 4130e5c31af7Sopenharmony_ci #version 300 es 4131e5c31af7Sopenharmony_ci precision highp float; 4132e5c31af7Sopenharmony_ci ${DECLARATIONS} 4133e5c31af7Sopenharmony_ci void main() 4134e5c31af7Sopenharmony_ci { 4135e5c31af7Sopenharmony_ci ${SETUP} 4136e5c31af7Sopenharmony_ci highp ivec2 x[3] = ivec2[3](ivec2(1, 2), 4137e5c31af7Sopenharmony_ci ivec2(3, 4), 4138e5c31af7Sopenharmony_ci ivec2(5, 6)); 4139e5c31af7Sopenharmony_ci highp ivec2 y[3] = x; 4140e5c31af7Sopenharmony_ci x = y; 4141e5c31af7Sopenharmony_ci success = (x == y); 4142e5c31af7Sopenharmony_ci ${OUTPUT} 4143e5c31af7Sopenharmony_ci } 4144e5c31af7Sopenharmony_ci "" 4145e5c31af7Sopenharmony_ci end 4146e5c31af7Sopenharmony_ci 4147e5c31af7Sopenharmony_ci case equal_highp_ivec3_highp_ivec3 4148e5c31af7Sopenharmony_ci version 300 es 4149e5c31af7Sopenharmony_ci values 4150e5c31af7Sopenharmony_ci { 4151e5c31af7Sopenharmony_ci output bool success = true; 4152e5c31af7Sopenharmony_ci } 4153e5c31af7Sopenharmony_ci 4154e5c31af7Sopenharmony_ci both "" 4155e5c31af7Sopenharmony_ci #version 300 es 4156e5c31af7Sopenharmony_ci precision highp float; 4157e5c31af7Sopenharmony_ci ${DECLARATIONS} 4158e5c31af7Sopenharmony_ci void main() 4159e5c31af7Sopenharmony_ci { 4160e5c31af7Sopenharmony_ci ${SETUP} 4161e5c31af7Sopenharmony_ci highp ivec3 x[3] = ivec3[3](ivec3(1, 2, 3), 4162e5c31af7Sopenharmony_ci ivec3(4, 5, 6), 4163e5c31af7Sopenharmony_ci ivec3(7, 8, 9)); 4164e5c31af7Sopenharmony_ci highp ivec3 y[3] = x; 4165e5c31af7Sopenharmony_ci x = y; 4166e5c31af7Sopenharmony_ci success = (x == y); 4167e5c31af7Sopenharmony_ci ${OUTPUT} 4168e5c31af7Sopenharmony_ci } 4169e5c31af7Sopenharmony_ci "" 4170e5c31af7Sopenharmony_ci end 4171e5c31af7Sopenharmony_ci 4172e5c31af7Sopenharmony_ci case equal_highp_ivec4_highp_ivec4 4173e5c31af7Sopenharmony_ci version 300 es 4174e5c31af7Sopenharmony_ci values 4175e5c31af7Sopenharmony_ci { 4176e5c31af7Sopenharmony_ci output bool success = true; 4177e5c31af7Sopenharmony_ci } 4178e5c31af7Sopenharmony_ci 4179e5c31af7Sopenharmony_ci both "" 4180e5c31af7Sopenharmony_ci #version 300 es 4181e5c31af7Sopenharmony_ci precision highp float; 4182e5c31af7Sopenharmony_ci ${DECLARATIONS} 4183e5c31af7Sopenharmony_ci void main() 4184e5c31af7Sopenharmony_ci { 4185e5c31af7Sopenharmony_ci ${SETUP} 4186e5c31af7Sopenharmony_ci highp ivec4 x[3] = ivec4[3](ivec4(1, 2, 3, 4), 4187e5c31af7Sopenharmony_ci ivec4(5, 6, 7, 8), 4188e5c31af7Sopenharmony_ci ivec4(9, 10, 11, 12)); 4189e5c31af7Sopenharmony_ci highp ivec4 y[3] = x; 4190e5c31af7Sopenharmony_ci x = y; 4191e5c31af7Sopenharmony_ci success = (x == y); 4192e5c31af7Sopenharmony_ci ${OUTPUT} 4193e5c31af7Sopenharmony_ci } 4194e5c31af7Sopenharmony_ci "" 4195e5c31af7Sopenharmony_ci end 4196e5c31af7Sopenharmony_ci 4197e5c31af7Sopenharmony_ci case equal_highp_uvec2_highp_uvec2 4198e5c31af7Sopenharmony_ci version 300 es 4199e5c31af7Sopenharmony_ci values 4200e5c31af7Sopenharmony_ci { 4201e5c31af7Sopenharmony_ci output bool success = true; 4202e5c31af7Sopenharmony_ci } 4203e5c31af7Sopenharmony_ci 4204e5c31af7Sopenharmony_ci both "" 4205e5c31af7Sopenharmony_ci #version 300 es 4206e5c31af7Sopenharmony_ci precision highp float; 4207e5c31af7Sopenharmony_ci ${DECLARATIONS} 4208e5c31af7Sopenharmony_ci void main() 4209e5c31af7Sopenharmony_ci { 4210e5c31af7Sopenharmony_ci ${SETUP} 4211e5c31af7Sopenharmony_ci highp uvec2 x[3] = uvec2[3](uvec2(1u, 2u), 4212e5c31af7Sopenharmony_ci uvec2(3u, 4u), 4213e5c31af7Sopenharmony_ci uvec2(5u, 6u)); 4214e5c31af7Sopenharmony_ci highp uvec2 y[3] = x; 4215e5c31af7Sopenharmony_ci x = y; 4216e5c31af7Sopenharmony_ci success = (x == y); 4217e5c31af7Sopenharmony_ci ${OUTPUT} 4218e5c31af7Sopenharmony_ci } 4219e5c31af7Sopenharmony_ci "" 4220e5c31af7Sopenharmony_ci end 4221e5c31af7Sopenharmony_ci 4222e5c31af7Sopenharmony_ci case equal_highp_uvec3_highp_uvec3 4223e5c31af7Sopenharmony_ci version 300 es 4224e5c31af7Sopenharmony_ci values 4225e5c31af7Sopenharmony_ci { 4226e5c31af7Sopenharmony_ci output bool success = true; 4227e5c31af7Sopenharmony_ci } 4228e5c31af7Sopenharmony_ci 4229e5c31af7Sopenharmony_ci both "" 4230e5c31af7Sopenharmony_ci #version 300 es 4231e5c31af7Sopenharmony_ci precision highp float; 4232e5c31af7Sopenharmony_ci ${DECLARATIONS} 4233e5c31af7Sopenharmony_ci void main() 4234e5c31af7Sopenharmony_ci { 4235e5c31af7Sopenharmony_ci ${SETUP} 4236e5c31af7Sopenharmony_ci highp uvec3 x[3] = uvec3[3](uvec3(1u, 2u, 3u), 4237e5c31af7Sopenharmony_ci uvec3(4u, 5u, 6u), 4238e5c31af7Sopenharmony_ci uvec3(7u, 8u, 9u)); 4239e5c31af7Sopenharmony_ci highp uvec3 y[3] = x; 4240e5c31af7Sopenharmony_ci x = y; 4241e5c31af7Sopenharmony_ci success = (x == y); 4242e5c31af7Sopenharmony_ci ${OUTPUT} 4243e5c31af7Sopenharmony_ci } 4244e5c31af7Sopenharmony_ci "" 4245e5c31af7Sopenharmony_ci end 4246e5c31af7Sopenharmony_ci 4247e5c31af7Sopenharmony_ci case equal_highp_uvec4_highp_uvec4 4248e5c31af7Sopenharmony_ci version 300 es 4249e5c31af7Sopenharmony_ci values 4250e5c31af7Sopenharmony_ci { 4251e5c31af7Sopenharmony_ci output bool success = true; 4252e5c31af7Sopenharmony_ci } 4253e5c31af7Sopenharmony_ci 4254e5c31af7Sopenharmony_ci both "" 4255e5c31af7Sopenharmony_ci #version 300 es 4256e5c31af7Sopenharmony_ci precision highp float; 4257e5c31af7Sopenharmony_ci ${DECLARATIONS} 4258e5c31af7Sopenharmony_ci void main() 4259e5c31af7Sopenharmony_ci { 4260e5c31af7Sopenharmony_ci ${SETUP} 4261e5c31af7Sopenharmony_ci highp uvec4 x[3] = uvec4[3](uvec4(1u, 2u, 3u, 4u), 4262e5c31af7Sopenharmony_ci uvec4(5u, 6u, 7u, 8u), 4263e5c31af7Sopenharmony_ci uvec4(9u, 10u, 11u, 12u)); 4264e5c31af7Sopenharmony_ci highp uvec4 y[3] = x; 4265e5c31af7Sopenharmony_ci x = y; 4266e5c31af7Sopenharmony_ci success = (x == y); 4267e5c31af7Sopenharmony_ci ${OUTPUT} 4268e5c31af7Sopenharmony_ci } 4269e5c31af7Sopenharmony_ci "" 4270e5c31af7Sopenharmony_ci end 4271e5c31af7Sopenharmony_ci 4272e5c31af7Sopenharmony_ci case equal_highp_mat2_highp_mat2 4273e5c31af7Sopenharmony_ci version 300 es 4274e5c31af7Sopenharmony_ci values 4275e5c31af7Sopenharmony_ci { 4276e5c31af7Sopenharmony_ci output bool success = true; 4277e5c31af7Sopenharmony_ci } 4278e5c31af7Sopenharmony_ci 4279e5c31af7Sopenharmony_ci both "" 4280e5c31af7Sopenharmony_ci #version 300 es 4281e5c31af7Sopenharmony_ci precision highp float; 4282e5c31af7Sopenharmony_ci ${DECLARATIONS} 4283e5c31af7Sopenharmony_ci void main() 4284e5c31af7Sopenharmony_ci { 4285e5c31af7Sopenharmony_ci ${SETUP} 4286e5c31af7Sopenharmony_ci highp mat2 x[3] = mat2[3](mat2(1.0, 2.0, 3.0, 4.0), 4287e5c31af7Sopenharmony_ci mat2(5.0, 6.0, 7.0, 8.0), 4288e5c31af7Sopenharmony_ci mat2(9.0, 10.0, 11.0, 12.0)); 4289e5c31af7Sopenharmony_ci highp mat2 y[3] = x; 4290e5c31af7Sopenharmony_ci x = y; 4291e5c31af7Sopenharmony_ci success = (x == y); 4292e5c31af7Sopenharmony_ci ${OUTPUT} 4293e5c31af7Sopenharmony_ci } 4294e5c31af7Sopenharmony_ci "" 4295e5c31af7Sopenharmony_ci end 4296e5c31af7Sopenharmony_ci 4297e5c31af7Sopenharmony_ci case equal_highp_mat3_highp_mat3 4298e5c31af7Sopenharmony_ci version 300 es 4299e5c31af7Sopenharmony_ci values 4300e5c31af7Sopenharmony_ci { 4301e5c31af7Sopenharmony_ci output bool success = true; 4302e5c31af7Sopenharmony_ci } 4303e5c31af7Sopenharmony_ci 4304e5c31af7Sopenharmony_ci both "" 4305e5c31af7Sopenharmony_ci #version 300 es 4306e5c31af7Sopenharmony_ci precision highp float; 4307e5c31af7Sopenharmony_ci ${DECLARATIONS} 4308e5c31af7Sopenharmony_ci void main() 4309e5c31af7Sopenharmony_ci { 4310e5c31af7Sopenharmony_ci ${SETUP} 4311e5c31af7Sopenharmony_ci highp mat3 x[3] = mat3[3](mat3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0), 4312e5c31af7Sopenharmony_ci mat3(10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0), 4313e5c31af7Sopenharmony_ci mat3(19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0)); 4314e5c31af7Sopenharmony_ci highp mat3 y[3] = x; 4315e5c31af7Sopenharmony_ci x = y; 4316e5c31af7Sopenharmony_ci success = (x == y); 4317e5c31af7Sopenharmony_ci ${OUTPUT} 4318e5c31af7Sopenharmony_ci } 4319e5c31af7Sopenharmony_ci "" 4320e5c31af7Sopenharmony_ci end 4321e5c31af7Sopenharmony_ci 4322e5c31af7Sopenharmony_ci case equal_highp_mat4_highp_mat4 4323e5c31af7Sopenharmony_ci version 300 es 4324e5c31af7Sopenharmony_ci values 4325e5c31af7Sopenharmony_ci { 4326e5c31af7Sopenharmony_ci output bool success = true; 4327e5c31af7Sopenharmony_ci } 4328e5c31af7Sopenharmony_ci 4329e5c31af7Sopenharmony_ci both "" 4330e5c31af7Sopenharmony_ci #version 300 es 4331e5c31af7Sopenharmony_ci precision highp float; 4332e5c31af7Sopenharmony_ci ${DECLARATIONS} 4333e5c31af7Sopenharmony_ci void main() 4334e5c31af7Sopenharmony_ci { 4335e5c31af7Sopenharmony_ci ${SETUP} 4336e5c31af7Sopenharmony_ci highp mat4 x[3] = mat4[3](mat4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0), 4337e5c31af7Sopenharmony_ci mat4(17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0), 4338e5c31af7Sopenharmony_ci mat4(33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0)); 4339e5c31af7Sopenharmony_ci highp mat4 y[3] = x; 4340e5c31af7Sopenharmony_ci x = y; 4341e5c31af7Sopenharmony_ci success = (x == y); 4342e5c31af7Sopenharmony_ci ${OUTPUT} 4343e5c31af7Sopenharmony_ci } 4344e5c31af7Sopenharmony_ci "" 4345e5c31af7Sopenharmony_ci end 4346e5c31af7Sopenharmony_ci 4347e5c31af7Sopenharmony_ciend # compare 4348