1e5c31af7Sopenharmony_ci# Tests todo: 2e5c31af7Sopenharmony_ci# - inout with varyings, attributes, uniforms (and arrays of 'em) 3e5c31af7Sopenharmony_ci# - inout with arrays, array elements 4e5c31af7Sopenharmony_ci# - inout with array elements 5e5c31af7Sopenharmony_ci# - inout by-value semantics (arrays & elements & structs) 6e5c31af7Sopenharmony_ci 7e5c31af7Sopenharmony_ci# Done: 8e5c31af7Sopenharmony_ci# - control flow: return, return in loop, etc. 9e5c31af7Sopenharmony_ci 10e5c31af7Sopenharmony_cigroup datatypes "Function Parameter Data Types" 11e5c31af7Sopenharmony_ci 12e5c31af7Sopenharmony_ci case float_float 13e5c31af7Sopenharmony_ci version 310 es 14e5c31af7Sopenharmony_ci values 15e5c31af7Sopenharmony_ci { 16e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 17e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 18e5c31af7Sopenharmony_ci } 19e5c31af7Sopenharmony_ci 20e5c31af7Sopenharmony_ci both "" 21e5c31af7Sopenharmony_ci #version 310 es 22e5c31af7Sopenharmony_ci precision highp float; 23e5c31af7Sopenharmony_ci ${DECLARATIONS} 24e5c31af7Sopenharmony_ci 25e5c31af7Sopenharmony_ci float func (float a) 26e5c31af7Sopenharmony_ci { 27e5c31af7Sopenharmony_ci return -a; 28e5c31af7Sopenharmony_ci } 29e5c31af7Sopenharmony_ci 30e5c31af7Sopenharmony_ci void main() 31e5c31af7Sopenharmony_ci { 32e5c31af7Sopenharmony_ci out0 = func(in0); 33e5c31af7Sopenharmony_ci ${OUTPUT} 34e5c31af7Sopenharmony_ci } 35e5c31af7Sopenharmony_ci "" 36e5c31af7Sopenharmony_ci end 37e5c31af7Sopenharmony_ci 38e5c31af7Sopenharmony_ci case float_vec2 39e5c31af7Sopenharmony_ci version 310 es 40e5c31af7Sopenharmony_ci values 41e5c31af7Sopenharmony_ci { 42e5c31af7Sopenharmony_ci input vec2 in0 = [ vec2(0.0, 1.0) | vec2(2.0, 2.5) ]; 43e5c31af7Sopenharmony_ci output float out0 = [ -1.0 | -4.5 ]; 44e5c31af7Sopenharmony_ci } 45e5c31af7Sopenharmony_ci 46e5c31af7Sopenharmony_ci both "" 47e5c31af7Sopenharmony_ci #version 310 es 48e5c31af7Sopenharmony_ci precision highp float; 49e5c31af7Sopenharmony_ci ${DECLARATIONS} 50e5c31af7Sopenharmony_ci 51e5c31af7Sopenharmony_ci float func (vec2 a) 52e5c31af7Sopenharmony_ci { 53e5c31af7Sopenharmony_ci return -(a.x + a.y); 54e5c31af7Sopenharmony_ci } 55e5c31af7Sopenharmony_ci 56e5c31af7Sopenharmony_ci void main() 57e5c31af7Sopenharmony_ci { 58e5c31af7Sopenharmony_ci out0 = func(in0); 59e5c31af7Sopenharmony_ci ${OUTPUT} 60e5c31af7Sopenharmony_ci } 61e5c31af7Sopenharmony_ci "" 62e5c31af7Sopenharmony_ci end 63e5c31af7Sopenharmony_ci 64e5c31af7Sopenharmony_ci case float_vec3 65e5c31af7Sopenharmony_ci version 310 es 66e5c31af7Sopenharmony_ci values 67e5c31af7Sopenharmony_ci { 68e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.0, 1.0, -2.0) | vec3(2.0, 2.5, -4.0) ]; 69e5c31af7Sopenharmony_ci output float out0 = [ 1.0 | -0.5 ]; 70e5c31af7Sopenharmony_ci } 71e5c31af7Sopenharmony_ci 72e5c31af7Sopenharmony_ci both "" 73e5c31af7Sopenharmony_ci #version 310 es 74e5c31af7Sopenharmony_ci precision highp float; 75e5c31af7Sopenharmony_ci ${DECLARATIONS} 76e5c31af7Sopenharmony_ci 77e5c31af7Sopenharmony_ci float func (vec3 a) 78e5c31af7Sopenharmony_ci { 79e5c31af7Sopenharmony_ci return -(a.x + a.y + a.z); 80e5c31af7Sopenharmony_ci } 81e5c31af7Sopenharmony_ci 82e5c31af7Sopenharmony_ci void main() 83e5c31af7Sopenharmony_ci { 84e5c31af7Sopenharmony_ci out0 = func(in0); 85e5c31af7Sopenharmony_ci ${OUTPUT} 86e5c31af7Sopenharmony_ci } 87e5c31af7Sopenharmony_ci "" 88e5c31af7Sopenharmony_ci end 89e5c31af7Sopenharmony_ci 90e5c31af7Sopenharmony_ci case float_vec4 91e5c31af7Sopenharmony_ci version 310 es 92e5c31af7Sopenharmony_ci values 93e5c31af7Sopenharmony_ci { 94e5c31af7Sopenharmony_ci input vec4 in0 = [ vec4(0.0, 1.0, -2.0, 0.5) | vec4(2.0, 2.5, 4.0, -7.0) ]; 95e5c31af7Sopenharmony_ci output float out0 = [ 0.5 | -1.5 ]; 96e5c31af7Sopenharmony_ci } 97e5c31af7Sopenharmony_ci 98e5c31af7Sopenharmony_ci both "" 99e5c31af7Sopenharmony_ci #version 310 es 100e5c31af7Sopenharmony_ci precision highp float; 101e5c31af7Sopenharmony_ci ${DECLARATIONS} 102e5c31af7Sopenharmony_ci 103e5c31af7Sopenharmony_ci float func (vec4 a) 104e5c31af7Sopenharmony_ci { 105e5c31af7Sopenharmony_ci return -(a.x + a.y + a.z + a.w); 106e5c31af7Sopenharmony_ci } 107e5c31af7Sopenharmony_ci 108e5c31af7Sopenharmony_ci void main() 109e5c31af7Sopenharmony_ci { 110e5c31af7Sopenharmony_ci out0 = func(in0); 111e5c31af7Sopenharmony_ci ${OUTPUT} 112e5c31af7Sopenharmony_ci } 113e5c31af7Sopenharmony_ci "" 114e5c31af7Sopenharmony_ci end 115e5c31af7Sopenharmony_ci 116e5c31af7Sopenharmony_ci case float_mat2 117e5c31af7Sopenharmony_ci version 310 es 118e5c31af7Sopenharmony_ci values 119e5c31af7Sopenharmony_ci { 120e5c31af7Sopenharmony_ci input mat2 in0 = [ mat2(0.0, 1.0, -2.0, 0.5) | mat2(2.0, 2.5, 4.0, -7.0) ]; 121e5c31af7Sopenharmony_ci output float out0 = [ 0.5 | -1.5 ]; 122e5c31af7Sopenharmony_ci } 123e5c31af7Sopenharmony_ci 124e5c31af7Sopenharmony_ci both "" 125e5c31af7Sopenharmony_ci #version 310 es 126e5c31af7Sopenharmony_ci precision highp float; 127e5c31af7Sopenharmony_ci ${DECLARATIONS} 128e5c31af7Sopenharmony_ci 129e5c31af7Sopenharmony_ci float func (mat2 a) 130e5c31af7Sopenharmony_ci { 131e5c31af7Sopenharmony_ci return -(a[0][0] + a[0][1] + a[1][0] + a[1][1]); 132e5c31af7Sopenharmony_ci } 133e5c31af7Sopenharmony_ci 134e5c31af7Sopenharmony_ci void main() 135e5c31af7Sopenharmony_ci { 136e5c31af7Sopenharmony_ci out0 = func(in0); 137e5c31af7Sopenharmony_ci ${OUTPUT} 138e5c31af7Sopenharmony_ci } 139e5c31af7Sopenharmony_ci "" 140e5c31af7Sopenharmony_ci end 141e5c31af7Sopenharmony_ci 142e5c31af7Sopenharmony_ci case float_mat3 143e5c31af7Sopenharmony_ci version 310 es 144e5c31af7Sopenharmony_ci values 145e5c31af7Sopenharmony_ci { 146e5c31af7Sopenharmony_ci input mat3 in0 = [ mat3(0.0, 1.0, -2.0, 0.5, 1.0, -1.0, 2.0, 4.0, -1.0) | mat3(2.0, 2.5, 4.0, -7.0, 2.5, 3.0, 0.5, -3.5, 1.0) ]; 147e5c31af7Sopenharmony_ci output float out0 = [ -4.5 | -5.0 ]; 148e5c31af7Sopenharmony_ci } 149e5c31af7Sopenharmony_ci 150e5c31af7Sopenharmony_ci both "" 151e5c31af7Sopenharmony_ci #version 310 es 152e5c31af7Sopenharmony_ci precision highp float; 153e5c31af7Sopenharmony_ci ${DECLARATIONS} 154e5c31af7Sopenharmony_ci 155e5c31af7Sopenharmony_ci float func (mat3 a) 156e5c31af7Sopenharmony_ci { 157e5c31af7Sopenharmony_ci return -(a[0][0] + a[0][1] + a[0][2] + a[1][0] + a[1][1] + a[1][2] + a[2][0] + a[2][1] + a[2][2]); 158e5c31af7Sopenharmony_ci } 159e5c31af7Sopenharmony_ci 160e5c31af7Sopenharmony_ci void main() 161e5c31af7Sopenharmony_ci { 162e5c31af7Sopenharmony_ci out0 = func(in0); 163e5c31af7Sopenharmony_ci ${OUTPUT} 164e5c31af7Sopenharmony_ci } 165e5c31af7Sopenharmony_ci "" 166e5c31af7Sopenharmony_ci end 167e5c31af7Sopenharmony_ci 168e5c31af7Sopenharmony_ci case float_mat4 169e5c31af7Sopenharmony_ci version 310 es 170e5c31af7Sopenharmony_ci values 171e5c31af7Sopenharmony_ci { 172e5c31af7Sopenharmony_ci input mat4 in0 = [ mat4(0.0, 1.0, -2.0, 0.5, 1.0, -1.0, 2.0, 4.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -2.0, -2.0) | mat4(2.0, 2.5, 4.0, -7.0, 2.5, 3.0, 0.5, -3.5, 1.0, 0.0, 2.0, -1.0, 1.0, 0.0, -1.0, 3.0) ]; 173e5c31af7Sopenharmony_ci output float out0 = [ -5.5 | -9.0 ]; 174e5c31af7Sopenharmony_ci } 175e5c31af7Sopenharmony_ci 176e5c31af7Sopenharmony_ci both "" 177e5c31af7Sopenharmony_ci #version 310 es 178e5c31af7Sopenharmony_ci precision highp float; 179e5c31af7Sopenharmony_ci ${DECLARATIONS} 180e5c31af7Sopenharmony_ci 181e5c31af7Sopenharmony_ci float func (mat4 a) 182e5c31af7Sopenharmony_ci { 183e5c31af7Sopenharmony_ci return -(a[0][0] + a[0][1] + a[0][2] + a[0][3] + a[1][0] + a[1][1] + a[1][2] + a[1][3] + a[2][0] + a[2][1] + a[2][2] + a[2][3] + a[3][0] + a[3][1] + a[3][2] + a[3][3]); 184e5c31af7Sopenharmony_ci } 185e5c31af7Sopenharmony_ci 186e5c31af7Sopenharmony_ci void main() 187e5c31af7Sopenharmony_ci { 188e5c31af7Sopenharmony_ci out0 = func(in0); 189e5c31af7Sopenharmony_ci ${OUTPUT} 190e5c31af7Sopenharmony_ci } 191e5c31af7Sopenharmony_ci "" 192e5c31af7Sopenharmony_ci end 193e5c31af7Sopenharmony_ci 194e5c31af7Sopenharmony_ci case int_int 195e5c31af7Sopenharmony_ci version 310 es 196e5c31af7Sopenharmony_ci values 197e5c31af7Sopenharmony_ci { 198e5c31af7Sopenharmony_ci input int in0 = [ -1 | 0 | 1 | 4 ]; 199e5c31af7Sopenharmony_ci output int out0 = [ 1 | 0 | -1 | -4 ]; 200e5c31af7Sopenharmony_ci } 201e5c31af7Sopenharmony_ci 202e5c31af7Sopenharmony_ci both "" 203e5c31af7Sopenharmony_ci #version 310 es 204e5c31af7Sopenharmony_ci precision highp float; 205e5c31af7Sopenharmony_ci precision highp int; 206e5c31af7Sopenharmony_ci ${DECLARATIONS} 207e5c31af7Sopenharmony_ci 208e5c31af7Sopenharmony_ci int func (int a) 209e5c31af7Sopenharmony_ci { 210e5c31af7Sopenharmony_ci return -a; 211e5c31af7Sopenharmony_ci } 212e5c31af7Sopenharmony_ci 213e5c31af7Sopenharmony_ci void main() 214e5c31af7Sopenharmony_ci { 215e5c31af7Sopenharmony_ci ${SETUP} 216e5c31af7Sopenharmony_ci out0 = func(in0); 217e5c31af7Sopenharmony_ci ${OUTPUT} 218e5c31af7Sopenharmony_ci } 219e5c31af7Sopenharmony_ci "" 220e5c31af7Sopenharmony_ci end 221e5c31af7Sopenharmony_ci 222e5c31af7Sopenharmony_ci case int_ivec2 223e5c31af7Sopenharmony_ci version 310 es 224e5c31af7Sopenharmony_ci values 225e5c31af7Sopenharmony_ci { 226e5c31af7Sopenharmony_ci input ivec2 in0 = [ ivec2(-1, 0) | ivec2(1, 4) ]; 227e5c31af7Sopenharmony_ci output int out0 = [ 1 | -5 ]; 228e5c31af7Sopenharmony_ci } 229e5c31af7Sopenharmony_ci 230e5c31af7Sopenharmony_ci both "" 231e5c31af7Sopenharmony_ci #version 310 es 232e5c31af7Sopenharmony_ci precision highp float; 233e5c31af7Sopenharmony_ci precision highp int; 234e5c31af7Sopenharmony_ci ${DECLARATIONS} 235e5c31af7Sopenharmony_ci 236e5c31af7Sopenharmony_ci int func (ivec2 a) 237e5c31af7Sopenharmony_ci { 238e5c31af7Sopenharmony_ci return -(a.x + a.y); 239e5c31af7Sopenharmony_ci } 240e5c31af7Sopenharmony_ci 241e5c31af7Sopenharmony_ci void main() 242e5c31af7Sopenharmony_ci { 243e5c31af7Sopenharmony_ci ${SETUP} 244e5c31af7Sopenharmony_ci out0 = func(in0); 245e5c31af7Sopenharmony_ci ${OUTPUT} 246e5c31af7Sopenharmony_ci } 247e5c31af7Sopenharmony_ci "" 248e5c31af7Sopenharmony_ci end 249e5c31af7Sopenharmony_ci 250e5c31af7Sopenharmony_ci case int_ivec3 251e5c31af7Sopenharmony_ci version 310 es 252e5c31af7Sopenharmony_ci values 253e5c31af7Sopenharmony_ci { 254e5c31af7Sopenharmony_ci input ivec3 in0 = [ ivec3(-1, 0, 2) | ivec3(1, 4, -8) ]; 255e5c31af7Sopenharmony_ci output int out0 = [ -1 | 3 ]; 256e5c31af7Sopenharmony_ci } 257e5c31af7Sopenharmony_ci 258e5c31af7Sopenharmony_ci both "" 259e5c31af7Sopenharmony_ci #version 310 es 260e5c31af7Sopenharmony_ci precision highp float; 261e5c31af7Sopenharmony_ci precision highp int; 262e5c31af7Sopenharmony_ci ${DECLARATIONS} 263e5c31af7Sopenharmony_ci 264e5c31af7Sopenharmony_ci int func (ivec3 a) 265e5c31af7Sopenharmony_ci { 266e5c31af7Sopenharmony_ci return -(a.x + a.y + a.z); 267e5c31af7Sopenharmony_ci } 268e5c31af7Sopenharmony_ci 269e5c31af7Sopenharmony_ci void main() 270e5c31af7Sopenharmony_ci { 271e5c31af7Sopenharmony_ci ${SETUP} 272e5c31af7Sopenharmony_ci out0 = func(in0); 273e5c31af7Sopenharmony_ci ${OUTPUT} 274e5c31af7Sopenharmony_ci } 275e5c31af7Sopenharmony_ci "" 276e5c31af7Sopenharmony_ci end 277e5c31af7Sopenharmony_ci 278e5c31af7Sopenharmony_ci case int_ivec4 279e5c31af7Sopenharmony_ci version 310 es 280e5c31af7Sopenharmony_ci values 281e5c31af7Sopenharmony_ci { 282e5c31af7Sopenharmony_ci input ivec4 in0 = [ ivec4(-1, 0, 2, 2) | ivec4(1, 4, -8, 2) ]; 283e5c31af7Sopenharmony_ci output int out0 = [ -3 | 1 ]; 284e5c31af7Sopenharmony_ci } 285e5c31af7Sopenharmony_ci 286e5c31af7Sopenharmony_ci both "" 287e5c31af7Sopenharmony_ci #version 310 es 288e5c31af7Sopenharmony_ci precision highp float; 289e5c31af7Sopenharmony_ci precision highp int; 290e5c31af7Sopenharmony_ci ${DECLARATIONS} 291e5c31af7Sopenharmony_ci 292e5c31af7Sopenharmony_ci int func (ivec4 a) 293e5c31af7Sopenharmony_ci { 294e5c31af7Sopenharmony_ci return -(a.x + a.y + a.z + a.w); 295e5c31af7Sopenharmony_ci } 296e5c31af7Sopenharmony_ci 297e5c31af7Sopenharmony_ci void main() 298e5c31af7Sopenharmony_ci { 299e5c31af7Sopenharmony_ci ${SETUP} 300e5c31af7Sopenharmony_ci out0 = func(in0); 301e5c31af7Sopenharmony_ci ${OUTPUT} 302e5c31af7Sopenharmony_ci } 303e5c31af7Sopenharmony_ci "" 304e5c31af7Sopenharmony_ci end 305e5c31af7Sopenharmony_ci 306e5c31af7Sopenharmony_ci case uint_uint 307e5c31af7Sopenharmony_ci version 310 es 308e5c31af7Sopenharmony_ci values 309e5c31af7Sopenharmony_ci { 310e5c31af7Sopenharmony_ci input uint in0 = [ 1 | 0 | 2 | 4 ]; 311e5c31af7Sopenharmony_ci output uint out0 = [ 1 | 0 | 4 | 16 ]; 312e5c31af7Sopenharmony_ci } 313e5c31af7Sopenharmony_ci 314e5c31af7Sopenharmony_ci both "" 315e5c31af7Sopenharmony_ci #version 310 es 316e5c31af7Sopenharmony_ci precision highp float; 317e5c31af7Sopenharmony_ci precision highp int; 318e5c31af7Sopenharmony_ci ${DECLARATIONS} 319e5c31af7Sopenharmony_ci 320e5c31af7Sopenharmony_ci uint func (uint a) 321e5c31af7Sopenharmony_ci { 322e5c31af7Sopenharmony_ci return a*a; 323e5c31af7Sopenharmony_ci } 324e5c31af7Sopenharmony_ci 325e5c31af7Sopenharmony_ci void main() 326e5c31af7Sopenharmony_ci { 327e5c31af7Sopenharmony_ci ${SETUP} 328e5c31af7Sopenharmony_ci out0 = func(in0); 329e5c31af7Sopenharmony_ci ${OUTPUT} 330e5c31af7Sopenharmony_ci } 331e5c31af7Sopenharmony_ci "" 332e5c31af7Sopenharmony_ci end 333e5c31af7Sopenharmony_ci 334e5c31af7Sopenharmony_ci case uint_uvec2 335e5c31af7Sopenharmony_ci version 310 es 336e5c31af7Sopenharmony_ci values 337e5c31af7Sopenharmony_ci { 338e5c31af7Sopenharmony_ci input uvec2 in0 = [ uvec2(1, 0) | uvec2(2, 4) ]; 339e5c31af7Sopenharmony_ci output uint out0 = [ 1 | 6 ]; 340e5c31af7Sopenharmony_ci } 341e5c31af7Sopenharmony_ci 342e5c31af7Sopenharmony_ci both "" 343e5c31af7Sopenharmony_ci #version 310 es 344e5c31af7Sopenharmony_ci precision highp float; 345e5c31af7Sopenharmony_ci precision highp int; 346e5c31af7Sopenharmony_ci ${DECLARATIONS} 347e5c31af7Sopenharmony_ci 348e5c31af7Sopenharmony_ci uint func (uvec2 a) 349e5c31af7Sopenharmony_ci { 350e5c31af7Sopenharmony_ci return (a.x + a.y); 351e5c31af7Sopenharmony_ci } 352e5c31af7Sopenharmony_ci 353e5c31af7Sopenharmony_ci void main() 354e5c31af7Sopenharmony_ci { 355e5c31af7Sopenharmony_ci ${SETUP} 356e5c31af7Sopenharmony_ci out0 = func(in0); 357e5c31af7Sopenharmony_ci ${OUTPUT} 358e5c31af7Sopenharmony_ci } 359e5c31af7Sopenharmony_ci "" 360e5c31af7Sopenharmony_ci end 361e5c31af7Sopenharmony_ci 362e5c31af7Sopenharmony_ci case uint_uvec3 363e5c31af7Sopenharmony_ci version 310 es 364e5c31af7Sopenharmony_ci values 365e5c31af7Sopenharmony_ci { 366e5c31af7Sopenharmony_ci input uvec3 in0 = [ uvec3(1, 0, 2) | uvec3(1, 4, 8) ]; 367e5c31af7Sopenharmony_ci output uint out0 = [ 3 | 13 ]; 368e5c31af7Sopenharmony_ci } 369e5c31af7Sopenharmony_ci 370e5c31af7Sopenharmony_ci both "" 371e5c31af7Sopenharmony_ci #version 310 es 372e5c31af7Sopenharmony_ci precision highp float; 373e5c31af7Sopenharmony_ci precision highp int; 374e5c31af7Sopenharmony_ci ${DECLARATIONS} 375e5c31af7Sopenharmony_ci 376e5c31af7Sopenharmony_ci uint func (uvec3 a) 377e5c31af7Sopenharmony_ci { 378e5c31af7Sopenharmony_ci return (a.x + a.y + a.z); 379e5c31af7Sopenharmony_ci } 380e5c31af7Sopenharmony_ci 381e5c31af7Sopenharmony_ci void main() 382e5c31af7Sopenharmony_ci { 383e5c31af7Sopenharmony_ci ${SETUP} 384e5c31af7Sopenharmony_ci out0 = func(in0); 385e5c31af7Sopenharmony_ci ${OUTPUT} 386e5c31af7Sopenharmony_ci } 387e5c31af7Sopenharmony_ci "" 388e5c31af7Sopenharmony_ci end 389e5c31af7Sopenharmony_ci 390e5c31af7Sopenharmony_ci case uint_uvec4 391e5c31af7Sopenharmony_ci version 310 es 392e5c31af7Sopenharmony_ci values 393e5c31af7Sopenharmony_ci { 394e5c31af7Sopenharmony_ci input uvec4 in0 = [ uvec4(1, 0, 2, 2) | uvec4(1, 4, 8, 2) ]; 395e5c31af7Sopenharmony_ci output uint out0 = [ 5 | 15 ]; 396e5c31af7Sopenharmony_ci } 397e5c31af7Sopenharmony_ci 398e5c31af7Sopenharmony_ci both "" 399e5c31af7Sopenharmony_ci #version 310 es 400e5c31af7Sopenharmony_ci precision highp float; 401e5c31af7Sopenharmony_ci precision highp int; 402e5c31af7Sopenharmony_ci ${DECLARATIONS} 403e5c31af7Sopenharmony_ci 404e5c31af7Sopenharmony_ci uint func (uvec4 a) 405e5c31af7Sopenharmony_ci { 406e5c31af7Sopenharmony_ci return (a.x + a.y + a.z + a.w); 407e5c31af7Sopenharmony_ci } 408e5c31af7Sopenharmony_ci 409e5c31af7Sopenharmony_ci void main() 410e5c31af7Sopenharmony_ci { 411e5c31af7Sopenharmony_ci ${SETUP} 412e5c31af7Sopenharmony_ci out0 = func(in0); 413e5c31af7Sopenharmony_ci ${OUTPUT} 414e5c31af7Sopenharmony_ci } 415e5c31af7Sopenharmony_ci "" 416e5c31af7Sopenharmony_ci end 417e5c31af7Sopenharmony_ci 418e5c31af7Sopenharmony_ci case bool_bool 419e5c31af7Sopenharmony_ci version 310 es 420e5c31af7Sopenharmony_ci values 421e5c31af7Sopenharmony_ci { 422e5c31af7Sopenharmony_ci input bool in0 = [ true | false ]; 423e5c31af7Sopenharmony_ci output bool out0 = [ false | true ]; 424e5c31af7Sopenharmony_ci } 425e5c31af7Sopenharmony_ci 426e5c31af7Sopenharmony_ci both "" 427e5c31af7Sopenharmony_ci #version 310 es 428e5c31af7Sopenharmony_ci precision highp float; 429e5c31af7Sopenharmony_ci precision highp int; 430e5c31af7Sopenharmony_ci ${DECLARATIONS} 431e5c31af7Sopenharmony_ci 432e5c31af7Sopenharmony_ci bool func (bool a) 433e5c31af7Sopenharmony_ci { 434e5c31af7Sopenharmony_ci return !a; 435e5c31af7Sopenharmony_ci } 436e5c31af7Sopenharmony_ci 437e5c31af7Sopenharmony_ci void main() 438e5c31af7Sopenharmony_ci { 439e5c31af7Sopenharmony_ci ${SETUP} 440e5c31af7Sopenharmony_ci out0 = func(in0); 441e5c31af7Sopenharmony_ci ${OUTPUT} 442e5c31af7Sopenharmony_ci } 443e5c31af7Sopenharmony_ci "" 444e5c31af7Sopenharmony_ci end 445e5c31af7Sopenharmony_ci 446e5c31af7Sopenharmony_ci case bool_bvec2 447e5c31af7Sopenharmony_ci version 310 es 448e5c31af7Sopenharmony_ci values 449e5c31af7Sopenharmony_ci { 450e5c31af7Sopenharmony_ci input bvec2 in0 = [ bvec2(true, true) | bvec2(false, true) ]; 451e5c31af7Sopenharmony_ci output bool out0 = [ false | true ]; 452e5c31af7Sopenharmony_ci } 453e5c31af7Sopenharmony_ci 454e5c31af7Sopenharmony_ci both "" 455e5c31af7Sopenharmony_ci #version 310 es 456e5c31af7Sopenharmony_ci precision highp float; 457e5c31af7Sopenharmony_ci precision highp int; 458e5c31af7Sopenharmony_ci ${DECLARATIONS} 459e5c31af7Sopenharmony_ci 460e5c31af7Sopenharmony_ci bool func (bvec2 a) 461e5c31af7Sopenharmony_ci { 462e5c31af7Sopenharmony_ci return !(a.x == a.y); 463e5c31af7Sopenharmony_ci } 464e5c31af7Sopenharmony_ci 465e5c31af7Sopenharmony_ci void main() 466e5c31af7Sopenharmony_ci { 467e5c31af7Sopenharmony_ci ${SETUP} 468e5c31af7Sopenharmony_ci out0 = func(in0); 469e5c31af7Sopenharmony_ci ${OUTPUT} 470e5c31af7Sopenharmony_ci } 471e5c31af7Sopenharmony_ci "" 472e5c31af7Sopenharmony_ci end 473e5c31af7Sopenharmony_ci 474e5c31af7Sopenharmony_ci case bool_bvec3 475e5c31af7Sopenharmony_ci version 310 es 476e5c31af7Sopenharmony_ci values 477e5c31af7Sopenharmony_ci { 478e5c31af7Sopenharmony_ci input bvec3 in0 = [ bvec3(true, true, false) | bvec3(true, false, false) ]; 479e5c31af7Sopenharmony_ci output bool out0 = [ false | true ]; 480e5c31af7Sopenharmony_ci } 481e5c31af7Sopenharmony_ci 482e5c31af7Sopenharmony_ci both "" 483e5c31af7Sopenharmony_ci #version 310 es 484e5c31af7Sopenharmony_ci precision highp float; 485e5c31af7Sopenharmony_ci precision highp int; 486e5c31af7Sopenharmony_ci ${DECLARATIONS} 487e5c31af7Sopenharmony_ci 488e5c31af7Sopenharmony_ci bool func (bvec3 a) 489e5c31af7Sopenharmony_ci { 490e5c31af7Sopenharmony_ci return (a.x == a.y) == a.z; 491e5c31af7Sopenharmony_ci } 492e5c31af7Sopenharmony_ci 493e5c31af7Sopenharmony_ci void main() 494e5c31af7Sopenharmony_ci { 495e5c31af7Sopenharmony_ci ${SETUP} 496e5c31af7Sopenharmony_ci out0 = func(in0); 497e5c31af7Sopenharmony_ci ${OUTPUT} 498e5c31af7Sopenharmony_ci } 499e5c31af7Sopenharmony_ci "" 500e5c31af7Sopenharmony_ci end 501e5c31af7Sopenharmony_ci 502e5c31af7Sopenharmony_ci case bool_bvec4 503e5c31af7Sopenharmony_ci version 310 es 504e5c31af7Sopenharmony_ci values 505e5c31af7Sopenharmony_ci { 506e5c31af7Sopenharmony_ci input bvec4 in0 = [ bvec4(true, true, true, false) | bvec4(false, false, true, true) | bvec4(true, false, false, true) ]; 507e5c31af7Sopenharmony_ci output bool out0 = [ false | true | true ]; 508e5c31af7Sopenharmony_ci } 509e5c31af7Sopenharmony_ci 510e5c31af7Sopenharmony_ci both "" 511e5c31af7Sopenharmony_ci #version 310 es 512e5c31af7Sopenharmony_ci precision highp float; 513e5c31af7Sopenharmony_ci precision highp int; 514e5c31af7Sopenharmony_ci ${DECLARATIONS} 515e5c31af7Sopenharmony_ci 516e5c31af7Sopenharmony_ci bool func (bvec4 a) 517e5c31af7Sopenharmony_ci { 518e5c31af7Sopenharmony_ci return ((a.x == a.y) == (a.z == a.w)); 519e5c31af7Sopenharmony_ci } 520e5c31af7Sopenharmony_ci 521e5c31af7Sopenharmony_ci void main() 522e5c31af7Sopenharmony_ci { 523e5c31af7Sopenharmony_ci ${SETUP} 524e5c31af7Sopenharmony_ci out0 = func(in0); 525e5c31af7Sopenharmony_ci ${OUTPUT} 526e5c31af7Sopenharmony_ci } 527e5c31af7Sopenharmony_ci "" 528e5c31af7Sopenharmony_ci end 529e5c31af7Sopenharmony_ci 530e5c31af7Sopenharmony_ci case mat2 531e5c31af7Sopenharmony_ci version 310 es 532e5c31af7Sopenharmony_ci values 533e5c31af7Sopenharmony_ci { 534e5c31af7Sopenharmony_ci input mat2 in0 = [ mat2(-2.0, 0.5, -1.0, 1.0) | mat2(1.0, -3.5, -3.5, 2.5) | mat2(-2.0, -2.0, 3.5, 0.0) ]; 535e5c31af7Sopenharmony_ci output mat2 out0 = [ mat2(4.0, -1.0, 2.0, -2.0) | mat2(-2.0, 7.0, 7.0, -5.0) | mat2(4.0, 4.0, -7.0, -0.0) ]; 536e5c31af7Sopenharmony_ci } 537e5c31af7Sopenharmony_ci 538e5c31af7Sopenharmony_ci both "" 539e5c31af7Sopenharmony_ci #version 310 es 540e5c31af7Sopenharmony_ci precision highp float; 541e5c31af7Sopenharmony_ci ${DECLARATIONS} 542e5c31af7Sopenharmony_ci 543e5c31af7Sopenharmony_ci mat2 func (mat2 a) 544e5c31af7Sopenharmony_ci { 545e5c31af7Sopenharmony_ci return -2.0*a; 546e5c31af7Sopenharmony_ci } 547e5c31af7Sopenharmony_ci 548e5c31af7Sopenharmony_ci void main() 549e5c31af7Sopenharmony_ci { 550e5c31af7Sopenharmony_ci ${SETUP} 551e5c31af7Sopenharmony_ci out0 = func(in0); 552e5c31af7Sopenharmony_ci ${OUTPUT} 553e5c31af7Sopenharmony_ci } 554e5c31af7Sopenharmony_ci "" 555e5c31af7Sopenharmony_ci end 556e5c31af7Sopenharmony_ci 557e5c31af7Sopenharmony_ci 558e5c31af7Sopenharmony_ci case mat2x3 559e5c31af7Sopenharmony_ci version 310 es 560e5c31af7Sopenharmony_ci values 561e5c31af7Sopenharmony_ci { 562e5c31af7Sopenharmony_ci input mat2x3 in0 = [ mat2x3(2.5, 0.0, 1.0, -2.5, 1.0, 3.0) | mat2x3(0.0, 2.0, 1.5, -3.5, 2.0, 0.5) | mat2x3(-1.5, -3.5, 2.5, 0.0, 1.5, 3.0) ]; 563e5c31af7Sopenharmony_ci output mat2x3 out0 = [ mat2x3(-5.0, -0.0, -2.0, 5.0, -2.0, -6.0) | mat2x3(-0.0, -4.0, -3.0, 7.0, -4.0, -1.0) | mat2x3(3.0, 7.0, -5.0, -0.0, -3.0, -6.0) ]; 564e5c31af7Sopenharmony_ci } 565e5c31af7Sopenharmony_ci 566e5c31af7Sopenharmony_ci both "" 567e5c31af7Sopenharmony_ci #version 310 es 568e5c31af7Sopenharmony_ci precision highp float; 569e5c31af7Sopenharmony_ci ${DECLARATIONS} 570e5c31af7Sopenharmony_ci 571e5c31af7Sopenharmony_ci mat2x3 func (mat2x3 a) 572e5c31af7Sopenharmony_ci { 573e5c31af7Sopenharmony_ci return -2.0*a; 574e5c31af7Sopenharmony_ci } 575e5c31af7Sopenharmony_ci 576e5c31af7Sopenharmony_ci void main() 577e5c31af7Sopenharmony_ci { 578e5c31af7Sopenharmony_ci ${SETUP} 579e5c31af7Sopenharmony_ci out0 = func(in0); 580e5c31af7Sopenharmony_ci ${OUTPUT} 581e5c31af7Sopenharmony_ci } 582e5c31af7Sopenharmony_ci "" 583e5c31af7Sopenharmony_ci end 584e5c31af7Sopenharmony_ci 585e5c31af7Sopenharmony_ci 586e5c31af7Sopenharmony_ci case mat2x4 587e5c31af7Sopenharmony_ci version 310 es 588e5c31af7Sopenharmony_ci values 589e5c31af7Sopenharmony_ci { 590e5c31af7Sopenharmony_ci input mat2x4 in0 = [ mat2x4(1.5, 3.0, -1.0, 2.5, -0.5, 3.5, 3.0, -3.0) | mat2x4(-2.5, -2.0, 3.5, -0.5, 1.0, -1.5, 0.0, -1.0) | mat2x4(-1.0, 0.5, 0.5, 3.0, 1.5, 3.0, 2.5, 3.5) ]; 591e5c31af7Sopenharmony_ci output mat2x4 out0 = [ mat2x4(-3.0, -6.0, 2.0, -5.0, 1.0, -7.0, -6.0, 6.0) | mat2x4(5.0, 4.0, -7.0, 1.0, -2.0, 3.0, -0.0, 2.0) | mat2x4(2.0, -1.0, -1.0, -6.0, -3.0, -6.0, -5.0, -7.0) ]; 592e5c31af7Sopenharmony_ci } 593e5c31af7Sopenharmony_ci 594e5c31af7Sopenharmony_ci both "" 595e5c31af7Sopenharmony_ci #version 310 es 596e5c31af7Sopenharmony_ci precision highp float; 597e5c31af7Sopenharmony_ci ${DECLARATIONS} 598e5c31af7Sopenharmony_ci 599e5c31af7Sopenharmony_ci mat2x4 func (mat2x4 a) 600e5c31af7Sopenharmony_ci { 601e5c31af7Sopenharmony_ci return -2.0*a; 602e5c31af7Sopenharmony_ci } 603e5c31af7Sopenharmony_ci 604e5c31af7Sopenharmony_ci void main() 605e5c31af7Sopenharmony_ci { 606e5c31af7Sopenharmony_ci ${SETUP} 607e5c31af7Sopenharmony_ci out0 = func(in0); 608e5c31af7Sopenharmony_ci ${OUTPUT} 609e5c31af7Sopenharmony_ci } 610e5c31af7Sopenharmony_ci "" 611e5c31af7Sopenharmony_ci end 612e5c31af7Sopenharmony_ci 613e5c31af7Sopenharmony_ci 614e5c31af7Sopenharmony_ci case mat3x2 615e5c31af7Sopenharmony_ci version 310 es 616e5c31af7Sopenharmony_ci values 617e5c31af7Sopenharmony_ci { 618e5c31af7Sopenharmony_ci input mat3x2 in0 = [ mat3x2(1.5, -2.5, 2.5, 3.5, 3.0, 0.5) | mat3x2(1.5, -2.0, 2.5, 0.5, -1.5, -3.5) | mat3x2(2.5, 3.5, -3.0, 2.5, -0.5, -2.5) ]; 619e5c31af7Sopenharmony_ci output mat3x2 out0 = [ mat3x2(-3.0, 5.0, -5.0, -7.0, -6.0, -1.0) | mat3x2(-3.0, 4.0, -5.0, -1.0, 3.0, 7.0) | mat3x2(-5.0, -7.0, 6.0, -5.0, 1.0, 5.0) ]; 620e5c31af7Sopenharmony_ci } 621e5c31af7Sopenharmony_ci 622e5c31af7Sopenharmony_ci both "" 623e5c31af7Sopenharmony_ci #version 310 es 624e5c31af7Sopenharmony_ci precision highp float; 625e5c31af7Sopenharmony_ci ${DECLARATIONS} 626e5c31af7Sopenharmony_ci 627e5c31af7Sopenharmony_ci mat3x2 func (mat3x2 a) 628e5c31af7Sopenharmony_ci { 629e5c31af7Sopenharmony_ci return -2.0*a; 630e5c31af7Sopenharmony_ci } 631e5c31af7Sopenharmony_ci 632e5c31af7Sopenharmony_ci void main() 633e5c31af7Sopenharmony_ci { 634e5c31af7Sopenharmony_ci ${SETUP} 635e5c31af7Sopenharmony_ci out0 = func(in0); 636e5c31af7Sopenharmony_ci ${OUTPUT} 637e5c31af7Sopenharmony_ci } 638e5c31af7Sopenharmony_ci "" 639e5c31af7Sopenharmony_ci end 640e5c31af7Sopenharmony_ci 641e5c31af7Sopenharmony_ci 642e5c31af7Sopenharmony_ci case mat3 643e5c31af7Sopenharmony_ci version 310 es 644e5c31af7Sopenharmony_ci values 645e5c31af7Sopenharmony_ci { 646e5c31af7Sopenharmony_ci input mat3 in0 = [ mat3(-1.5, 2.0, 3.0, -3.5, 1.0, -3.5, 1.5, -1.5, 3.0) | mat3(3.5, 0.0, 3.5, -1.5, -3.0, 0.5, -3.5, -2.5, -0.5) | mat3(1.0, -2.5, -3.5, 3.0, -1.5, 3.5, 3.0, -1.0, -0.5) ]; 647e5c31af7Sopenharmony_ci output mat3 out0 = [ mat3(3.0, -4.0, -6.0, 7.0, -2.0, 7.0, -3.0, 3.0, -6.0) | mat3(-7.0, -0.0, -7.0, 3.0, 6.0, -1.0, 7.0, 5.0, 1.0) | mat3(-2.0, 5.0, 7.0, -6.0, 3.0, -7.0, -6.0, 2.0, 1.0) ]; 648e5c31af7Sopenharmony_ci } 649e5c31af7Sopenharmony_ci 650e5c31af7Sopenharmony_ci both "" 651e5c31af7Sopenharmony_ci #version 310 es 652e5c31af7Sopenharmony_ci precision highp float; 653e5c31af7Sopenharmony_ci ${DECLARATIONS} 654e5c31af7Sopenharmony_ci 655e5c31af7Sopenharmony_ci mat3 func (mat3 a) 656e5c31af7Sopenharmony_ci { 657e5c31af7Sopenharmony_ci return -2.0*a; 658e5c31af7Sopenharmony_ci } 659e5c31af7Sopenharmony_ci 660e5c31af7Sopenharmony_ci void main() 661e5c31af7Sopenharmony_ci { 662e5c31af7Sopenharmony_ci ${SETUP} 663e5c31af7Sopenharmony_ci out0 = func(in0); 664e5c31af7Sopenharmony_ci ${OUTPUT} 665e5c31af7Sopenharmony_ci } 666e5c31af7Sopenharmony_ci "" 667e5c31af7Sopenharmony_ci end 668e5c31af7Sopenharmony_ci 669e5c31af7Sopenharmony_ci 670e5c31af7Sopenharmony_ci case mat3x4 671e5c31af7Sopenharmony_ci version 310 es 672e5c31af7Sopenharmony_ci values 673e5c31af7Sopenharmony_ci { 674e5c31af7Sopenharmony_ci input mat3x4 in0 = [ mat3x4(0.0, 1.0, 0.5, 0.5, 1.0, 3.5, 0.0, -0.5, 1.5, -2.0, -1.5, 3.5) | mat3x4(0.0, 0.5, -3.5, -0.5, 0.5, -3.5, 1.0, 1.0, -3.5, 1.0, -0.5, 1.5) | mat3x4(-1.0, 1.5, 2.0, -3.5, -3.5, 1.5, 3.5, -2.0, -0.5, 0.5, -1.5, -1.0) ]; 675e5c31af7Sopenharmony_ci output mat3x4 out0 = [ mat3x4(-0.0, -2.0, -1.0, -1.0, -2.0, -7.0, -0.0, 1.0, -3.0, 4.0, 3.0, -7.0) | mat3x4(-0.0, -1.0, 7.0, 1.0, -1.0, 7.0, -2.0, -2.0, 7.0, -2.0, 1.0, -3.0) | mat3x4(2.0, -3.0, -4.0, 7.0, 7.0, -3.0, -7.0, 4.0, 1.0, -1.0, 3.0, 2.0) ]; 676e5c31af7Sopenharmony_ci } 677e5c31af7Sopenharmony_ci 678e5c31af7Sopenharmony_ci both "" 679e5c31af7Sopenharmony_ci #version 310 es 680e5c31af7Sopenharmony_ci precision highp float; 681e5c31af7Sopenharmony_ci ${DECLARATIONS} 682e5c31af7Sopenharmony_ci 683e5c31af7Sopenharmony_ci mat3x4 func (mat3x4 a) 684e5c31af7Sopenharmony_ci { 685e5c31af7Sopenharmony_ci return -2.0*a; 686e5c31af7Sopenharmony_ci } 687e5c31af7Sopenharmony_ci 688e5c31af7Sopenharmony_ci void main() 689e5c31af7Sopenharmony_ci { 690e5c31af7Sopenharmony_ci ${SETUP} 691e5c31af7Sopenharmony_ci out0 = func(in0); 692e5c31af7Sopenharmony_ci ${OUTPUT} 693e5c31af7Sopenharmony_ci } 694e5c31af7Sopenharmony_ci "" 695e5c31af7Sopenharmony_ci end 696e5c31af7Sopenharmony_ci 697e5c31af7Sopenharmony_ci 698e5c31af7Sopenharmony_ci case mat4x2 699e5c31af7Sopenharmony_ci version 310 es 700e5c31af7Sopenharmony_ci values 701e5c31af7Sopenharmony_ci { 702e5c31af7Sopenharmony_ci input mat4x2 in0 = [ mat4x2(-1.5, -1.0, 0.5, -1.5, -1.0, 2.0, -3.5, 0.5) | mat4x2(2.0, -1.5, -2.0, 2.5, -2.0, -2.5, -0.5, 1.5) | mat4x2(-3.0, -1.5, -1.0, 2.5, -0.5, 2.5, -2.5, -1.0) ]; 703e5c31af7Sopenharmony_ci output mat4x2 out0 = [ mat4x2(3.0, 2.0, -1.0, 3.0, 2.0, -4.0, 7.0, -1.0) | mat4x2(-4.0, 3.0, 4.0, -5.0, 4.0, 5.0, 1.0, -3.0) | mat4x2(6.0, 3.0, 2.0, -5.0, 1.0, -5.0, 5.0, 2.0) ]; 704e5c31af7Sopenharmony_ci } 705e5c31af7Sopenharmony_ci 706e5c31af7Sopenharmony_ci both "" 707e5c31af7Sopenharmony_ci #version 310 es 708e5c31af7Sopenharmony_ci precision highp float; 709e5c31af7Sopenharmony_ci ${DECLARATIONS} 710e5c31af7Sopenharmony_ci 711e5c31af7Sopenharmony_ci mat4x2 func (mat4x2 a) 712e5c31af7Sopenharmony_ci { 713e5c31af7Sopenharmony_ci return -2.0*a; 714e5c31af7Sopenharmony_ci } 715e5c31af7Sopenharmony_ci 716e5c31af7Sopenharmony_ci void main() 717e5c31af7Sopenharmony_ci { 718e5c31af7Sopenharmony_ci ${SETUP} 719e5c31af7Sopenharmony_ci out0 = func(in0); 720e5c31af7Sopenharmony_ci ${OUTPUT} 721e5c31af7Sopenharmony_ci } 722e5c31af7Sopenharmony_ci "" 723e5c31af7Sopenharmony_ci end 724e5c31af7Sopenharmony_ci 725e5c31af7Sopenharmony_ci 726e5c31af7Sopenharmony_ci case mat4x3 727e5c31af7Sopenharmony_ci version 310 es 728e5c31af7Sopenharmony_ci values 729e5c31af7Sopenharmony_ci { 730e5c31af7Sopenharmony_ci input mat4x3 in0 = [ mat4x3(1.0, 3.0, -0.5, -2.0, -3.0, 0.0, -2.5, 2.5, 2.5, -2.5, -1.5, 2.5) | mat4x3(1.0, 2.5, -1.0, -3.0, -1.5, 2.0, -1.5, -1.0, -0.5, -0.5, -0.5, 3.0) | mat4x3(-2.5, -3.5, 3.5, 3.0, 3.5, -0.5, 3.5, 3.0, -2.0, 2.0, 2.5, 1.0) ]; 731e5c31af7Sopenharmony_ci output mat4x3 out0 = [ mat4x3(-2.0, -6.0, 1.0, 4.0, 6.0, -0.0, 5.0, -5.0, -5.0, 5.0, 3.0, -5.0) | mat4x3(-2.0, -5.0, 2.0, 6.0, 3.0, -4.0, 3.0, 2.0, 1.0, 1.0, 1.0, -6.0) | mat4x3(5.0, 7.0, -7.0, -6.0, -7.0, 1.0, -7.0, -6.0, 4.0, -4.0, -5.0, -2.0) ]; 732e5c31af7Sopenharmony_ci } 733e5c31af7Sopenharmony_ci 734e5c31af7Sopenharmony_ci both "" 735e5c31af7Sopenharmony_ci #version 310 es 736e5c31af7Sopenharmony_ci precision highp float; 737e5c31af7Sopenharmony_ci ${DECLARATIONS} 738e5c31af7Sopenharmony_ci 739e5c31af7Sopenharmony_ci mat4x3 func (mat4x3 a) 740e5c31af7Sopenharmony_ci { 741e5c31af7Sopenharmony_ci return -2.0*a; 742e5c31af7Sopenharmony_ci } 743e5c31af7Sopenharmony_ci 744e5c31af7Sopenharmony_ci void main() 745e5c31af7Sopenharmony_ci { 746e5c31af7Sopenharmony_ci ${SETUP} 747e5c31af7Sopenharmony_ci out0 = func(in0); 748e5c31af7Sopenharmony_ci ${OUTPUT} 749e5c31af7Sopenharmony_ci } 750e5c31af7Sopenharmony_ci "" 751e5c31af7Sopenharmony_ci end 752e5c31af7Sopenharmony_ci 753e5c31af7Sopenharmony_ci 754e5c31af7Sopenharmony_ci case mat4 755e5c31af7Sopenharmony_ci version 310 es 756e5c31af7Sopenharmony_ci values 757e5c31af7Sopenharmony_ci { 758e5c31af7Sopenharmony_ci input mat4 in0 = [ mat4(0.0, -1.5, -1.0, -2.0, -3.0, 0.5, -1.5, 2.5, -3.5, 3.0, 1.5, 3.0, 3.0, 3.0, 0.5, -3.5) | mat4(2.0, -2.5, -1.5, 1.0, 0.0, -0.5, 3.5, 1.0, -1.0, -2.0, 2.5, 0.0, 2.0, -1.0, -2.5, 0.5) | mat4(2.5, -2.5, 2.0, 3.0, 2.5, 2.5, -3.5, 1.0, 2.5, -3.5, -1.5, -1.5, 0.0, -0.5, 0.0, 2.0) ]; 759e5c31af7Sopenharmony_ci output mat4 out0 = [ mat4(-0.0, 3.0, 2.0, 4.0, 6.0, -1.0, 3.0, -5.0, 7.0, -6.0, -3.0, -6.0, -6.0, -6.0, -1.0, 7.0) | mat4(-4.0, 5.0, 3.0, -2.0, -0.0, 1.0, -7.0, -2.0, 2.0, 4.0, -5.0, -0.0, -4.0, 2.0, 5.0, -1.0) | mat4(-5.0, 5.0, -4.0, -6.0, -5.0, -5.0, 7.0, -2.0, -5.0, 7.0, 3.0, 3.0, -0.0, 1.0, -0.0, -4.0) ]; 760e5c31af7Sopenharmony_ci } 761e5c31af7Sopenharmony_ci 762e5c31af7Sopenharmony_ci both "" 763e5c31af7Sopenharmony_ci #version 310 es 764e5c31af7Sopenharmony_ci precision highp float; 765e5c31af7Sopenharmony_ci ${DECLARATIONS} 766e5c31af7Sopenharmony_ci 767e5c31af7Sopenharmony_ci mat4 func (mat4 a) 768e5c31af7Sopenharmony_ci { 769e5c31af7Sopenharmony_ci return -2.0*a; 770e5c31af7Sopenharmony_ci } 771e5c31af7Sopenharmony_ci 772e5c31af7Sopenharmony_ci void main() 773e5c31af7Sopenharmony_ci { 774e5c31af7Sopenharmony_ci ${SETUP} 775e5c31af7Sopenharmony_ci out0 = func(in0); 776e5c31af7Sopenharmony_ci ${OUTPUT} 777e5c31af7Sopenharmony_ci } 778e5c31af7Sopenharmony_ci "" 779e5c31af7Sopenharmony_ci end 780e5c31af7Sopenharmony_ci 781e5c31af7Sopenharmony_ci case float_struct 782e5c31af7Sopenharmony_ci version 310 es 783e5c31af7Sopenharmony_ci values 784e5c31af7Sopenharmony_ci { 785e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.0, 1.0, -2.0) | vec3(2.0, 2.5, -4.0) ]; 786e5c31af7Sopenharmony_ci output float out0 = [ 1.0 | -0.5 ]; 787e5c31af7Sopenharmony_ci } 788e5c31af7Sopenharmony_ci 789e5c31af7Sopenharmony_ci both "" 790e5c31af7Sopenharmony_ci #version 310 es 791e5c31af7Sopenharmony_ci precision highp float; 792e5c31af7Sopenharmony_ci ${DECLARATIONS} 793e5c31af7Sopenharmony_ci 794e5c31af7Sopenharmony_ci struct Pos { float a, b, c; }; 795e5c31af7Sopenharmony_ci 796e5c31af7Sopenharmony_ci float func (Pos p) 797e5c31af7Sopenharmony_ci { 798e5c31af7Sopenharmony_ci return -(p.a + p.b + p.c); 799e5c31af7Sopenharmony_ci } 800e5c31af7Sopenharmony_ci 801e5c31af7Sopenharmony_ci void main() 802e5c31af7Sopenharmony_ci { 803e5c31af7Sopenharmony_ci Pos p = Pos(in0.x, in0.y, in0.z); 804e5c31af7Sopenharmony_ci out0 = func(p); 805e5c31af7Sopenharmony_ci ${OUTPUT} 806e5c31af7Sopenharmony_ci } 807e5c31af7Sopenharmony_ci "" 808e5c31af7Sopenharmony_ci end 809e5c31af7Sopenharmony_ci 810e5c31af7Sopenharmony_ci case struct_struct 811e5c31af7Sopenharmony_ci version 310 es 812e5c31af7Sopenharmony_ci values 813e5c31af7Sopenharmony_ci { 814e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.0, 1.0, -2.0) | vec3(2.0, 2.5, -4.0) ]; 815e5c31af7Sopenharmony_ci output float out0 = [ 1.0 | -0.5 ]; 816e5c31af7Sopenharmony_ci } 817e5c31af7Sopenharmony_ci 818e5c31af7Sopenharmony_ci both "" 819e5c31af7Sopenharmony_ci #version 310 es 820e5c31af7Sopenharmony_ci precision highp float; 821e5c31af7Sopenharmony_ci ${DECLARATIONS} 822e5c31af7Sopenharmony_ci 823e5c31af7Sopenharmony_ci struct Pos { float a, b, c; }; 824e5c31af7Sopenharmony_ci 825e5c31af7Sopenharmony_ci Pos func (Pos p) 826e5c31af7Sopenharmony_ci { 827e5c31af7Sopenharmony_ci return Pos(-p.a, -p.b, -p.c); 828e5c31af7Sopenharmony_ci } 829e5c31af7Sopenharmony_ci 830e5c31af7Sopenharmony_ci void main() 831e5c31af7Sopenharmony_ci { 832e5c31af7Sopenharmony_ci Pos p = Pos(in0.x, in0.y, in0.z); 833e5c31af7Sopenharmony_ci p = func(p); 834e5c31af7Sopenharmony_ci out0 = p.a + p.b + p.c; 835e5c31af7Sopenharmony_ci ${OUTPUT} 836e5c31af7Sopenharmony_ci } 837e5c31af7Sopenharmony_ci "" 838e5c31af7Sopenharmony_ci end 839e5c31af7Sopenharmony_ci 840e5c31af7Sopenharmony_ci case struct_nested_struct 841e5c31af7Sopenharmony_ci version 310 es 842e5c31af7Sopenharmony_ci values 843e5c31af7Sopenharmony_ci { 844e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(0.0, 1.0, -2.0) | vec3(2.0, 2.5, -4.0) ]; 845e5c31af7Sopenharmony_ci output float out0 = [ 1.0 | -0.5 ]; 846e5c31af7Sopenharmony_ci } 847e5c31af7Sopenharmony_ci 848e5c31af7Sopenharmony_ci both "" 849e5c31af7Sopenharmony_ci #version 310 es 850e5c31af7Sopenharmony_ci precision highp float; 851e5c31af7Sopenharmony_ci ${DECLARATIONS} 852e5c31af7Sopenharmony_ci 853e5c31af7Sopenharmony_ci struct Pos { float a, b, c; }; 854e5c31af7Sopenharmony_ci struct Line { Pos start, end; }; 855e5c31af7Sopenharmony_ci 856e5c31af7Sopenharmony_ci Line func (Pos p) 857e5c31af7Sopenharmony_ci { 858e5c31af7Sopenharmony_ci return Line(p, Pos(-p.a, -p.b, -p.c)); 859e5c31af7Sopenharmony_ci } 860e5c31af7Sopenharmony_ci 861e5c31af7Sopenharmony_ci float sum (Pos p) 862e5c31af7Sopenharmony_ci { 863e5c31af7Sopenharmony_ci return (p.a + p.b + p.c); 864e5c31af7Sopenharmony_ci } 865e5c31af7Sopenharmony_ci 866e5c31af7Sopenharmony_ci void main() 867e5c31af7Sopenharmony_ci { 868e5c31af7Sopenharmony_ci Pos p = Pos(in0.x, in0.y, in0.z); 869e5c31af7Sopenharmony_ci Line line = func(p); 870e5c31af7Sopenharmony_ci out0 = sum(line.start) + (2.0 * sum(line.end)); 871e5c31af7Sopenharmony_ci ${OUTPUT} 872e5c31af7Sopenharmony_ci } 873e5c31af7Sopenharmony_ci "" 874e5c31af7Sopenharmony_ci end 875e5c31af7Sopenharmony_ci 876e5c31af7Sopenharmony_ci 877e5c31af7Sopenharmony_ciend # datatypes 878e5c31af7Sopenharmony_ci 879e5c31af7Sopenharmony_cigroup qualifiers "Function Parameter Qualifiers" 880e5c31af7Sopenharmony_ci 881e5c31af7Sopenharmony_ci case in_float 882e5c31af7Sopenharmony_ci version 310 es 883e5c31af7Sopenharmony_ci values 884e5c31af7Sopenharmony_ci { 885e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 886e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 887e5c31af7Sopenharmony_ci } 888e5c31af7Sopenharmony_ci 889e5c31af7Sopenharmony_ci both "" 890e5c31af7Sopenharmony_ci #version 310 es 891e5c31af7Sopenharmony_ci precision highp float; 892e5c31af7Sopenharmony_ci precision highp int; 893e5c31af7Sopenharmony_ci ${DECLARATIONS} 894e5c31af7Sopenharmony_ci 895e5c31af7Sopenharmony_ci float func (in float a) 896e5c31af7Sopenharmony_ci { 897e5c31af7Sopenharmony_ci a = -a; 898e5c31af7Sopenharmony_ci return 2.0 * a; 899e5c31af7Sopenharmony_ci } 900e5c31af7Sopenharmony_ci 901e5c31af7Sopenharmony_ci void main() 902e5c31af7Sopenharmony_ci { 903e5c31af7Sopenharmony_ci ${SETUP} 904e5c31af7Sopenharmony_ci float f = in0; 905e5c31af7Sopenharmony_ci float g = func(f); 906e5c31af7Sopenharmony_ci out0 = f + g; 907e5c31af7Sopenharmony_ci ${OUTPUT} 908e5c31af7Sopenharmony_ci } 909e5c31af7Sopenharmony_ci "" 910e5c31af7Sopenharmony_ci end 911e5c31af7Sopenharmony_ci 912e5c31af7Sopenharmony_ci case out_float 913e5c31af7Sopenharmony_ci version 310 es 914e5c31af7Sopenharmony_ci values 915e5c31af7Sopenharmony_ci { 916e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 917e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 918e5c31af7Sopenharmony_ci } 919e5c31af7Sopenharmony_ci 920e5c31af7Sopenharmony_ci both "" 921e5c31af7Sopenharmony_ci #version 310 es 922e5c31af7Sopenharmony_ci precision highp float; 923e5c31af7Sopenharmony_ci precision highp int; 924e5c31af7Sopenharmony_ci ${DECLARATIONS} 925e5c31af7Sopenharmony_ci 926e5c31af7Sopenharmony_ci void func (out float a) 927e5c31af7Sopenharmony_ci { 928e5c31af7Sopenharmony_ci a = -1.0; 929e5c31af7Sopenharmony_ci } 930e5c31af7Sopenharmony_ci 931e5c31af7Sopenharmony_ci void main() 932e5c31af7Sopenharmony_ci { 933e5c31af7Sopenharmony_ci ${SETUP} 934e5c31af7Sopenharmony_ci float f = 1.0; 935e5c31af7Sopenharmony_ci func(f); 936e5c31af7Sopenharmony_ci out0 = f * in0; 937e5c31af7Sopenharmony_ci ${OUTPUT} 938e5c31af7Sopenharmony_ci } 939e5c31af7Sopenharmony_ci "" 940e5c31af7Sopenharmony_ci end 941e5c31af7Sopenharmony_ci 942e5c31af7Sopenharmony_ci case inout_float 943e5c31af7Sopenharmony_ci version 310 es 944e5c31af7Sopenharmony_ci values 945e5c31af7Sopenharmony_ci { 946e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 947e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 948e5c31af7Sopenharmony_ci } 949e5c31af7Sopenharmony_ci 950e5c31af7Sopenharmony_ci both "" 951e5c31af7Sopenharmony_ci #version 310 es 952e5c31af7Sopenharmony_ci precision highp float; 953e5c31af7Sopenharmony_ci precision highp int; 954e5c31af7Sopenharmony_ci ${DECLARATIONS} 955e5c31af7Sopenharmony_ci 956e5c31af7Sopenharmony_ci void func (inout float a) 957e5c31af7Sopenharmony_ci { 958e5c31af7Sopenharmony_ci a = -a; 959e5c31af7Sopenharmony_ci } 960e5c31af7Sopenharmony_ci 961e5c31af7Sopenharmony_ci void main() 962e5c31af7Sopenharmony_ci { 963e5c31af7Sopenharmony_ci ${SETUP} 964e5c31af7Sopenharmony_ci float f = 1.0; 965e5c31af7Sopenharmony_ci func(f); 966e5c31af7Sopenharmony_ci out0 = f * in0; 967e5c31af7Sopenharmony_ci ${OUTPUT} 968e5c31af7Sopenharmony_ci } 969e5c31af7Sopenharmony_ci "" 970e5c31af7Sopenharmony_ci end 971e5c31af7Sopenharmony_ci 972e5c31af7Sopenharmony_ci case in_lowp_float 973e5c31af7Sopenharmony_ci version 310 es 974e5c31af7Sopenharmony_ci values 975e5c31af7Sopenharmony_ci { 976e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 977e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 978e5c31af7Sopenharmony_ci } 979e5c31af7Sopenharmony_ci 980e5c31af7Sopenharmony_ci both "" 981e5c31af7Sopenharmony_ci #version 310 es 982e5c31af7Sopenharmony_ci precision highp float; 983e5c31af7Sopenharmony_ci precision highp int; 984e5c31af7Sopenharmony_ci ${DECLARATIONS} 985e5c31af7Sopenharmony_ci 986e5c31af7Sopenharmony_ci float func (in lowp float a) 987e5c31af7Sopenharmony_ci { 988e5c31af7Sopenharmony_ci a = -a; 989e5c31af7Sopenharmony_ci return 2.0 * a; 990e5c31af7Sopenharmony_ci } 991e5c31af7Sopenharmony_ci 992e5c31af7Sopenharmony_ci void main() 993e5c31af7Sopenharmony_ci { 994e5c31af7Sopenharmony_ci ${SETUP} 995e5c31af7Sopenharmony_ci float f = in0; 996e5c31af7Sopenharmony_ci float g = func(f); 997e5c31af7Sopenharmony_ci out0 = f + g; 998e5c31af7Sopenharmony_ci ${OUTPUT} 999e5c31af7Sopenharmony_ci } 1000e5c31af7Sopenharmony_ci "" 1001e5c31af7Sopenharmony_ci end 1002e5c31af7Sopenharmony_ci 1003e5c31af7Sopenharmony_ci case out_lowp_float 1004e5c31af7Sopenharmony_ci version 310 es 1005e5c31af7Sopenharmony_ci values 1006e5c31af7Sopenharmony_ci { 1007e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1008e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1009e5c31af7Sopenharmony_ci } 1010e5c31af7Sopenharmony_ci 1011e5c31af7Sopenharmony_ci both "" 1012e5c31af7Sopenharmony_ci #version 310 es 1013e5c31af7Sopenharmony_ci precision highp float; 1014e5c31af7Sopenharmony_ci precision highp int; 1015e5c31af7Sopenharmony_ci ${DECLARATIONS} 1016e5c31af7Sopenharmony_ci 1017e5c31af7Sopenharmony_ci void func (out lowp float a) 1018e5c31af7Sopenharmony_ci { 1019e5c31af7Sopenharmony_ci a = -1.0; 1020e5c31af7Sopenharmony_ci } 1021e5c31af7Sopenharmony_ci 1022e5c31af7Sopenharmony_ci void main() 1023e5c31af7Sopenharmony_ci { 1024e5c31af7Sopenharmony_ci ${SETUP} 1025e5c31af7Sopenharmony_ci float f = 1.0; 1026e5c31af7Sopenharmony_ci func(f); 1027e5c31af7Sopenharmony_ci out0 = f * in0; 1028e5c31af7Sopenharmony_ci ${OUTPUT} 1029e5c31af7Sopenharmony_ci } 1030e5c31af7Sopenharmony_ci "" 1031e5c31af7Sopenharmony_ci end 1032e5c31af7Sopenharmony_ci 1033e5c31af7Sopenharmony_ci case inout_lowp_float 1034e5c31af7Sopenharmony_ci version 310 es 1035e5c31af7Sopenharmony_ci values 1036e5c31af7Sopenharmony_ci { 1037e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1038e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1039e5c31af7Sopenharmony_ci } 1040e5c31af7Sopenharmony_ci 1041e5c31af7Sopenharmony_ci both "" 1042e5c31af7Sopenharmony_ci #version 310 es 1043e5c31af7Sopenharmony_ci precision highp float; 1044e5c31af7Sopenharmony_ci precision highp int; 1045e5c31af7Sopenharmony_ci ${DECLARATIONS} 1046e5c31af7Sopenharmony_ci 1047e5c31af7Sopenharmony_ci void func (inout lowp float a) 1048e5c31af7Sopenharmony_ci { 1049e5c31af7Sopenharmony_ci a = -a; 1050e5c31af7Sopenharmony_ci } 1051e5c31af7Sopenharmony_ci 1052e5c31af7Sopenharmony_ci void main() 1053e5c31af7Sopenharmony_ci { 1054e5c31af7Sopenharmony_ci ${SETUP} 1055e5c31af7Sopenharmony_ci float f = 1.0; 1056e5c31af7Sopenharmony_ci func(f); 1057e5c31af7Sopenharmony_ci out0 = f * in0; 1058e5c31af7Sopenharmony_ci ${OUTPUT} 1059e5c31af7Sopenharmony_ci } 1060e5c31af7Sopenharmony_ci "" 1061e5c31af7Sopenharmony_ci end 1062e5c31af7Sopenharmony_ci 1063e5c31af7Sopenharmony_ci case in_highp_float 1064e5c31af7Sopenharmony_ci version 310 es 1065e5c31af7Sopenharmony_ci values 1066e5c31af7Sopenharmony_ci { 1067e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1068e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1069e5c31af7Sopenharmony_ci } 1070e5c31af7Sopenharmony_ci 1071e5c31af7Sopenharmony_ci both "" 1072e5c31af7Sopenharmony_ci #version 310 es 1073e5c31af7Sopenharmony_ci precision highp float; 1074e5c31af7Sopenharmony_ci precision highp int; 1075e5c31af7Sopenharmony_ci ${DECLARATIONS} 1076e5c31af7Sopenharmony_ci 1077e5c31af7Sopenharmony_ci float func (in highp float a) 1078e5c31af7Sopenharmony_ci { 1079e5c31af7Sopenharmony_ci a = -a; 1080e5c31af7Sopenharmony_ci return 2.0 * a; 1081e5c31af7Sopenharmony_ci } 1082e5c31af7Sopenharmony_ci 1083e5c31af7Sopenharmony_ci void main() 1084e5c31af7Sopenharmony_ci { 1085e5c31af7Sopenharmony_ci ${SETUP} 1086e5c31af7Sopenharmony_ci float f = in0; 1087e5c31af7Sopenharmony_ci float g = func(f); 1088e5c31af7Sopenharmony_ci out0 = f + g; 1089e5c31af7Sopenharmony_ci ${OUTPUT} 1090e5c31af7Sopenharmony_ci } 1091e5c31af7Sopenharmony_ci "" 1092e5c31af7Sopenharmony_ci end 1093e5c31af7Sopenharmony_ci 1094e5c31af7Sopenharmony_ci case out_highp_float 1095e5c31af7Sopenharmony_ci version 310 es 1096e5c31af7Sopenharmony_ci values 1097e5c31af7Sopenharmony_ci { 1098e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1099e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1100e5c31af7Sopenharmony_ci } 1101e5c31af7Sopenharmony_ci 1102e5c31af7Sopenharmony_ci both "" 1103e5c31af7Sopenharmony_ci #version 310 es 1104e5c31af7Sopenharmony_ci precision highp float; 1105e5c31af7Sopenharmony_ci precision highp int; 1106e5c31af7Sopenharmony_ci ${DECLARATIONS} 1107e5c31af7Sopenharmony_ci 1108e5c31af7Sopenharmony_ci void func (out highp float a) 1109e5c31af7Sopenharmony_ci { 1110e5c31af7Sopenharmony_ci a = -1.0; 1111e5c31af7Sopenharmony_ci } 1112e5c31af7Sopenharmony_ci 1113e5c31af7Sopenharmony_ci void main() 1114e5c31af7Sopenharmony_ci { 1115e5c31af7Sopenharmony_ci ${SETUP} 1116e5c31af7Sopenharmony_ci float f = 1.0; 1117e5c31af7Sopenharmony_ci func(f); 1118e5c31af7Sopenharmony_ci out0 = f * in0; 1119e5c31af7Sopenharmony_ci ${OUTPUT} 1120e5c31af7Sopenharmony_ci } 1121e5c31af7Sopenharmony_ci "" 1122e5c31af7Sopenharmony_ci end 1123e5c31af7Sopenharmony_ci 1124e5c31af7Sopenharmony_ci case inout_highp_float 1125e5c31af7Sopenharmony_ci version 310 es 1126e5c31af7Sopenharmony_ci values 1127e5c31af7Sopenharmony_ci { 1128e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1129e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1130e5c31af7Sopenharmony_ci } 1131e5c31af7Sopenharmony_ci 1132e5c31af7Sopenharmony_ci both "" 1133e5c31af7Sopenharmony_ci #version 310 es 1134e5c31af7Sopenharmony_ci precision highp float; 1135e5c31af7Sopenharmony_ci precision highp int; 1136e5c31af7Sopenharmony_ci ${DECLARATIONS} 1137e5c31af7Sopenharmony_ci 1138e5c31af7Sopenharmony_ci void func (inout highp float a) 1139e5c31af7Sopenharmony_ci { 1140e5c31af7Sopenharmony_ci a = -a; 1141e5c31af7Sopenharmony_ci } 1142e5c31af7Sopenharmony_ci 1143e5c31af7Sopenharmony_ci void main() 1144e5c31af7Sopenharmony_ci { 1145e5c31af7Sopenharmony_ci ${SETUP} 1146e5c31af7Sopenharmony_ci float f = 1.0; 1147e5c31af7Sopenharmony_ci func(f); 1148e5c31af7Sopenharmony_ci out0 = f * in0; 1149e5c31af7Sopenharmony_ci ${OUTPUT} 1150e5c31af7Sopenharmony_ci } 1151e5c31af7Sopenharmony_ci "" 1152e5c31af7Sopenharmony_ci end 1153e5c31af7Sopenharmony_ci 1154e5c31af7Sopenharmony_ci case const_float 1155e5c31af7Sopenharmony_ci version 310 es 1156e5c31af7Sopenharmony_ci values 1157e5c31af7Sopenharmony_ci { 1158e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1159e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1160e5c31af7Sopenharmony_ci } 1161e5c31af7Sopenharmony_ci 1162e5c31af7Sopenharmony_ci both "" 1163e5c31af7Sopenharmony_ci #version 310 es 1164e5c31af7Sopenharmony_ci precision highp float; 1165e5c31af7Sopenharmony_ci precision highp int; 1166e5c31af7Sopenharmony_ci ${DECLARATIONS} 1167e5c31af7Sopenharmony_ci 1168e5c31af7Sopenharmony_ci float func (const float a) 1169e5c31af7Sopenharmony_ci { 1170e5c31af7Sopenharmony_ci float b = -a; 1171e5c31af7Sopenharmony_ci return 2.0 * b; 1172e5c31af7Sopenharmony_ci } 1173e5c31af7Sopenharmony_ci 1174e5c31af7Sopenharmony_ci void main() 1175e5c31af7Sopenharmony_ci { 1176e5c31af7Sopenharmony_ci ${SETUP} 1177e5c31af7Sopenharmony_ci float f = in0; 1178e5c31af7Sopenharmony_ci float g = func(f); 1179e5c31af7Sopenharmony_ci out0 = f + g; 1180e5c31af7Sopenharmony_ci ${OUTPUT} 1181e5c31af7Sopenharmony_ci } 1182e5c31af7Sopenharmony_ci "" 1183e5c31af7Sopenharmony_ci end 1184e5c31af7Sopenharmony_ci 1185e5c31af7Sopenharmony_ci case const_in_float 1186e5c31af7Sopenharmony_ci version 310 es 1187e5c31af7Sopenharmony_ci values 1188e5c31af7Sopenharmony_ci { 1189e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1190e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1191e5c31af7Sopenharmony_ci } 1192e5c31af7Sopenharmony_ci 1193e5c31af7Sopenharmony_ci both "" 1194e5c31af7Sopenharmony_ci #version 310 es 1195e5c31af7Sopenharmony_ci precision highp float; 1196e5c31af7Sopenharmony_ci precision highp int; 1197e5c31af7Sopenharmony_ci ${DECLARATIONS} 1198e5c31af7Sopenharmony_ci 1199e5c31af7Sopenharmony_ci float func (const in float a) 1200e5c31af7Sopenharmony_ci { 1201e5c31af7Sopenharmony_ci float b = -a; 1202e5c31af7Sopenharmony_ci return 2.0 * b; 1203e5c31af7Sopenharmony_ci } 1204e5c31af7Sopenharmony_ci 1205e5c31af7Sopenharmony_ci void main() 1206e5c31af7Sopenharmony_ci { 1207e5c31af7Sopenharmony_ci ${SETUP} 1208e5c31af7Sopenharmony_ci float f = in0; 1209e5c31af7Sopenharmony_ci float g = func(f); 1210e5c31af7Sopenharmony_ci out0 = f + g; 1211e5c31af7Sopenharmony_ci ${OUTPUT} 1212e5c31af7Sopenharmony_ci } 1213e5c31af7Sopenharmony_ci "" 1214e5c31af7Sopenharmony_ci end 1215e5c31af7Sopenharmony_ci 1216e5c31af7Sopenharmony_ci case in_int 1217e5c31af7Sopenharmony_ci version 310 es 1218e5c31af7Sopenharmony_ci values 1219e5c31af7Sopenharmony_ci { 1220e5c31af7Sopenharmony_ci input int in0 = [ 0 | 1 | -2 | 4 ]; 1221e5c31af7Sopenharmony_ci output int out0 = [ 0 | -1 | 2 | -4 ]; 1222e5c31af7Sopenharmony_ci } 1223e5c31af7Sopenharmony_ci 1224e5c31af7Sopenharmony_ci both "" 1225e5c31af7Sopenharmony_ci #version 310 es 1226e5c31af7Sopenharmony_ci precision highp float; 1227e5c31af7Sopenharmony_ci precision highp int; 1228e5c31af7Sopenharmony_ci ${DECLARATIONS} 1229e5c31af7Sopenharmony_ci 1230e5c31af7Sopenharmony_ci int func (in int a) 1231e5c31af7Sopenharmony_ci { 1232e5c31af7Sopenharmony_ci a = -a; 1233e5c31af7Sopenharmony_ci return 2 * a; 1234e5c31af7Sopenharmony_ci } 1235e5c31af7Sopenharmony_ci 1236e5c31af7Sopenharmony_ci void main() 1237e5c31af7Sopenharmony_ci { 1238e5c31af7Sopenharmony_ci ${SETUP} 1239e5c31af7Sopenharmony_ci int f = in0; 1240e5c31af7Sopenharmony_ci int g = func(f); 1241e5c31af7Sopenharmony_ci out0 = f + g; 1242e5c31af7Sopenharmony_ci ${OUTPUT} 1243e5c31af7Sopenharmony_ci } 1244e5c31af7Sopenharmony_ci "" 1245e5c31af7Sopenharmony_ci end 1246e5c31af7Sopenharmony_ci 1247e5c31af7Sopenharmony_ci case out_int 1248e5c31af7Sopenharmony_ci version 310 es 1249e5c31af7Sopenharmony_ci values 1250e5c31af7Sopenharmony_ci { 1251e5c31af7Sopenharmony_ci input int in0 = [ 0 | 1 | -2 | 6 ]; 1252e5c31af7Sopenharmony_ci output int out0 = [ 0 | -1 | 2 | -6 ]; 1253e5c31af7Sopenharmony_ci } 1254e5c31af7Sopenharmony_ci 1255e5c31af7Sopenharmony_ci both "" 1256e5c31af7Sopenharmony_ci #version 310 es 1257e5c31af7Sopenharmony_ci precision highp float; 1258e5c31af7Sopenharmony_ci precision highp int; 1259e5c31af7Sopenharmony_ci ${DECLARATIONS} 1260e5c31af7Sopenharmony_ci 1261e5c31af7Sopenharmony_ci void func (out int a) 1262e5c31af7Sopenharmony_ci { 1263e5c31af7Sopenharmony_ci a = -1; 1264e5c31af7Sopenharmony_ci } 1265e5c31af7Sopenharmony_ci 1266e5c31af7Sopenharmony_ci void main() 1267e5c31af7Sopenharmony_ci { 1268e5c31af7Sopenharmony_ci ${SETUP} 1269e5c31af7Sopenharmony_ci int f = 1; 1270e5c31af7Sopenharmony_ci func(f); 1271e5c31af7Sopenharmony_ci out0 = f * in0; 1272e5c31af7Sopenharmony_ci ${OUTPUT} 1273e5c31af7Sopenharmony_ci } 1274e5c31af7Sopenharmony_ci "" 1275e5c31af7Sopenharmony_ci end 1276e5c31af7Sopenharmony_ci 1277e5c31af7Sopenharmony_ci case inout_int 1278e5c31af7Sopenharmony_ci version 310 es 1279e5c31af7Sopenharmony_ci values 1280e5c31af7Sopenharmony_ci { 1281e5c31af7Sopenharmony_ci input int in0 = [ 0 | 1 | -2 | 6 ]; 1282e5c31af7Sopenharmony_ci output int out0 = [ 0 | -1 | 2 | -6 ]; 1283e5c31af7Sopenharmony_ci } 1284e5c31af7Sopenharmony_ci 1285e5c31af7Sopenharmony_ci both "" 1286e5c31af7Sopenharmony_ci #version 310 es 1287e5c31af7Sopenharmony_ci precision highp float; 1288e5c31af7Sopenharmony_ci precision highp int; 1289e5c31af7Sopenharmony_ci ${DECLARATIONS} 1290e5c31af7Sopenharmony_ci 1291e5c31af7Sopenharmony_ci void func (inout int a) 1292e5c31af7Sopenharmony_ci { 1293e5c31af7Sopenharmony_ci a = -a; 1294e5c31af7Sopenharmony_ci } 1295e5c31af7Sopenharmony_ci 1296e5c31af7Sopenharmony_ci void main() 1297e5c31af7Sopenharmony_ci { 1298e5c31af7Sopenharmony_ci ${SETUP} 1299e5c31af7Sopenharmony_ci int f = 1; 1300e5c31af7Sopenharmony_ci func(f); 1301e5c31af7Sopenharmony_ci out0 = f * in0; 1302e5c31af7Sopenharmony_ci ${OUTPUT} 1303e5c31af7Sopenharmony_ci } 1304e5c31af7Sopenharmony_ci "" 1305e5c31af7Sopenharmony_ci end 1306e5c31af7Sopenharmony_ci 1307e5c31af7Sopenharmony_ci case in_lowp_int 1308e5c31af7Sopenharmony_ci version 310 es 1309e5c31af7Sopenharmony_ci values 1310e5c31af7Sopenharmony_ci { 1311e5c31af7Sopenharmony_ci input int in0 = [ 0 | 1 | -2 | 4 ]; 1312e5c31af7Sopenharmony_ci output int out0 = [ 0 | -1 | 2 | -4 ]; 1313e5c31af7Sopenharmony_ci } 1314e5c31af7Sopenharmony_ci 1315e5c31af7Sopenharmony_ci both "" 1316e5c31af7Sopenharmony_ci #version 310 es 1317e5c31af7Sopenharmony_ci precision highp float; 1318e5c31af7Sopenharmony_ci precision highp int; 1319e5c31af7Sopenharmony_ci ${DECLARATIONS} 1320e5c31af7Sopenharmony_ci 1321e5c31af7Sopenharmony_ci int func (in lowp int a) 1322e5c31af7Sopenharmony_ci { 1323e5c31af7Sopenharmony_ci a = -a; 1324e5c31af7Sopenharmony_ci return 2 * a; 1325e5c31af7Sopenharmony_ci } 1326e5c31af7Sopenharmony_ci 1327e5c31af7Sopenharmony_ci void main() 1328e5c31af7Sopenharmony_ci { 1329e5c31af7Sopenharmony_ci ${SETUP} 1330e5c31af7Sopenharmony_ci int f = in0; 1331e5c31af7Sopenharmony_ci int g = func(f); 1332e5c31af7Sopenharmony_ci out0 = f + g; 1333e5c31af7Sopenharmony_ci ${OUTPUT} 1334e5c31af7Sopenharmony_ci } 1335e5c31af7Sopenharmony_ci "" 1336e5c31af7Sopenharmony_ci end 1337e5c31af7Sopenharmony_ci 1338e5c31af7Sopenharmony_ci case out_lowp_int 1339e5c31af7Sopenharmony_ci version 310 es 1340e5c31af7Sopenharmony_ci values 1341e5c31af7Sopenharmony_ci { 1342e5c31af7Sopenharmony_ci input int in0 = [ 0 | 1 | -2 | 6 ]; 1343e5c31af7Sopenharmony_ci output int out0 = [ 0 | -1 | 2 | -6 ]; 1344e5c31af7Sopenharmony_ci } 1345e5c31af7Sopenharmony_ci 1346e5c31af7Sopenharmony_ci both "" 1347e5c31af7Sopenharmony_ci #version 310 es 1348e5c31af7Sopenharmony_ci precision highp float; 1349e5c31af7Sopenharmony_ci precision highp int; 1350e5c31af7Sopenharmony_ci ${DECLARATIONS} 1351e5c31af7Sopenharmony_ci 1352e5c31af7Sopenharmony_ci void func (out lowp int a) 1353e5c31af7Sopenharmony_ci { 1354e5c31af7Sopenharmony_ci a = -1; 1355e5c31af7Sopenharmony_ci } 1356e5c31af7Sopenharmony_ci 1357e5c31af7Sopenharmony_ci void main() 1358e5c31af7Sopenharmony_ci { 1359e5c31af7Sopenharmony_ci ${SETUP} 1360e5c31af7Sopenharmony_ci int f = 1; 1361e5c31af7Sopenharmony_ci func(f); 1362e5c31af7Sopenharmony_ci out0 = f * in0; 1363e5c31af7Sopenharmony_ci ${OUTPUT} 1364e5c31af7Sopenharmony_ci } 1365e5c31af7Sopenharmony_ci "" 1366e5c31af7Sopenharmony_ci end 1367e5c31af7Sopenharmony_ci 1368e5c31af7Sopenharmony_ci case inout_lowp_int 1369e5c31af7Sopenharmony_ci version 310 es 1370e5c31af7Sopenharmony_ci values 1371e5c31af7Sopenharmony_ci { 1372e5c31af7Sopenharmony_ci input int in0 = [ 0 | 1 | -2 | 6 ]; 1373e5c31af7Sopenharmony_ci output int out0 = [ 0 | -1 | 2 | -6 ]; 1374e5c31af7Sopenharmony_ci } 1375e5c31af7Sopenharmony_ci 1376e5c31af7Sopenharmony_ci both "" 1377e5c31af7Sopenharmony_ci #version 310 es 1378e5c31af7Sopenharmony_ci precision highp float; 1379e5c31af7Sopenharmony_ci precision highp int; 1380e5c31af7Sopenharmony_ci ${DECLARATIONS} 1381e5c31af7Sopenharmony_ci 1382e5c31af7Sopenharmony_ci void func (inout lowp int a) 1383e5c31af7Sopenharmony_ci { 1384e5c31af7Sopenharmony_ci a = -a; 1385e5c31af7Sopenharmony_ci } 1386e5c31af7Sopenharmony_ci 1387e5c31af7Sopenharmony_ci void main() 1388e5c31af7Sopenharmony_ci { 1389e5c31af7Sopenharmony_ci ${SETUP} 1390e5c31af7Sopenharmony_ci int f = 1; 1391e5c31af7Sopenharmony_ci func(f); 1392e5c31af7Sopenharmony_ci out0 = f * in0; 1393e5c31af7Sopenharmony_ci ${OUTPUT} 1394e5c31af7Sopenharmony_ci } 1395e5c31af7Sopenharmony_ci "" 1396e5c31af7Sopenharmony_ci end 1397e5c31af7Sopenharmony_ci 1398e5c31af7Sopenharmony_ci case in_highp_int 1399e5c31af7Sopenharmony_ci version 310 es 1400e5c31af7Sopenharmony_ci values 1401e5c31af7Sopenharmony_ci { 1402e5c31af7Sopenharmony_ci input int in0 = [ 0 | 1 | -2 | 4 ]; 1403e5c31af7Sopenharmony_ci output int out0 = [ 0 | -1 | 2 | -4 ]; 1404e5c31af7Sopenharmony_ci } 1405e5c31af7Sopenharmony_ci 1406e5c31af7Sopenharmony_ci both "" 1407e5c31af7Sopenharmony_ci #version 310 es 1408e5c31af7Sopenharmony_ci precision highp float; 1409e5c31af7Sopenharmony_ci precision highp int; 1410e5c31af7Sopenharmony_ci ${DECLARATIONS} 1411e5c31af7Sopenharmony_ci 1412e5c31af7Sopenharmony_ci int func (in highp int a) 1413e5c31af7Sopenharmony_ci { 1414e5c31af7Sopenharmony_ci a = -a; 1415e5c31af7Sopenharmony_ci return 2 * a; 1416e5c31af7Sopenharmony_ci } 1417e5c31af7Sopenharmony_ci 1418e5c31af7Sopenharmony_ci void main() 1419e5c31af7Sopenharmony_ci { 1420e5c31af7Sopenharmony_ci ${SETUP} 1421e5c31af7Sopenharmony_ci int f = in0; 1422e5c31af7Sopenharmony_ci int g = func(f); 1423e5c31af7Sopenharmony_ci out0 = f + g; 1424e5c31af7Sopenharmony_ci ${OUTPUT} 1425e5c31af7Sopenharmony_ci } 1426e5c31af7Sopenharmony_ci "" 1427e5c31af7Sopenharmony_ci end 1428e5c31af7Sopenharmony_ci 1429e5c31af7Sopenharmony_ci case out_highp_int 1430e5c31af7Sopenharmony_ci version 310 es 1431e5c31af7Sopenharmony_ci values 1432e5c31af7Sopenharmony_ci { 1433e5c31af7Sopenharmony_ci input int in0 = [ 0 | 1 | -2 | 6 ]; 1434e5c31af7Sopenharmony_ci output int out0 = [ 0 | -1 | 2 | -6 ]; 1435e5c31af7Sopenharmony_ci } 1436e5c31af7Sopenharmony_ci 1437e5c31af7Sopenharmony_ci both "" 1438e5c31af7Sopenharmony_ci #version 310 es 1439e5c31af7Sopenharmony_ci precision highp float; 1440e5c31af7Sopenharmony_ci precision highp int; 1441e5c31af7Sopenharmony_ci ${DECLARATIONS} 1442e5c31af7Sopenharmony_ci 1443e5c31af7Sopenharmony_ci void func (out highp int a) 1444e5c31af7Sopenharmony_ci { 1445e5c31af7Sopenharmony_ci a = -1; 1446e5c31af7Sopenharmony_ci } 1447e5c31af7Sopenharmony_ci 1448e5c31af7Sopenharmony_ci void main() 1449e5c31af7Sopenharmony_ci { 1450e5c31af7Sopenharmony_ci ${SETUP} 1451e5c31af7Sopenharmony_ci int f = 1; 1452e5c31af7Sopenharmony_ci func(f); 1453e5c31af7Sopenharmony_ci out0 = f * in0; 1454e5c31af7Sopenharmony_ci ${OUTPUT} 1455e5c31af7Sopenharmony_ci } 1456e5c31af7Sopenharmony_ci "" 1457e5c31af7Sopenharmony_ci end 1458e5c31af7Sopenharmony_ci 1459e5c31af7Sopenharmony_ci case inout_highp_int 1460e5c31af7Sopenharmony_ci version 310 es 1461e5c31af7Sopenharmony_ci values 1462e5c31af7Sopenharmony_ci { 1463e5c31af7Sopenharmony_ci input int in0 = [ 0 | 1 | -2 | 6 ]; 1464e5c31af7Sopenharmony_ci output int out0 = [ 0 | -1 | 2 | -6 ]; 1465e5c31af7Sopenharmony_ci } 1466e5c31af7Sopenharmony_ci 1467e5c31af7Sopenharmony_ci both "" 1468e5c31af7Sopenharmony_ci #version 310 es 1469e5c31af7Sopenharmony_ci precision highp float; 1470e5c31af7Sopenharmony_ci precision highp int; 1471e5c31af7Sopenharmony_ci ${DECLARATIONS} 1472e5c31af7Sopenharmony_ci 1473e5c31af7Sopenharmony_ci void func (inout highp int a) 1474e5c31af7Sopenharmony_ci { 1475e5c31af7Sopenharmony_ci a = -a; 1476e5c31af7Sopenharmony_ci } 1477e5c31af7Sopenharmony_ci 1478e5c31af7Sopenharmony_ci void main() 1479e5c31af7Sopenharmony_ci { 1480e5c31af7Sopenharmony_ci ${SETUP} 1481e5c31af7Sopenharmony_ci int f = 1; 1482e5c31af7Sopenharmony_ci func(f); 1483e5c31af7Sopenharmony_ci out0 = f * in0; 1484e5c31af7Sopenharmony_ci ${OUTPUT} 1485e5c31af7Sopenharmony_ci } 1486e5c31af7Sopenharmony_ci "" 1487e5c31af7Sopenharmony_ci end 1488e5c31af7Sopenharmony_ci 1489e5c31af7Sopenharmony_ci case const_int 1490e5c31af7Sopenharmony_ci version 310 es 1491e5c31af7Sopenharmony_ci values 1492e5c31af7Sopenharmony_ci { 1493e5c31af7Sopenharmony_ci input int in0 = [ 0 | 1 | -2 | 4 ]; 1494e5c31af7Sopenharmony_ci output int out0 = [ 0 | -1 | 2 | -4 ]; 1495e5c31af7Sopenharmony_ci } 1496e5c31af7Sopenharmony_ci 1497e5c31af7Sopenharmony_ci both "" 1498e5c31af7Sopenharmony_ci #version 310 es 1499e5c31af7Sopenharmony_ci precision highp float; 1500e5c31af7Sopenharmony_ci precision highp int; 1501e5c31af7Sopenharmony_ci ${DECLARATIONS} 1502e5c31af7Sopenharmony_ci 1503e5c31af7Sopenharmony_ci int func (const int a) 1504e5c31af7Sopenharmony_ci { 1505e5c31af7Sopenharmony_ci int b = -a; 1506e5c31af7Sopenharmony_ci return 2 * b; 1507e5c31af7Sopenharmony_ci } 1508e5c31af7Sopenharmony_ci 1509e5c31af7Sopenharmony_ci void main() 1510e5c31af7Sopenharmony_ci { 1511e5c31af7Sopenharmony_ci ${SETUP} 1512e5c31af7Sopenharmony_ci int f = in0; 1513e5c31af7Sopenharmony_ci int g = func(f); 1514e5c31af7Sopenharmony_ci out0 = f + g; 1515e5c31af7Sopenharmony_ci ${OUTPUT} 1516e5c31af7Sopenharmony_ci } 1517e5c31af7Sopenharmony_ci "" 1518e5c31af7Sopenharmony_ci end 1519e5c31af7Sopenharmony_ci 1520e5c31af7Sopenharmony_ci case const_in_int 1521e5c31af7Sopenharmony_ci version 310 es 1522e5c31af7Sopenharmony_ci values 1523e5c31af7Sopenharmony_ci { 1524e5c31af7Sopenharmony_ci input int in0 = [ 0 | 1 | -2 | 4 ]; 1525e5c31af7Sopenharmony_ci output int out0 = [ 0 | -1 | 2 | -4 ]; 1526e5c31af7Sopenharmony_ci } 1527e5c31af7Sopenharmony_ci 1528e5c31af7Sopenharmony_ci both "" 1529e5c31af7Sopenharmony_ci #version 310 es 1530e5c31af7Sopenharmony_ci precision highp float; 1531e5c31af7Sopenharmony_ci precision highp int; 1532e5c31af7Sopenharmony_ci ${DECLARATIONS} 1533e5c31af7Sopenharmony_ci 1534e5c31af7Sopenharmony_ci int func (const in int a) 1535e5c31af7Sopenharmony_ci { 1536e5c31af7Sopenharmony_ci int b = -a; 1537e5c31af7Sopenharmony_ci return 2 * b; 1538e5c31af7Sopenharmony_ci } 1539e5c31af7Sopenharmony_ci 1540e5c31af7Sopenharmony_ci void main() 1541e5c31af7Sopenharmony_ci { 1542e5c31af7Sopenharmony_ci ${SETUP} 1543e5c31af7Sopenharmony_ci int f = in0; 1544e5c31af7Sopenharmony_ci int g = func(f); 1545e5c31af7Sopenharmony_ci out0 = f + g; 1546e5c31af7Sopenharmony_ci ${OUTPUT} 1547e5c31af7Sopenharmony_ci } 1548e5c31af7Sopenharmony_ci "" 1549e5c31af7Sopenharmony_ci end 1550e5c31af7Sopenharmony_ci 1551e5c31af7Sopenharmony_ci case in_bool 1552e5c31af7Sopenharmony_ci version 310 es 1553e5c31af7Sopenharmony_ci values 1554e5c31af7Sopenharmony_ci { 1555e5c31af7Sopenharmony_ci input bool in0 = [ true | false ]; 1556e5c31af7Sopenharmony_ci output bool out0 = [ true | true ]; 1557e5c31af7Sopenharmony_ci } 1558e5c31af7Sopenharmony_ci 1559e5c31af7Sopenharmony_ci both "" 1560e5c31af7Sopenharmony_ci #version 310 es 1561e5c31af7Sopenharmony_ci precision highp float; 1562e5c31af7Sopenharmony_ci precision highp int; 1563e5c31af7Sopenharmony_ci ${DECLARATIONS} 1564e5c31af7Sopenharmony_ci 1565e5c31af7Sopenharmony_ci bool func (in bool a) 1566e5c31af7Sopenharmony_ci { 1567e5c31af7Sopenharmony_ci a = !a; 1568e5c31af7Sopenharmony_ci return a; 1569e5c31af7Sopenharmony_ci } 1570e5c31af7Sopenharmony_ci 1571e5c31af7Sopenharmony_ci void main() 1572e5c31af7Sopenharmony_ci { 1573e5c31af7Sopenharmony_ci ${SETUP} 1574e5c31af7Sopenharmony_ci bool f = in0; 1575e5c31af7Sopenharmony_ci bool g = func(f); 1576e5c31af7Sopenharmony_ci out0 = (f != g); 1577e5c31af7Sopenharmony_ci ${OUTPUT} 1578e5c31af7Sopenharmony_ci } 1579e5c31af7Sopenharmony_ci "" 1580e5c31af7Sopenharmony_ci end 1581e5c31af7Sopenharmony_ci 1582e5c31af7Sopenharmony_ci case out_bool 1583e5c31af7Sopenharmony_ci version 310 es 1584e5c31af7Sopenharmony_ci values 1585e5c31af7Sopenharmony_ci { 1586e5c31af7Sopenharmony_ci input bool in0 = [ true | false ]; 1587e5c31af7Sopenharmony_ci output bool out0 = [ false | true ]; 1588e5c31af7Sopenharmony_ci } 1589e5c31af7Sopenharmony_ci 1590e5c31af7Sopenharmony_ci both "" 1591e5c31af7Sopenharmony_ci #version 310 es 1592e5c31af7Sopenharmony_ci precision highp float; 1593e5c31af7Sopenharmony_ci precision highp int; 1594e5c31af7Sopenharmony_ci ${DECLARATIONS} 1595e5c31af7Sopenharmony_ci 1596e5c31af7Sopenharmony_ci void func (out bool a) 1597e5c31af7Sopenharmony_ci { 1598e5c31af7Sopenharmony_ci a = false; 1599e5c31af7Sopenharmony_ci } 1600e5c31af7Sopenharmony_ci 1601e5c31af7Sopenharmony_ci void main() 1602e5c31af7Sopenharmony_ci { 1603e5c31af7Sopenharmony_ci ${SETUP} 1604e5c31af7Sopenharmony_ci bool f = true; 1605e5c31af7Sopenharmony_ci func(f); 1606e5c31af7Sopenharmony_ci out0 = (in0 == f); 1607e5c31af7Sopenharmony_ci ${OUTPUT} 1608e5c31af7Sopenharmony_ci } 1609e5c31af7Sopenharmony_ci "" 1610e5c31af7Sopenharmony_ci end 1611e5c31af7Sopenharmony_ci 1612e5c31af7Sopenharmony_ci case inout_bool 1613e5c31af7Sopenharmony_ci version 310 es 1614e5c31af7Sopenharmony_ci values 1615e5c31af7Sopenharmony_ci { 1616e5c31af7Sopenharmony_ci input bool in0 = [ true | false ]; 1617e5c31af7Sopenharmony_ci output bool out0 = [ false | true ]; 1618e5c31af7Sopenharmony_ci } 1619e5c31af7Sopenharmony_ci 1620e5c31af7Sopenharmony_ci both "" 1621e5c31af7Sopenharmony_ci #version 310 es 1622e5c31af7Sopenharmony_ci precision highp float; 1623e5c31af7Sopenharmony_ci precision highp int; 1624e5c31af7Sopenharmony_ci ${DECLARATIONS} 1625e5c31af7Sopenharmony_ci 1626e5c31af7Sopenharmony_ci void func (inout bool a) 1627e5c31af7Sopenharmony_ci { 1628e5c31af7Sopenharmony_ci a = !a; 1629e5c31af7Sopenharmony_ci } 1630e5c31af7Sopenharmony_ci 1631e5c31af7Sopenharmony_ci void main() 1632e5c31af7Sopenharmony_ci { 1633e5c31af7Sopenharmony_ci ${SETUP} 1634e5c31af7Sopenharmony_ci bool f = true; 1635e5c31af7Sopenharmony_ci func(f); 1636e5c31af7Sopenharmony_ci out0 = (in0 == f); 1637e5c31af7Sopenharmony_ci ${OUTPUT} 1638e5c31af7Sopenharmony_ci } 1639e5c31af7Sopenharmony_ci "" 1640e5c31af7Sopenharmony_ci end 1641e5c31af7Sopenharmony_ci 1642e5c31af7Sopenharmony_ci case const_bool 1643e5c31af7Sopenharmony_ci version 310 es 1644e5c31af7Sopenharmony_ci values 1645e5c31af7Sopenharmony_ci { 1646e5c31af7Sopenharmony_ci input bool in0 = [ true | false ]; 1647e5c31af7Sopenharmony_ci output bool out0 = [ true | true ]; 1648e5c31af7Sopenharmony_ci } 1649e5c31af7Sopenharmony_ci 1650e5c31af7Sopenharmony_ci both "" 1651e5c31af7Sopenharmony_ci #version 310 es 1652e5c31af7Sopenharmony_ci precision highp float; 1653e5c31af7Sopenharmony_ci precision highp int; 1654e5c31af7Sopenharmony_ci ${DECLARATIONS} 1655e5c31af7Sopenharmony_ci 1656e5c31af7Sopenharmony_ci bool func (const bool a) 1657e5c31af7Sopenharmony_ci { 1658e5c31af7Sopenharmony_ci bool b = !a; 1659e5c31af7Sopenharmony_ci return b; 1660e5c31af7Sopenharmony_ci } 1661e5c31af7Sopenharmony_ci 1662e5c31af7Sopenharmony_ci void main() 1663e5c31af7Sopenharmony_ci { 1664e5c31af7Sopenharmony_ci ${SETUP} 1665e5c31af7Sopenharmony_ci bool f = in0; 1666e5c31af7Sopenharmony_ci bool g = func(f); 1667e5c31af7Sopenharmony_ci out0 = (f != g); 1668e5c31af7Sopenharmony_ci ${OUTPUT} 1669e5c31af7Sopenharmony_ci } 1670e5c31af7Sopenharmony_ci "" 1671e5c31af7Sopenharmony_ci end 1672e5c31af7Sopenharmony_ci 1673e5c31af7Sopenharmony_ciend # qualifiers 1674e5c31af7Sopenharmony_ci 1675e5c31af7Sopenharmony_cigroup declarations "Function Declarations" 1676e5c31af7Sopenharmony_ci 1677e5c31af7Sopenharmony_ci case basic 1678e5c31af7Sopenharmony_ci version 310 es 1679e5c31af7Sopenharmony_ci values 1680e5c31af7Sopenharmony_ci { 1681e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1682e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1683e5c31af7Sopenharmony_ci } 1684e5c31af7Sopenharmony_ci 1685e5c31af7Sopenharmony_ci both "" 1686e5c31af7Sopenharmony_ci #version 310 es 1687e5c31af7Sopenharmony_ci precision highp float; 1688e5c31af7Sopenharmony_ci ${DECLARATIONS} 1689e5c31af7Sopenharmony_ci 1690e5c31af7Sopenharmony_ci float func (void); 1691e5c31af7Sopenharmony_ci 1692e5c31af7Sopenharmony_ci float func (void) 1693e5c31af7Sopenharmony_ci { 1694e5c31af7Sopenharmony_ci return -1.0; 1695e5c31af7Sopenharmony_ci } 1696e5c31af7Sopenharmony_ci 1697e5c31af7Sopenharmony_ci void main() 1698e5c31af7Sopenharmony_ci { 1699e5c31af7Sopenharmony_ci out0 = func() * in0; 1700e5c31af7Sopenharmony_ci ${OUTPUT} 1701e5c31af7Sopenharmony_ci } 1702e5c31af7Sopenharmony_ci "" 1703e5c31af7Sopenharmony_ci end 1704e5c31af7Sopenharmony_ci 1705e5c31af7Sopenharmony_ci case basic_arg 1706e5c31af7Sopenharmony_ci version 310 es 1707e5c31af7Sopenharmony_ci values 1708e5c31af7Sopenharmony_ci { 1709e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1710e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1711e5c31af7Sopenharmony_ci } 1712e5c31af7Sopenharmony_ci 1713e5c31af7Sopenharmony_ci both "" 1714e5c31af7Sopenharmony_ci #version 310 es 1715e5c31af7Sopenharmony_ci precision highp float; 1716e5c31af7Sopenharmony_ci ${DECLARATIONS} 1717e5c31af7Sopenharmony_ci 1718e5c31af7Sopenharmony_ci float func (float f); 1719e5c31af7Sopenharmony_ci 1720e5c31af7Sopenharmony_ci float func (float f) 1721e5c31af7Sopenharmony_ci { 1722e5c31af7Sopenharmony_ci return -f; 1723e5c31af7Sopenharmony_ci } 1724e5c31af7Sopenharmony_ci 1725e5c31af7Sopenharmony_ci void main() 1726e5c31af7Sopenharmony_ci { 1727e5c31af7Sopenharmony_ci out0 = func(in0); 1728e5c31af7Sopenharmony_ci ${OUTPUT} 1729e5c31af7Sopenharmony_ci } 1730e5c31af7Sopenharmony_ci "" 1731e5c31af7Sopenharmony_ci end 1732e5c31af7Sopenharmony_ci 1733e5c31af7Sopenharmony_ci case define_after_use 1734e5c31af7Sopenharmony_ci version 310 es 1735e5c31af7Sopenharmony_ci values 1736e5c31af7Sopenharmony_ci { 1737e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1738e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1739e5c31af7Sopenharmony_ci } 1740e5c31af7Sopenharmony_ci 1741e5c31af7Sopenharmony_ci both "" 1742e5c31af7Sopenharmony_ci #version 310 es 1743e5c31af7Sopenharmony_ci precision highp float; 1744e5c31af7Sopenharmony_ci ${DECLARATIONS} 1745e5c31af7Sopenharmony_ci 1746e5c31af7Sopenharmony_ci float func (void); 1747e5c31af7Sopenharmony_ci 1748e5c31af7Sopenharmony_ci void main() 1749e5c31af7Sopenharmony_ci { 1750e5c31af7Sopenharmony_ci out0 = func() * in0; 1751e5c31af7Sopenharmony_ci ${OUTPUT} 1752e5c31af7Sopenharmony_ci } 1753e5c31af7Sopenharmony_ci 1754e5c31af7Sopenharmony_ci float func (void) 1755e5c31af7Sopenharmony_ci { 1756e5c31af7Sopenharmony_ci return -1.0; 1757e5c31af7Sopenharmony_ci } 1758e5c31af7Sopenharmony_ci "" 1759e5c31af7Sopenharmony_ci end 1760e5c31af7Sopenharmony_ci 1761e5c31af7Sopenharmony_ci case double_declare 1762e5c31af7Sopenharmony_ci version 310 es 1763e5c31af7Sopenharmony_ci values 1764e5c31af7Sopenharmony_ci { 1765e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1766e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1767e5c31af7Sopenharmony_ci } 1768e5c31af7Sopenharmony_ci 1769e5c31af7Sopenharmony_ci both "" 1770e5c31af7Sopenharmony_ci #version 310 es 1771e5c31af7Sopenharmony_ci precision highp float; 1772e5c31af7Sopenharmony_ci ${DECLARATIONS} 1773e5c31af7Sopenharmony_ci 1774e5c31af7Sopenharmony_ci float func (void); 1775e5c31af7Sopenharmony_ci 1776e5c31af7Sopenharmony_ci float func (void); 1777e5c31af7Sopenharmony_ci 1778e5c31af7Sopenharmony_ci float func (void) 1779e5c31af7Sopenharmony_ci { 1780e5c31af7Sopenharmony_ci return -1.0; 1781e5c31af7Sopenharmony_ci } 1782e5c31af7Sopenharmony_ci 1783e5c31af7Sopenharmony_ci void main() 1784e5c31af7Sopenharmony_ci { 1785e5c31af7Sopenharmony_ci out0 = func() * in0; 1786e5c31af7Sopenharmony_ci ${OUTPUT} 1787e5c31af7Sopenharmony_ci } 1788e5c31af7Sopenharmony_ci "" 1789e5c31af7Sopenharmony_ci end 1790e5c31af7Sopenharmony_ci 1791e5c31af7Sopenharmony_ci case declare_after_define 1792e5c31af7Sopenharmony_ci version 310 es 1793e5c31af7Sopenharmony_ci values 1794e5c31af7Sopenharmony_ci { 1795e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1796e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1797e5c31af7Sopenharmony_ci } 1798e5c31af7Sopenharmony_ci 1799e5c31af7Sopenharmony_ci both "" 1800e5c31af7Sopenharmony_ci #version 310 es 1801e5c31af7Sopenharmony_ci precision highp float; 1802e5c31af7Sopenharmony_ci ${DECLARATIONS} 1803e5c31af7Sopenharmony_ci 1804e5c31af7Sopenharmony_ci float func (void) 1805e5c31af7Sopenharmony_ci { 1806e5c31af7Sopenharmony_ci return -1.0; 1807e5c31af7Sopenharmony_ci } 1808e5c31af7Sopenharmony_ci 1809e5c31af7Sopenharmony_ci float func (void); 1810e5c31af7Sopenharmony_ci 1811e5c31af7Sopenharmony_ci void main() 1812e5c31af7Sopenharmony_ci { 1813e5c31af7Sopenharmony_ci out0 = func() * in0; 1814e5c31af7Sopenharmony_ci ${OUTPUT} 1815e5c31af7Sopenharmony_ci } 1816e5c31af7Sopenharmony_ci "" 1817e5c31af7Sopenharmony_ci end 1818e5c31af7Sopenharmony_ci 1819e5c31af7Sopenharmony_ci case void_vs_no_void 1820e5c31af7Sopenharmony_ci version 310 es 1821e5c31af7Sopenharmony_ci values 1822e5c31af7Sopenharmony_ci { 1823e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1824e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1825e5c31af7Sopenharmony_ci } 1826e5c31af7Sopenharmony_ci 1827e5c31af7Sopenharmony_ci both "" 1828e5c31af7Sopenharmony_ci #version 310 es 1829e5c31af7Sopenharmony_ci precision highp float; 1830e5c31af7Sopenharmony_ci ${DECLARATIONS} 1831e5c31af7Sopenharmony_ci 1832e5c31af7Sopenharmony_ci float func (); 1833e5c31af7Sopenharmony_ci 1834e5c31af7Sopenharmony_ci void main() 1835e5c31af7Sopenharmony_ci { 1836e5c31af7Sopenharmony_ci out0 = func() * in0; 1837e5c31af7Sopenharmony_ci ${OUTPUT} 1838e5c31af7Sopenharmony_ci } 1839e5c31af7Sopenharmony_ci 1840e5c31af7Sopenharmony_ci float func (void) 1841e5c31af7Sopenharmony_ci { 1842e5c31af7Sopenharmony_ci return -1.0; 1843e5c31af7Sopenharmony_ci } 1844e5c31af7Sopenharmony_ci "" 1845e5c31af7Sopenharmony_ci end 1846e5c31af7Sopenharmony_ci 1847e5c31af7Sopenharmony_ci case in_vs_no_in 1848e5c31af7Sopenharmony_ci version 310 es 1849e5c31af7Sopenharmony_ci values 1850e5c31af7Sopenharmony_ci { 1851e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1852e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1853e5c31af7Sopenharmony_ci } 1854e5c31af7Sopenharmony_ci 1855e5c31af7Sopenharmony_ci both "" 1856e5c31af7Sopenharmony_ci #version 310 es 1857e5c31af7Sopenharmony_ci precision highp float; 1858e5c31af7Sopenharmony_ci ${DECLARATIONS} 1859e5c31af7Sopenharmony_ci 1860e5c31af7Sopenharmony_ci float func (float f); 1861e5c31af7Sopenharmony_ci 1862e5c31af7Sopenharmony_ci void main() 1863e5c31af7Sopenharmony_ci { 1864e5c31af7Sopenharmony_ci out0 = func(in0); 1865e5c31af7Sopenharmony_ci ${OUTPUT} 1866e5c31af7Sopenharmony_ci } 1867e5c31af7Sopenharmony_ci 1868e5c31af7Sopenharmony_ci float func (in float f) 1869e5c31af7Sopenharmony_ci { 1870e5c31af7Sopenharmony_ci return -f; 1871e5c31af7Sopenharmony_ci } 1872e5c31af7Sopenharmony_ci "" 1873e5c31af7Sopenharmony_ci end 1874e5c31af7Sopenharmony_ci 1875e5c31af7Sopenharmony_ci case default_vs_explicit_precision 1876e5c31af7Sopenharmony_ci version 310 es 1877e5c31af7Sopenharmony_ci values 1878e5c31af7Sopenharmony_ci { 1879e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1880e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1881e5c31af7Sopenharmony_ci } 1882e5c31af7Sopenharmony_ci 1883e5c31af7Sopenharmony_ci both "" 1884e5c31af7Sopenharmony_ci #version 310 es 1885e5c31af7Sopenharmony_ci precision highp float; 1886e5c31af7Sopenharmony_ci ${DECLARATIONS} 1887e5c31af7Sopenharmony_ci 1888e5c31af7Sopenharmony_ci precision mediump float; 1889e5c31af7Sopenharmony_ci 1890e5c31af7Sopenharmony_ci float func (float f); 1891e5c31af7Sopenharmony_ci 1892e5c31af7Sopenharmony_ci precision highp float; 1893e5c31af7Sopenharmony_ci 1894e5c31af7Sopenharmony_ci void main() 1895e5c31af7Sopenharmony_ci { 1896e5c31af7Sopenharmony_ci out0 = func(in0); 1897e5c31af7Sopenharmony_ci ${OUTPUT} 1898e5c31af7Sopenharmony_ci } 1899e5c31af7Sopenharmony_ci 1900e5c31af7Sopenharmony_ci float func (mediump float f) 1901e5c31af7Sopenharmony_ci { 1902e5c31af7Sopenharmony_ci return -f; 1903e5c31af7Sopenharmony_ci } 1904e5c31af7Sopenharmony_ci "" 1905e5c31af7Sopenharmony_ci end 1906e5c31af7Sopenharmony_ci 1907e5c31af7Sopenharmony_ci 1908e5c31af7Sopenharmony_ciend # declarations 1909e5c31af7Sopenharmony_ci 1910e5c31af7Sopenharmony_cigroup overloading "Function Overloading" 1911e5c31af7Sopenharmony_ci 1912e5c31af7Sopenharmony_ci case user_func_arg_type_simple 1913e5c31af7Sopenharmony_ci version 310 es 1914e5c31af7Sopenharmony_ci values 1915e5c31af7Sopenharmony_ci { 1916e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1917e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1918e5c31af7Sopenharmony_ci } 1919e5c31af7Sopenharmony_ci 1920e5c31af7Sopenharmony_ci both "" 1921e5c31af7Sopenharmony_ci #version 310 es 1922e5c31af7Sopenharmony_ci precision highp float; 1923e5c31af7Sopenharmony_ci precision highp int; 1924e5c31af7Sopenharmony_ci ${DECLARATIONS} 1925e5c31af7Sopenharmony_ci 1926e5c31af7Sopenharmony_ci float func (float a) 1927e5c31af7Sopenharmony_ci { 1928e5c31af7Sopenharmony_ci return -a; 1929e5c31af7Sopenharmony_ci } 1930e5c31af7Sopenharmony_ci 1931e5c31af7Sopenharmony_ci int func (int a) 1932e5c31af7Sopenharmony_ci { 1933e5c31af7Sopenharmony_ci return -a; 1934e5c31af7Sopenharmony_ci } 1935e5c31af7Sopenharmony_ci 1936e5c31af7Sopenharmony_ci void main() 1937e5c31af7Sopenharmony_ci { 1938e5c31af7Sopenharmony_ci out0 = func(in0) * float(func(-1)); 1939e5c31af7Sopenharmony_ci ${OUTPUT} 1940e5c31af7Sopenharmony_ci } 1941e5c31af7Sopenharmony_ci "" 1942e5c31af7Sopenharmony_ci end 1943e5c31af7Sopenharmony_ci 1944e5c31af7Sopenharmony_ci case user_func_arg_float_types 1945e5c31af7Sopenharmony_ci version 310 es 1946e5c31af7Sopenharmony_ci values 1947e5c31af7Sopenharmony_ci { 1948e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 1949e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 1950e5c31af7Sopenharmony_ci } 1951e5c31af7Sopenharmony_ci 1952e5c31af7Sopenharmony_ci both "" 1953e5c31af7Sopenharmony_ci #version 310 es 1954e5c31af7Sopenharmony_ci precision highp float; 1955e5c31af7Sopenharmony_ci precision highp int; 1956e5c31af7Sopenharmony_ci ${DECLARATIONS} 1957e5c31af7Sopenharmony_ci 1958e5c31af7Sopenharmony_ci float func (float a) { return -a; } 1959e5c31af7Sopenharmony_ci vec2 func (vec2 a) { return a.yx; } 1960e5c31af7Sopenharmony_ci vec3 func (vec3 a) { return a.xxx; } 1961e5c31af7Sopenharmony_ci vec4 func (vec4 a) { return a.wwww; } 1962e5c31af7Sopenharmony_ci 1963e5c31af7Sopenharmony_ci void main() 1964e5c31af7Sopenharmony_ci { 1965e5c31af7Sopenharmony_ci out0 = func(func(func(func(vec4(in0)).xyz).xy).x); 1966e5c31af7Sopenharmony_ci ${OUTPUT} 1967e5c31af7Sopenharmony_ci } 1968e5c31af7Sopenharmony_ci "" 1969e5c31af7Sopenharmony_ci end 1970e5c31af7Sopenharmony_ci 1971e5c31af7Sopenharmony_ci case user_func_arg_int_types 1972e5c31af7Sopenharmony_ci version 310 es 1973e5c31af7Sopenharmony_ci values 1974e5c31af7Sopenharmony_ci { 1975e5c31af7Sopenharmony_ci input int in0 = [ 0 | 1 | -2 | 6 ]; 1976e5c31af7Sopenharmony_ci output int out0 = [ 0 | -1 | 2 | -6 ]; 1977e5c31af7Sopenharmony_ci } 1978e5c31af7Sopenharmony_ci 1979e5c31af7Sopenharmony_ci both "" 1980e5c31af7Sopenharmony_ci #version 310 es 1981e5c31af7Sopenharmony_ci precision highp float; 1982e5c31af7Sopenharmony_ci precision highp int; 1983e5c31af7Sopenharmony_ci ${DECLARATIONS} 1984e5c31af7Sopenharmony_ci 1985e5c31af7Sopenharmony_ci int func (int a) { return -a; } 1986e5c31af7Sopenharmony_ci ivec2 func (ivec2 a) { return a.yx; } 1987e5c31af7Sopenharmony_ci ivec3 func (ivec3 a) { return a.xxx; } 1988e5c31af7Sopenharmony_ci ivec4 func (ivec4 a) { return a.wwww; } 1989e5c31af7Sopenharmony_ci 1990e5c31af7Sopenharmony_ci void main() 1991e5c31af7Sopenharmony_ci { 1992e5c31af7Sopenharmony_ci ${SETUP} 1993e5c31af7Sopenharmony_ci out0 = func(func(func(func(ivec4(in0)).xyz).xy).x); 1994e5c31af7Sopenharmony_ci ${OUTPUT} 1995e5c31af7Sopenharmony_ci } 1996e5c31af7Sopenharmony_ci "" 1997e5c31af7Sopenharmony_ci end 1998e5c31af7Sopenharmony_ci 1999e5c31af7Sopenharmony_ci case user_func_arg_bool_types 2000e5c31af7Sopenharmony_ci version 310 es 2001e5c31af7Sopenharmony_ci values 2002e5c31af7Sopenharmony_ci { 2003e5c31af7Sopenharmony_ci input bool in0 = [ true | false ]; 2004e5c31af7Sopenharmony_ci output bool out0 = [ false | true ]; 2005e5c31af7Sopenharmony_ci } 2006e5c31af7Sopenharmony_ci 2007e5c31af7Sopenharmony_ci both "" 2008e5c31af7Sopenharmony_ci #version 310 es 2009e5c31af7Sopenharmony_ci precision highp float; 2010e5c31af7Sopenharmony_ci precision highp int; 2011e5c31af7Sopenharmony_ci ${DECLARATIONS} 2012e5c31af7Sopenharmony_ci 2013e5c31af7Sopenharmony_ci bool func (bool a) { return !a; } 2014e5c31af7Sopenharmony_ci bvec2 func (bvec2 a) { return a.yx; } 2015e5c31af7Sopenharmony_ci bvec3 func (bvec3 a) { return a.xxx; } 2016e5c31af7Sopenharmony_ci bvec4 func (bvec4 a) { return a.wwww; } 2017e5c31af7Sopenharmony_ci 2018e5c31af7Sopenharmony_ci void main() 2019e5c31af7Sopenharmony_ci { 2020e5c31af7Sopenharmony_ci ${SETUP} 2021e5c31af7Sopenharmony_ci out0 = func(func(func(func(bvec4(in0)).xyz).xy).x); 2022e5c31af7Sopenharmony_ci ${OUTPUT} 2023e5c31af7Sopenharmony_ci } 2024e5c31af7Sopenharmony_ci "" 2025e5c31af7Sopenharmony_ci end 2026e5c31af7Sopenharmony_ci 2027e5c31af7Sopenharmony_ci case user_func_arg_basic_types 2028e5c31af7Sopenharmony_ci version 310 es 2029e5c31af7Sopenharmony_ci values 2030e5c31af7Sopenharmony_ci { 2031e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 2032e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 2033e5c31af7Sopenharmony_ci } 2034e5c31af7Sopenharmony_ci 2035e5c31af7Sopenharmony_ci both "" 2036e5c31af7Sopenharmony_ci #version 310 es 2037e5c31af7Sopenharmony_ci precision highp float; 2038e5c31af7Sopenharmony_ci precision highp int; 2039e5c31af7Sopenharmony_ci ${DECLARATIONS} 2040e5c31af7Sopenharmony_ci 2041e5c31af7Sopenharmony_ci float func (float a) { return -a; } 2042e5c31af7Sopenharmony_ci vec2 func (vec2 a) { return a.yx; } 2043e5c31af7Sopenharmony_ci vec3 func (vec3 a) { return a.xxx; } 2044e5c31af7Sopenharmony_ci vec4 func (vec4 a) { return a.wwww; } 2045e5c31af7Sopenharmony_ci int func (int a) { return -a; } 2046e5c31af7Sopenharmony_ci ivec2 func (ivec2 a) { return a.yx; } 2047e5c31af7Sopenharmony_ci ivec3 func (ivec3 a) { return a.xxx; } 2048e5c31af7Sopenharmony_ci ivec4 func (ivec4 a) { return a.wwww; } 2049e5c31af7Sopenharmony_ci bool func (bool a) { return !a; } 2050e5c31af7Sopenharmony_ci bvec2 func (bvec2 a) { return a.yx; } 2051e5c31af7Sopenharmony_ci bvec3 func (bvec3 a) { return a.xxx; } 2052e5c31af7Sopenharmony_ci bvec4 func (bvec4 a) { return a.wwww; } 2053e5c31af7Sopenharmony_ci 2054e5c31af7Sopenharmony_ci void main() 2055e5c31af7Sopenharmony_ci { 2056e5c31af7Sopenharmony_ci ${SETUP} 2057e5c31af7Sopenharmony_ci if (func(func(bvec4(false)).x)) 2058e5c31af7Sopenharmony_ci out0 = func(in0) * float(func(-1)); 2059e5c31af7Sopenharmony_ci else 2060e5c31af7Sopenharmony_ci out0 = float(func(func(ivec4(func(func(func(vec4(0.5)).xyz).xy).xxxx)).xy).x); 2061e5c31af7Sopenharmony_ci ${OUTPUT} 2062e5c31af7Sopenharmony_ci } 2063e5c31af7Sopenharmony_ci "" 2064e5c31af7Sopenharmony_ci end 2065e5c31af7Sopenharmony_ci 2066e5c31af7Sopenharmony_ci case user_func_arg_complex_types 2067e5c31af7Sopenharmony_ci version 310 es 2068e5c31af7Sopenharmony_ci values 2069e5c31af7Sopenharmony_ci { 2070e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 2071e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 2072e5c31af7Sopenharmony_ci } 2073e5c31af7Sopenharmony_ci 2074e5c31af7Sopenharmony_ci both "" 2075e5c31af7Sopenharmony_ci #version 310 es 2076e5c31af7Sopenharmony_ci precision highp float; 2077e5c31af7Sopenharmony_ci precision highp int; 2078e5c31af7Sopenharmony_ci ${DECLARATIONS} 2079e5c31af7Sopenharmony_ci 2080e5c31af7Sopenharmony_ci struct Pos { float a, b, c; }; 2081e5c31af7Sopenharmony_ci struct Line { Pos start, end; }; 2082e5c31af7Sopenharmony_ci 2083e5c31af7Sopenharmony_ci float func (float a) { return -a; } 2084e5c31af7Sopenharmony_ci float func (float a[4]) { return a[0] + a[3]; } 2085e5c31af7Sopenharmony_ci vec2 func (vec2 a) { return a.yx; } 2086e5c31af7Sopenharmony_ci vec3 func (vec3 a) { return a.xxx; } 2087e5c31af7Sopenharmony_ci vec4 func (vec4 a) { return a.wwww; } 2088e5c31af7Sopenharmony_ci vec4 func (vec4 a[4]) { return a[1] + a[2]; } 2089e5c31af7Sopenharmony_ci int func (int a) { return -a; } 2090e5c31af7Sopenharmony_ci ivec2 func (ivec2 a) { return a.yx; } 2091e5c31af7Sopenharmony_ci ivec3 func (ivec3 a) { return a.xxx; } 2092e5c31af7Sopenharmony_ci ivec4 func (ivec4 a) { return a.wwww; } 2093e5c31af7Sopenharmony_ci bool func (bool a) { return !a; } 2094e5c31af7Sopenharmony_ci bvec2 func (bvec2 a) { return a.yx; } 2095e5c31af7Sopenharmony_ci bvec3 func (bvec3 a) { return a.xxx; } 2096e5c31af7Sopenharmony_ci bvec4 func (bvec4 a) { return a.wwww; } 2097e5c31af7Sopenharmony_ci Pos func (Pos a) { return a; } 2098e5c31af7Sopenharmony_ci Line func (Line a) { return Line(a.end, a.start); } 2099e5c31af7Sopenharmony_ci 2100e5c31af7Sopenharmony_ci void main() 2101e5c31af7Sopenharmony_ci { 2102e5c31af7Sopenharmony_ci ${SETUP} 2103e5c31af7Sopenharmony_ci float arr[4]; 2104e5c31af7Sopenharmony_ci vec4 arr2[4]; 2105e5c31af7Sopenharmony_ci out0 = func(arr) + func(arr2).x; 2106e5c31af7Sopenharmony_ci if (func(func(bvec4(false)).x)) 2107e5c31af7Sopenharmony_ci out0 = func(in0) * float(func(-1)); 2108e5c31af7Sopenharmony_ci else 2109e5c31af7Sopenharmony_ci out0 = float(func(func(ivec4(func(func(func(vec4(0.5)).xyz).xy).xxxx)).xy).x); 2110e5c31af7Sopenharmony_ci ${OUTPUT} 2111e5c31af7Sopenharmony_ci } 2112e5c31af7Sopenharmony_ci "" 2113e5c31af7Sopenharmony_ci end 2114e5c31af7Sopenharmony_ci 2115e5c31af7Sopenharmony_ci case user_func_arguments 2116e5c31af7Sopenharmony_ci version 310 es 2117e5c31af7Sopenharmony_ci values 2118e5c31af7Sopenharmony_ci { 2119e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; 2120e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; 2121e5c31af7Sopenharmony_ci } 2122e5c31af7Sopenharmony_ci 2123e5c31af7Sopenharmony_ci both "" 2124e5c31af7Sopenharmony_ci #version 310 es 2125e5c31af7Sopenharmony_ci precision highp float; 2126e5c31af7Sopenharmony_ci ${DECLARATIONS} 2127e5c31af7Sopenharmony_ci 2128e5c31af7Sopenharmony_ci float func (float a) 2129e5c31af7Sopenharmony_ci { 2130e5c31af7Sopenharmony_ci return -a; 2131e5c31af7Sopenharmony_ci } 2132e5c31af7Sopenharmony_ci 2133e5c31af7Sopenharmony_ci float func (float a, float b) 2134e5c31af7Sopenharmony_ci { 2135e5c31af7Sopenharmony_ci return a * b; 2136e5c31af7Sopenharmony_ci } 2137e5c31af7Sopenharmony_ci 2138e5c31af7Sopenharmony_ci void main() 2139e5c31af7Sopenharmony_ci { 2140e5c31af7Sopenharmony_ci out0 = func(in0) * func(-0.5, -2.0); 2141e5c31af7Sopenharmony_ci ${OUTPUT} 2142e5c31af7Sopenharmony_ci } 2143e5c31af7Sopenharmony_ci "" 2144e5c31af7Sopenharmony_ci end 2145e5c31af7Sopenharmony_ci 2146e5c31af7Sopenharmony_ci case array_size 2147e5c31af7Sopenharmony_ci version 310 es 2148e5c31af7Sopenharmony_ci values 2149e5c31af7Sopenharmony_ci { 2150e5c31af7Sopenharmony_ci output float out0 = [ 1.0 ]; 2151e5c31af7Sopenharmony_ci } 2152e5c31af7Sopenharmony_ci 2153e5c31af7Sopenharmony_ci both "" 2154e5c31af7Sopenharmony_ci #version 310 es 2155e5c31af7Sopenharmony_ci precision highp float; 2156e5c31af7Sopenharmony_ci ${DECLARATIONS} 2157e5c31af7Sopenharmony_ci 2158e5c31af7Sopenharmony_ci float func (float f[3]) 2159e5c31af7Sopenharmony_ci { 2160e5c31af7Sopenharmony_ci return f[0]; 2161e5c31af7Sopenharmony_ci } 2162e5c31af7Sopenharmony_ci 2163e5c31af7Sopenharmony_ci float func (float f[4]) 2164e5c31af7Sopenharmony_ci { 2165e5c31af7Sopenharmony_ci return f[1]; 2166e5c31af7Sopenharmony_ci } 2167e5c31af7Sopenharmony_ci 2168e5c31af7Sopenharmony_ci void main () 2169e5c31af7Sopenharmony_ci { 2170e5c31af7Sopenharmony_ci ${SETUP} 2171e5c31af7Sopenharmony_ci float[4] x = float[4] (-1.0, 1.0, 0.0, 0.0); 2172e5c31af7Sopenharmony_ci out0 = func(x); 2173e5c31af7Sopenharmony_ci ${OUTPUT} 2174e5c31af7Sopenharmony_ci } 2175e5c31af7Sopenharmony_ci "" 2176e5c31af7Sopenharmony_ci end 2177e5c31af7Sopenharmony_ci 2178e5c31af7Sopenharmony_ciend # overloading 2179e5c31af7Sopenharmony_ci 2180e5c31af7Sopenharmony_cigroup array_arguments "Arrays as Arguments" 2181e5c31af7Sopenharmony_ci 2182e5c31af7Sopenharmony_ci case local_in_float 2183e5c31af7Sopenharmony_ci version 310 es 2184e5c31af7Sopenharmony_ci values 2185e5c31af7Sopenharmony_ci { 2186e5c31af7Sopenharmony_ci input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; 2187e5c31af7Sopenharmony_ci output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; 2188e5c31af7Sopenharmony_ci } 2189e5c31af7Sopenharmony_ci 2190e5c31af7Sopenharmony_ci both "" 2191e5c31af7Sopenharmony_ci #version 310 es 2192e5c31af7Sopenharmony_ci precision highp float; 2193e5c31af7Sopenharmony_ci ${DECLARATIONS} 2194e5c31af7Sopenharmony_ci 2195e5c31af7Sopenharmony_ci float func (in float a[4]) 2196e5c31af7Sopenharmony_ci { 2197e5c31af7Sopenharmony_ci a[0] = -1.0; 2198e5c31af7Sopenharmony_ci a[2] = -4.0; 2199e5c31af7Sopenharmony_ci a[3] = -3.0 * a[1]; 2200e5c31af7Sopenharmony_ci return a[0]; 2201e5c31af7Sopenharmony_ci } 2202e5c31af7Sopenharmony_ci 2203e5c31af7Sopenharmony_ci void main() 2204e5c31af7Sopenharmony_ci { 2205e5c31af7Sopenharmony_ci float arr[4]; 2206e5c31af7Sopenharmony_ci arr[0] = in0.x; 2207e5c31af7Sopenharmony_ci arr[1] = in0.y; 2208e5c31af7Sopenharmony_ci arr[2] = in0.z; 2209e5c31af7Sopenharmony_ci arr[3] = in0.w; 2210e5c31af7Sopenharmony_ci float f = func(arr); 2211e5c31af7Sopenharmony_ci out0 = f * vec4(arr[0], arr[1], arr[2], arr[3]); 2212e5c31af7Sopenharmony_ci ${OUTPUT} 2213e5c31af7Sopenharmony_ci } 2214e5c31af7Sopenharmony_ci "" 2215e5c31af7Sopenharmony_ci end 2216e5c31af7Sopenharmony_ci 2217e5c31af7Sopenharmony_ci case global_in_float 2218e5c31af7Sopenharmony_ci version 310 es 2219e5c31af7Sopenharmony_ci values 2220e5c31af7Sopenharmony_ci { 2221e5c31af7Sopenharmony_ci input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; 2222e5c31af7Sopenharmony_ci output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; 2223e5c31af7Sopenharmony_ci } 2224e5c31af7Sopenharmony_ci 2225e5c31af7Sopenharmony_ci both "" 2226e5c31af7Sopenharmony_ci #version 310 es 2227e5c31af7Sopenharmony_ci precision highp float; 2228e5c31af7Sopenharmony_ci ${DECLARATIONS} 2229e5c31af7Sopenharmony_ci 2230e5c31af7Sopenharmony_ci float func (in float a[4]) 2231e5c31af7Sopenharmony_ci { 2232e5c31af7Sopenharmony_ci a[0] = -1.0; 2233e5c31af7Sopenharmony_ci a[2] = -4.0; 2234e5c31af7Sopenharmony_ci a[3] = -3.0 * a[1]; 2235e5c31af7Sopenharmony_ci return a[0]; 2236e5c31af7Sopenharmony_ci } 2237e5c31af7Sopenharmony_ci 2238e5c31af7Sopenharmony_ci float arr[4]; 2239e5c31af7Sopenharmony_ci 2240e5c31af7Sopenharmony_ci void main() 2241e5c31af7Sopenharmony_ci { 2242e5c31af7Sopenharmony_ci arr[0] = in0.x; 2243e5c31af7Sopenharmony_ci arr[1] = in0.y; 2244e5c31af7Sopenharmony_ci arr[2] = in0.z; 2245e5c31af7Sopenharmony_ci arr[3] = in0.w; 2246e5c31af7Sopenharmony_ci float f = func(arr); 2247e5c31af7Sopenharmony_ci out0 = f * vec4(arr[0], arr[1], arr[2], arr[3]); 2248e5c31af7Sopenharmony_ci ${OUTPUT} 2249e5c31af7Sopenharmony_ci } 2250e5c31af7Sopenharmony_ci "" 2251e5c31af7Sopenharmony_ci end 2252e5c31af7Sopenharmony_ci 2253e5c31af7Sopenharmony_ci case local_in_int 2254e5c31af7Sopenharmony_ci version 310 es 2255e5c31af7Sopenharmony_ci values 2256e5c31af7Sopenharmony_ci { 2257e5c31af7Sopenharmony_ci input ivec4 in0 = [ ivec4(0, 1, 2, -4) | ivec4(-7, -11, 13, 19) ]; 2258e5c31af7Sopenharmony_ci output ivec4 out0 = [ ivec4(0, -1, -2, 4) | ivec4(7, 11, -13, -19) ]; 2259e5c31af7Sopenharmony_ci } 2260e5c31af7Sopenharmony_ci 2261e5c31af7Sopenharmony_ci both "" 2262e5c31af7Sopenharmony_ci #version 310 es 2263e5c31af7Sopenharmony_ci precision highp float; 2264e5c31af7Sopenharmony_ci precision highp int; 2265e5c31af7Sopenharmony_ci ${DECLARATIONS} 2266e5c31af7Sopenharmony_ci 2267e5c31af7Sopenharmony_ci int func (in int a[4]) 2268e5c31af7Sopenharmony_ci { 2269e5c31af7Sopenharmony_ci a[0] = -1; 2270e5c31af7Sopenharmony_ci a[2] = -4; 2271e5c31af7Sopenharmony_ci a[3] = -3 * a[1]; 2272e5c31af7Sopenharmony_ci return a[0]; 2273e5c31af7Sopenharmony_ci } 2274e5c31af7Sopenharmony_ci 2275e5c31af7Sopenharmony_ci void main() 2276e5c31af7Sopenharmony_ci { 2277e5c31af7Sopenharmony_ci ${SETUP} 2278e5c31af7Sopenharmony_ci int arr[4]; 2279e5c31af7Sopenharmony_ci arr[0] = in0.x; 2280e5c31af7Sopenharmony_ci arr[1] = in0.y; 2281e5c31af7Sopenharmony_ci arr[2] = in0.z; 2282e5c31af7Sopenharmony_ci arr[3] = in0.w; 2283e5c31af7Sopenharmony_ci int f = func(arr); 2284e5c31af7Sopenharmony_ci out0 = f * ivec4(arr[0], arr[1], arr[2], arr[3]); 2285e5c31af7Sopenharmony_ci ${OUTPUT} 2286e5c31af7Sopenharmony_ci } 2287e5c31af7Sopenharmony_ci "" 2288e5c31af7Sopenharmony_ci end 2289e5c31af7Sopenharmony_ci 2290e5c31af7Sopenharmony_ci case global_in_int 2291e5c31af7Sopenharmony_ci version 310 es 2292e5c31af7Sopenharmony_ci values 2293e5c31af7Sopenharmony_ci { 2294e5c31af7Sopenharmony_ci input ivec4 in0 = [ ivec4(0, 1, 2, 4) | ivec4(-7, -11, 13, 19) ]; 2295e5c31af7Sopenharmony_ci output ivec4 out0 = [ ivec4(0, -1, -2, -4) | ivec4(7, 11, -13, -19) ]; 2296e5c31af7Sopenharmony_ci } 2297e5c31af7Sopenharmony_ci 2298e5c31af7Sopenharmony_ci both "" 2299e5c31af7Sopenharmony_ci #version 310 es 2300e5c31af7Sopenharmony_ci precision highp float; 2301e5c31af7Sopenharmony_ci precision highp int; 2302e5c31af7Sopenharmony_ci ${DECLARATIONS} 2303e5c31af7Sopenharmony_ci 2304e5c31af7Sopenharmony_ci int func (in int a[4]) 2305e5c31af7Sopenharmony_ci { 2306e5c31af7Sopenharmony_ci a[0] = -1; 2307e5c31af7Sopenharmony_ci a[2] = -4; 2308e5c31af7Sopenharmony_ci a[3] = -3 * a[1]; 2309e5c31af7Sopenharmony_ci return a[0]; 2310e5c31af7Sopenharmony_ci } 2311e5c31af7Sopenharmony_ci 2312e5c31af7Sopenharmony_ci int arr[4]; 2313e5c31af7Sopenharmony_ci 2314e5c31af7Sopenharmony_ci void main() 2315e5c31af7Sopenharmony_ci { 2316e5c31af7Sopenharmony_ci ${SETUP} 2317e5c31af7Sopenharmony_ci arr[0] = in0.x; 2318e5c31af7Sopenharmony_ci arr[1] = in0.y; 2319e5c31af7Sopenharmony_ci arr[2] = in0.z; 2320e5c31af7Sopenharmony_ci arr[3] = in0.w; 2321e5c31af7Sopenharmony_ci int f = func(arr); 2322e5c31af7Sopenharmony_ci out0 = f * ivec4(arr[0], arr[1], arr[2], arr[3]); 2323e5c31af7Sopenharmony_ci ${OUTPUT} 2324e5c31af7Sopenharmony_ci } 2325e5c31af7Sopenharmony_ci 2326e5c31af7Sopenharmony_ci "" 2327e5c31af7Sopenharmony_ci end 2328e5c31af7Sopenharmony_ci 2329e5c31af7Sopenharmony_ci case local_in_bool 2330e5c31af7Sopenharmony_ci version 310 es 2331e5c31af7Sopenharmony_ci values 2332e5c31af7Sopenharmony_ci { 2333e5c31af7Sopenharmony_ci input bvec4 in0 = [ bvec4(true, true, false, true) | bvec4(false, false, false, false) ]; 2334e5c31af7Sopenharmony_ci output bvec4 out0 = [ bvec4(false, false, true, false) | bvec4(true, true, true, true) ]; 2335e5c31af7Sopenharmony_ci } 2336e5c31af7Sopenharmony_ci 2337e5c31af7Sopenharmony_ci both "" 2338e5c31af7Sopenharmony_ci #version 310 es 2339e5c31af7Sopenharmony_ci precision highp float; 2340e5c31af7Sopenharmony_ci precision highp int; 2341e5c31af7Sopenharmony_ci ${DECLARATIONS} 2342e5c31af7Sopenharmony_ci 2343e5c31af7Sopenharmony_ci bool func (in bool a[4]) 2344e5c31af7Sopenharmony_ci { 2345e5c31af7Sopenharmony_ci a[0] = false; 2346e5c31af7Sopenharmony_ci a[2] = true; 2347e5c31af7Sopenharmony_ci a[3] = !a[1]; 2348e5c31af7Sopenharmony_ci return a[0]; 2349e5c31af7Sopenharmony_ci } 2350e5c31af7Sopenharmony_ci 2351e5c31af7Sopenharmony_ci void main() 2352e5c31af7Sopenharmony_ci { 2353e5c31af7Sopenharmony_ci ${SETUP} 2354e5c31af7Sopenharmony_ci bool arr[4]; 2355e5c31af7Sopenharmony_ci arr[0] = !in0.x; 2356e5c31af7Sopenharmony_ci arr[1] = !in0.y; 2357e5c31af7Sopenharmony_ci arr[2] = !in0.z; 2358e5c31af7Sopenharmony_ci arr[3] = !in0.w; 2359e5c31af7Sopenharmony_ci func(arr); 2360e5c31af7Sopenharmony_ci out0 = bvec4(arr[0], arr[1], arr[2], arr[3]); 2361e5c31af7Sopenharmony_ci ${OUTPUT} 2362e5c31af7Sopenharmony_ci } 2363e5c31af7Sopenharmony_ci "" 2364e5c31af7Sopenharmony_ci end 2365e5c31af7Sopenharmony_ci 2366e5c31af7Sopenharmony_ci case global_in_bool 2367e5c31af7Sopenharmony_ci version 310 es 2368e5c31af7Sopenharmony_ci values 2369e5c31af7Sopenharmony_ci { 2370e5c31af7Sopenharmony_ci input bvec4 in0 = [ bvec4(true, true, false, true) | bvec4(false, false, false, false) ]; 2371e5c31af7Sopenharmony_ci output bvec4 out0 = [ bvec4(false, false, true, false) | bvec4(true, true, true, true) ]; 2372e5c31af7Sopenharmony_ci } 2373e5c31af7Sopenharmony_ci 2374e5c31af7Sopenharmony_ci both "" 2375e5c31af7Sopenharmony_ci #version 310 es 2376e5c31af7Sopenharmony_ci precision highp float; 2377e5c31af7Sopenharmony_ci precision highp int; 2378e5c31af7Sopenharmony_ci ${DECLARATIONS} 2379e5c31af7Sopenharmony_ci 2380e5c31af7Sopenharmony_ci bool func (in bool a[4]) 2381e5c31af7Sopenharmony_ci { 2382e5c31af7Sopenharmony_ci a[0] = false; 2383e5c31af7Sopenharmony_ci a[2] = true; 2384e5c31af7Sopenharmony_ci a[3] = !a[1]; 2385e5c31af7Sopenharmony_ci return a[0]; 2386e5c31af7Sopenharmony_ci } 2387e5c31af7Sopenharmony_ci 2388e5c31af7Sopenharmony_ci bool arr[4]; 2389e5c31af7Sopenharmony_ci 2390e5c31af7Sopenharmony_ci void main() 2391e5c31af7Sopenharmony_ci { 2392e5c31af7Sopenharmony_ci ${SETUP} 2393e5c31af7Sopenharmony_ci arr[0] = !in0.x; 2394e5c31af7Sopenharmony_ci arr[1] = !in0.y; 2395e5c31af7Sopenharmony_ci arr[2] = !in0.z; 2396e5c31af7Sopenharmony_ci arr[3] = !in0.w; 2397e5c31af7Sopenharmony_ci func(arr); 2398e5c31af7Sopenharmony_ci out0 = bvec4(arr[0], arr[1], arr[2], arr[3]); 2399e5c31af7Sopenharmony_ci ${OUTPUT} 2400e5c31af7Sopenharmony_ci } 2401e5c31af7Sopenharmony_ci "" 2402e5c31af7Sopenharmony_ci end 2403e5c31af7Sopenharmony_ci 2404e5c31af7Sopenharmony_ci case test_helpers 2405e5c31af7Sopenharmony_ci version 310 es 2406e5c31af7Sopenharmony_ci desc "Check that helper functions are supported properly." 2407e5c31af7Sopenharmony_ci values 2408e5c31af7Sopenharmony_ci { 2409e5c31af7Sopenharmony_ci input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; 2410e5c31af7Sopenharmony_ci output float out0 = [ 1.0 | 1.0 ]; 2411e5c31af7Sopenharmony_ci } 2412e5c31af7Sopenharmony_ci 2413e5c31af7Sopenharmony_ci both "" 2414e5c31af7Sopenharmony_ci #version 310 es 2415e5c31af7Sopenharmony_ci precision highp float; 2416e5c31af7Sopenharmony_ci ${DECLARATIONS} 2417e5c31af7Sopenharmony_ci 2418e5c31af7Sopenharmony_ci vec4 get (in float arr[4]); 2419e5c31af7Sopenharmony_ci void set (out float arr[4], vec4 val); 2420e5c31af7Sopenharmony_ci void negate (inout float arr[4]); 2421e5c31af7Sopenharmony_ci bool test (in float arr[4], vec4 ref); 2422e5c31af7Sopenharmony_ci bool isEqual (in float a[4], in float b[4]); 2423e5c31af7Sopenharmony_ci 2424e5c31af7Sopenharmony_ci void main() 2425e5c31af7Sopenharmony_ci { 2426e5c31af7Sopenharmony_ci float arr[4]; 2427e5c31af7Sopenharmony_ci set(arr, in0); 2428e5c31af7Sopenharmony_ci negate(arr); 2429e5c31af7Sopenharmony_ci out0 = float(test(arr, -in0)); 2430e5c31af7Sopenharmony_ci ${OUTPUT} 2431e5c31af7Sopenharmony_ci } 2432e5c31af7Sopenharmony_ci 2433e5c31af7Sopenharmony_ci float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } 2434e5c31af7Sopenharmony_ci vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } 2435e5c31af7Sopenharmony_ci void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } 2436e5c31af7Sopenharmony_ci void negate (inout float arr[4]) { set(arr, -get(arr)); } 2437e5c31af7Sopenharmony_ci bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } 2438e5c31af7Sopenharmony_ci bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } 2439e5c31af7Sopenharmony_ci "" 2440e5c31af7Sopenharmony_ci end 2441e5c31af7Sopenharmony_ci 2442e5c31af7Sopenharmony_ci case copy_local_in_on_call 2443e5c31af7Sopenharmony_ci version 310 es 2444e5c31af7Sopenharmony_ci desc "Check that local 'in' arguments are copied on call and don't alias." 2445e5c31af7Sopenharmony_ci values 2446e5c31af7Sopenharmony_ci { 2447e5c31af7Sopenharmony_ci input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; 2448e5c31af7Sopenharmony_ci output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; 2449e5c31af7Sopenharmony_ci } 2450e5c31af7Sopenharmony_ci 2451e5c31af7Sopenharmony_ci both "" 2452e5c31af7Sopenharmony_ci #version 310 es 2453e5c31af7Sopenharmony_ci precision highp float; 2454e5c31af7Sopenharmony_ci ${DECLARATIONS} 2455e5c31af7Sopenharmony_ci 2456e5c31af7Sopenharmony_ci vec4 get (in float arr[4]); 2457e5c31af7Sopenharmony_ci void set (out float arr[4], vec4 val); 2458e5c31af7Sopenharmony_ci void negate (inout float arr[4]); 2459e5c31af7Sopenharmony_ci bool test (in float arr[4], vec4 ref); 2460e5c31af7Sopenharmony_ci bool isEqual (in float a[4], in float b[4]); 2461e5c31af7Sopenharmony_ci 2462e5c31af7Sopenharmony_ci float func (in float a[4], in float b[4]) 2463e5c31af7Sopenharmony_ci { 2464e5c31af7Sopenharmony_ci a[0] = 2.123; 2465e5c31af7Sopenharmony_ci a[2] = -4.123; 2466e5c31af7Sopenharmony_ci return isEqual(a, b) ? 1.0 : -1.0; 2467e5c31af7Sopenharmony_ci } 2468e5c31af7Sopenharmony_ci 2469e5c31af7Sopenharmony_ci void main() 2470e5c31af7Sopenharmony_ci { 2471e5c31af7Sopenharmony_ci float arr[4]; 2472e5c31af7Sopenharmony_ci set(arr, in0); 2473e5c31af7Sopenharmony_ci out0 = in0 * func(arr, arr); 2474e5c31af7Sopenharmony_ci ${OUTPUT} 2475e5c31af7Sopenharmony_ci } 2476e5c31af7Sopenharmony_ci 2477e5c31af7Sopenharmony_ci float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } 2478e5c31af7Sopenharmony_ci vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } 2479e5c31af7Sopenharmony_ci void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } 2480e5c31af7Sopenharmony_ci void negate (inout float arr[4]) { set(arr, -get(arr)); } 2481e5c31af7Sopenharmony_ci bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } 2482e5c31af7Sopenharmony_ci bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } 2483e5c31af7Sopenharmony_ci "" 2484e5c31af7Sopenharmony_ci end 2485e5c31af7Sopenharmony_ci 2486e5c31af7Sopenharmony_ci case copy_global_in_on_call 2487e5c31af7Sopenharmony_ci version 310 es 2488e5c31af7Sopenharmony_ci desc "Check that global 'in' arguments are copied on call and don't alias." 2489e5c31af7Sopenharmony_ci values 2490e5c31af7Sopenharmony_ci { 2491e5c31af7Sopenharmony_ci input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; 2492e5c31af7Sopenharmony_ci output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; 2493e5c31af7Sopenharmony_ci } 2494e5c31af7Sopenharmony_ci 2495e5c31af7Sopenharmony_ci both "" 2496e5c31af7Sopenharmony_ci #version 310 es 2497e5c31af7Sopenharmony_ci precision highp float; 2498e5c31af7Sopenharmony_ci ${DECLARATIONS} 2499e5c31af7Sopenharmony_ci 2500e5c31af7Sopenharmony_ci vec4 get (in float arr[4]); 2501e5c31af7Sopenharmony_ci void set (out float arr[4], vec4 val); 2502e5c31af7Sopenharmony_ci void negate (inout float arr[4]); 2503e5c31af7Sopenharmony_ci bool test (in float arr[4], vec4 ref); 2504e5c31af7Sopenharmony_ci bool isEqual (in float a[4], in float b[4]); 2505e5c31af7Sopenharmony_ci 2506e5c31af7Sopenharmony_ci float func (in float a[4], in float b[4]) 2507e5c31af7Sopenharmony_ci { 2508e5c31af7Sopenharmony_ci a[0] = 2.123; 2509e5c31af7Sopenharmony_ci a[2] = -4.123; 2510e5c31af7Sopenharmony_ci return isEqual(a, b) ? 1.0 : -1.0; 2511e5c31af7Sopenharmony_ci } 2512e5c31af7Sopenharmony_ci 2513e5c31af7Sopenharmony_ci float arr[4]; 2514e5c31af7Sopenharmony_ci 2515e5c31af7Sopenharmony_ci void main() 2516e5c31af7Sopenharmony_ci { 2517e5c31af7Sopenharmony_ci set(arr, in0); 2518e5c31af7Sopenharmony_ci out0 = in0 * func(arr, arr); 2519e5c31af7Sopenharmony_ci ${OUTPUT} 2520e5c31af7Sopenharmony_ci } 2521e5c31af7Sopenharmony_ci 2522e5c31af7Sopenharmony_ci float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } 2523e5c31af7Sopenharmony_ci vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } 2524e5c31af7Sopenharmony_ci void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } 2525e5c31af7Sopenharmony_ci void negate (inout float arr[4]) { set(arr, -get(arr)); } 2526e5c31af7Sopenharmony_ci bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } 2527e5c31af7Sopenharmony_ci bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } 2528e5c31af7Sopenharmony_ci "" 2529e5c31af7Sopenharmony_ci end 2530e5c31af7Sopenharmony_ci 2531e5c31af7Sopenharmony_ci case copy_local_inout_on_call 2532e5c31af7Sopenharmony_ci version 310 es 2533e5c31af7Sopenharmony_ci desc "Check that local 'in' arguments are copied on call and don't alias." 2534e5c31af7Sopenharmony_ci values 2535e5c31af7Sopenharmony_ci { 2536e5c31af7Sopenharmony_ci input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; 2537e5c31af7Sopenharmony_ci output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; 2538e5c31af7Sopenharmony_ci } 2539e5c31af7Sopenharmony_ci 2540e5c31af7Sopenharmony_ci both "" 2541e5c31af7Sopenharmony_ci #version 310 es 2542e5c31af7Sopenharmony_ci precision highp float; 2543e5c31af7Sopenharmony_ci ${DECLARATIONS} 2544e5c31af7Sopenharmony_ci 2545e5c31af7Sopenharmony_ci vec4 get (in float arr[4]); 2546e5c31af7Sopenharmony_ci void set (out float arr[4], vec4 val); 2547e5c31af7Sopenharmony_ci void negate (inout float arr[4]); 2548e5c31af7Sopenharmony_ci bool test (in float arr[4], vec4 ref); 2549e5c31af7Sopenharmony_ci bool isEqual (in float a[4], in float b[4]); 2550e5c31af7Sopenharmony_ci 2551e5c31af7Sopenharmony_ci float func (inout float a[4], inout float b[4]) 2552e5c31af7Sopenharmony_ci { 2553e5c31af7Sopenharmony_ci negate(a); 2554e5c31af7Sopenharmony_ci return isEqual(a, b) ? 1.0 : -1.0; 2555e5c31af7Sopenharmony_ci } 2556e5c31af7Sopenharmony_ci 2557e5c31af7Sopenharmony_ci void main() 2558e5c31af7Sopenharmony_ci { 2559e5c31af7Sopenharmony_ci float arr[4]; 2560e5c31af7Sopenharmony_ci set(arr, in0); 2561e5c31af7Sopenharmony_ci float m = func(arr, arr); // returns -1.0 2562e5c31af7Sopenharmony_ci float n = float(test(arr, in0) || test(arr, -in0)); 2563e5c31af7Sopenharmony_ci out0 = in0 * m * n; 2564e5c31af7Sopenharmony_ci ${OUTPUT} 2565e5c31af7Sopenharmony_ci } 2566e5c31af7Sopenharmony_ci 2567e5c31af7Sopenharmony_ci float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } 2568e5c31af7Sopenharmony_ci vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } 2569e5c31af7Sopenharmony_ci void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } 2570e5c31af7Sopenharmony_ci void negate (inout float arr[4]) { set(arr, -get(arr)); } 2571e5c31af7Sopenharmony_ci bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } 2572e5c31af7Sopenharmony_ci bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } 2573e5c31af7Sopenharmony_ci "" 2574e5c31af7Sopenharmony_ci end 2575e5c31af7Sopenharmony_ci 2576e5c31af7Sopenharmony_ci case copy_global_inout_on_call 2577e5c31af7Sopenharmony_ci version 310 es 2578e5c31af7Sopenharmony_ci desc "Check that global 'in' arguments are copied on call and don't alias." 2579e5c31af7Sopenharmony_ci values 2580e5c31af7Sopenharmony_ci { 2581e5c31af7Sopenharmony_ci input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; 2582e5c31af7Sopenharmony_ci output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; 2583e5c31af7Sopenharmony_ci } 2584e5c31af7Sopenharmony_ci 2585e5c31af7Sopenharmony_ci both "" 2586e5c31af7Sopenharmony_ci #version 310 es 2587e5c31af7Sopenharmony_ci precision highp float; 2588e5c31af7Sopenharmony_ci ${DECLARATIONS} 2589e5c31af7Sopenharmony_ci 2590e5c31af7Sopenharmony_ci vec4 get (in float arr[4]); 2591e5c31af7Sopenharmony_ci void set (out float arr[4], vec4 val); 2592e5c31af7Sopenharmony_ci void negate (inout float arr[4]); 2593e5c31af7Sopenharmony_ci bool test (in float arr[4], vec4 ref); 2594e5c31af7Sopenharmony_ci bool isEqual (in float a[4], in float b[4]); 2595e5c31af7Sopenharmony_ci 2596e5c31af7Sopenharmony_ci float func (in float a[4], in float b[4]) 2597e5c31af7Sopenharmony_ci { 2598e5c31af7Sopenharmony_ci negate(a); 2599e5c31af7Sopenharmony_ci return isEqual(a, b) ? 1.0 : -1.0; 2600e5c31af7Sopenharmony_ci } 2601e5c31af7Sopenharmony_ci 2602e5c31af7Sopenharmony_ci float arr[4]; 2603e5c31af7Sopenharmony_ci 2604e5c31af7Sopenharmony_ci void main() 2605e5c31af7Sopenharmony_ci { 2606e5c31af7Sopenharmony_ci set(arr, in0); 2607e5c31af7Sopenharmony_ci float m = func(arr, arr); // returns -1.0 2608e5c31af7Sopenharmony_ci float n = float(test(arr, in0) || test(arr, -in0)); 2609e5c31af7Sopenharmony_ci out0 = in0 * m * n; 2610e5c31af7Sopenharmony_ci ${OUTPUT} 2611e5c31af7Sopenharmony_ci } 2612e5c31af7Sopenharmony_ci 2613e5c31af7Sopenharmony_ci float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } 2614e5c31af7Sopenharmony_ci vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } 2615e5c31af7Sopenharmony_ci void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } 2616e5c31af7Sopenharmony_ci void negate (inout float arr[4]) { set(arr, -get(arr)); } 2617e5c31af7Sopenharmony_ci bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } 2618e5c31af7Sopenharmony_ci bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } 2619e5c31af7Sopenharmony_ci "" 2620e5c31af7Sopenharmony_ci end 2621e5c31af7Sopenharmony_ci 2622e5c31af7Sopenharmony_ci# vec4 get (in float arr[4]); 2623e5c31af7Sopenharmony_ci# void set (out float arr[4], vec4 val); 2624e5c31af7Sopenharmony_ci# void negate (inout float arr[4]); 2625e5c31af7Sopenharmony_ci# bool test (in float arr[4], vec4 ref); 2626e5c31af7Sopenharmony_ci# bool isEqual (in float a[4], in float b[4]); 2627e5c31af7Sopenharmony_ci 2628e5c31af7Sopenharmony_ci# float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } 2629e5c31af7Sopenharmony_ci# vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } 2630e5c31af7Sopenharmony_ci# void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } 2631e5c31af7Sopenharmony_ci# void negate (inout float arr[4]) { set(arr, -get(arr)); } 2632e5c31af7Sopenharmony_ci# bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } 2633e5c31af7Sopenharmony_ci# bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } 2634e5c31af7Sopenharmony_ci 2635e5c31af7Sopenharmony_ciend # array_arguments 2636e5c31af7Sopenharmony_ci 2637e5c31af7Sopenharmony_ci#group qualifiers "Function Parameter Qualifiers" 2638e5c31af7Sopenharmony_ci# 2639e5c31af7Sopenharmony_ci#end # qualifiers 2640e5c31af7Sopenharmony_ci 2641e5c31af7Sopenharmony_cigroup control_flow "Control Flow In Functions" 2642e5c31af7Sopenharmony_ci 2643e5c31af7Sopenharmony_ci case simple_return 2644e5c31af7Sopenharmony_ci version 310 es 2645e5c31af7Sopenharmony_ci values 2646e5c31af7Sopenharmony_ci { 2647e5c31af7Sopenharmony_ci input float in0 = [ -0.5 | 1.5 ]; 2648e5c31af7Sopenharmony_ci output float out0 = [ 0.5 | -1.5 ]; 2649e5c31af7Sopenharmony_ci } 2650e5c31af7Sopenharmony_ci 2651e5c31af7Sopenharmony_ci both "" 2652e5c31af7Sopenharmony_ci #version 310 es 2653e5c31af7Sopenharmony_ci precision highp float; 2654e5c31af7Sopenharmony_ci ${DECLARATIONS} 2655e5c31af7Sopenharmony_ci 2656e5c31af7Sopenharmony_ci float func (float a) 2657e5c31af7Sopenharmony_ci { 2658e5c31af7Sopenharmony_ci return -a; 2659e5c31af7Sopenharmony_ci a = a * -1.0; 2660e5c31af7Sopenharmony_ci return 1.0; 2661e5c31af7Sopenharmony_ci } 2662e5c31af7Sopenharmony_ci 2663e5c31af7Sopenharmony_ci void main() 2664e5c31af7Sopenharmony_ci { 2665e5c31af7Sopenharmony_ci ${SETUP} 2666e5c31af7Sopenharmony_ci out0 = func(in0); 2667e5c31af7Sopenharmony_ci ${OUTPUT} 2668e5c31af7Sopenharmony_ci } 2669e5c31af7Sopenharmony_ci "" 2670e5c31af7Sopenharmony_ci end 2671e5c31af7Sopenharmony_ci 2672e5c31af7Sopenharmony_ci case return_in_if 2673e5c31af7Sopenharmony_ci version 310 es 2674e5c31af7Sopenharmony_ci values 2675e5c31af7Sopenharmony_ci { 2676e5c31af7Sopenharmony_ci input float in0 = [ -0.5 | 1.5 ]; 2677e5c31af7Sopenharmony_ci output float out0 = [ 0.5 | -1.5 ]; 2678e5c31af7Sopenharmony_ci } 2679e5c31af7Sopenharmony_ci 2680e5c31af7Sopenharmony_ci both "" 2681e5c31af7Sopenharmony_ci #version 310 es 2682e5c31af7Sopenharmony_ci precision highp float; 2683e5c31af7Sopenharmony_ci ${DECLARATIONS} 2684e5c31af7Sopenharmony_ci 2685e5c31af7Sopenharmony_ci float func (float a) 2686e5c31af7Sopenharmony_ci { 2687e5c31af7Sopenharmony_ci if (a != 0.0) 2688e5c31af7Sopenharmony_ci return -a; 2689e5c31af7Sopenharmony_ci return 1.0; 2690e5c31af7Sopenharmony_ci } 2691e5c31af7Sopenharmony_ci 2692e5c31af7Sopenharmony_ci void main() 2693e5c31af7Sopenharmony_ci { 2694e5c31af7Sopenharmony_ci ${SETUP} 2695e5c31af7Sopenharmony_ci out0 = func(in0); 2696e5c31af7Sopenharmony_ci ${OUTPUT} 2697e5c31af7Sopenharmony_ci } 2698e5c31af7Sopenharmony_ci "" 2699e5c31af7Sopenharmony_ci end 2700e5c31af7Sopenharmony_ci 2701e5c31af7Sopenharmony_ci case return_in_else 2702e5c31af7Sopenharmony_ci version 310 es 2703e5c31af7Sopenharmony_ci values 2704e5c31af7Sopenharmony_ci { 2705e5c31af7Sopenharmony_ci input float in0 = [ -0.5 | 1.5 ]; 2706e5c31af7Sopenharmony_ci output float out0 = [ 0.5 | -1.5 ]; 2707e5c31af7Sopenharmony_ci } 2708e5c31af7Sopenharmony_ci 2709e5c31af7Sopenharmony_ci both "" 2710e5c31af7Sopenharmony_ci #version 310 es 2711e5c31af7Sopenharmony_ci precision highp float; 2712e5c31af7Sopenharmony_ci ${DECLARATIONS} 2713e5c31af7Sopenharmony_ci 2714e5c31af7Sopenharmony_ci float func (float a) 2715e5c31af7Sopenharmony_ci { 2716e5c31af7Sopenharmony_ci if (a == 0.0) 2717e5c31af7Sopenharmony_ci return 1.0; 2718e5c31af7Sopenharmony_ci else 2719e5c31af7Sopenharmony_ci return -a; 2720e5c31af7Sopenharmony_ci return 1.0; 2721e5c31af7Sopenharmony_ci } 2722e5c31af7Sopenharmony_ci 2723e5c31af7Sopenharmony_ci void main() 2724e5c31af7Sopenharmony_ci { 2725e5c31af7Sopenharmony_ci ${SETUP} 2726e5c31af7Sopenharmony_ci out0 = func(in0); 2727e5c31af7Sopenharmony_ci ${OUTPUT} 2728e5c31af7Sopenharmony_ci } 2729e5c31af7Sopenharmony_ci "" 2730e5c31af7Sopenharmony_ci end 2731e5c31af7Sopenharmony_ci 2732e5c31af7Sopenharmony_ci case return_in_loop 2733e5c31af7Sopenharmony_ci version 310 es 2734e5c31af7Sopenharmony_ci values 2735e5c31af7Sopenharmony_ci { 2736e5c31af7Sopenharmony_ci input float in0 = [ -0.5 | 1.5 ]; 2737e5c31af7Sopenharmony_ci output float out0 = [ 0.5 | -1.5 ]; 2738e5c31af7Sopenharmony_ci } 2739e5c31af7Sopenharmony_ci 2740e5c31af7Sopenharmony_ci both "" 2741e5c31af7Sopenharmony_ci #version 310 es 2742e5c31af7Sopenharmony_ci precision highp float; 2743e5c31af7Sopenharmony_ci ${DECLARATIONS} 2744e5c31af7Sopenharmony_ci 2745e5c31af7Sopenharmony_ci float func (float a) 2746e5c31af7Sopenharmony_ci { 2747e5c31af7Sopenharmony_ci while (a < 100.0) 2748e5c31af7Sopenharmony_ci return -a; 2749e5c31af7Sopenharmony_ci return 1.0; 2750e5c31af7Sopenharmony_ci } 2751e5c31af7Sopenharmony_ci 2752e5c31af7Sopenharmony_ci void main() 2753e5c31af7Sopenharmony_ci { 2754e5c31af7Sopenharmony_ci ${SETUP} 2755e5c31af7Sopenharmony_ci out0 = func(in0); 2756e5c31af7Sopenharmony_ci ${OUTPUT} 2757e5c31af7Sopenharmony_ci } 2758e5c31af7Sopenharmony_ci "" 2759e5c31af7Sopenharmony_ci end 2760e5c31af7Sopenharmony_ci 2761e5c31af7Sopenharmony_ci case return_in_loop_if 2762e5c31af7Sopenharmony_ci version 310 es 2763e5c31af7Sopenharmony_ci values 2764e5c31af7Sopenharmony_ci { 2765e5c31af7Sopenharmony_ci input float in0 = [ -0.5 | 1.5 ]; 2766e5c31af7Sopenharmony_ci output float out0 = [ 0.5 | -1.5 ]; 2767e5c31af7Sopenharmony_ci } 2768e5c31af7Sopenharmony_ci 2769e5c31af7Sopenharmony_ci both "" 2770e5c31af7Sopenharmony_ci #version 310 es 2771e5c31af7Sopenharmony_ci precision highp float; 2772e5c31af7Sopenharmony_ci ${DECLARATIONS} 2773e5c31af7Sopenharmony_ci 2774e5c31af7Sopenharmony_ci float func (float a) 2775e5c31af7Sopenharmony_ci { 2776e5c31af7Sopenharmony_ci while (a < 100.0) 2777e5c31af7Sopenharmony_ci { 2778e5c31af7Sopenharmony_ci a = -a; 2779e5c31af7Sopenharmony_ci if (a != 0.0) 2780e5c31af7Sopenharmony_ci return a; 2781e5c31af7Sopenharmony_ci else 2782e5c31af7Sopenharmony_ci return -1.0; 2783e5c31af7Sopenharmony_ci } 2784e5c31af7Sopenharmony_ci return 1.0; 2785e5c31af7Sopenharmony_ci } 2786e5c31af7Sopenharmony_ci 2787e5c31af7Sopenharmony_ci void main() 2788e5c31af7Sopenharmony_ci { 2789e5c31af7Sopenharmony_ci ${SETUP} 2790e5c31af7Sopenharmony_ci out0 = func(in0); 2791e5c31af7Sopenharmony_ci ${OUTPUT} 2792e5c31af7Sopenharmony_ci } 2793e5c31af7Sopenharmony_ci "" 2794e5c31af7Sopenharmony_ci end 2795e5c31af7Sopenharmony_ci 2796e5c31af7Sopenharmony_ci case return_after_loop 2797e5c31af7Sopenharmony_ci version 310 es 2798e5c31af7Sopenharmony_ci values 2799e5c31af7Sopenharmony_ci { 2800e5c31af7Sopenharmony_ci input float in0 = [ -0.5 | 1.5 ]; 2801e5c31af7Sopenharmony_ci output float out0 = [ 0.5 | -1.5 ]; 2802e5c31af7Sopenharmony_ci } 2803e5c31af7Sopenharmony_ci 2804e5c31af7Sopenharmony_ci both "" 2805e5c31af7Sopenharmony_ci #version 310 es 2806e5c31af7Sopenharmony_ci precision highp float; 2807e5c31af7Sopenharmony_ci ${DECLARATIONS} 2808e5c31af7Sopenharmony_ci 2809e5c31af7Sopenharmony_ci float func (float a) 2810e5c31af7Sopenharmony_ci { 2811e5c31af7Sopenharmony_ci for (int i = 0; i < 5; i++) 2812e5c31af7Sopenharmony_ci a = -a; 2813e5c31af7Sopenharmony_ci return a; 2814e5c31af7Sopenharmony_ci } 2815e5c31af7Sopenharmony_ci 2816e5c31af7Sopenharmony_ci void main() 2817e5c31af7Sopenharmony_ci { 2818e5c31af7Sopenharmony_ci ${SETUP} 2819e5c31af7Sopenharmony_ci out0 = func(in0); 2820e5c31af7Sopenharmony_ci ${OUTPUT} 2821e5c31af7Sopenharmony_ci } 2822e5c31af7Sopenharmony_ci "" 2823e5c31af7Sopenharmony_ci end 2824e5c31af7Sopenharmony_ci 2825e5c31af7Sopenharmony_ci case return_after_break 2826e5c31af7Sopenharmony_ci version 310 es 2827e5c31af7Sopenharmony_ci values 2828e5c31af7Sopenharmony_ci { 2829e5c31af7Sopenharmony_ci input float in0 = [ -0.5 | 1.5 ]; 2830e5c31af7Sopenharmony_ci output float out0 = [ 0.5 | -1.5 ]; 2831e5c31af7Sopenharmony_ci } 2832e5c31af7Sopenharmony_ci 2833e5c31af7Sopenharmony_ci both "" 2834e5c31af7Sopenharmony_ci #version 310 es 2835e5c31af7Sopenharmony_ci precision highp float; 2836e5c31af7Sopenharmony_ci ${DECLARATIONS} 2837e5c31af7Sopenharmony_ci 2838e5c31af7Sopenharmony_ci float func (float a) 2839e5c31af7Sopenharmony_ci { 2840e5c31af7Sopenharmony_ci for (int i = 0; i < 6; i++) 2841e5c31af7Sopenharmony_ci { 2842e5c31af7Sopenharmony_ci a = -a; 2843e5c31af7Sopenharmony_ci if (i == 4) 2844e5c31af7Sopenharmony_ci break; 2845e5c31af7Sopenharmony_ci } 2846e5c31af7Sopenharmony_ci return a; 2847e5c31af7Sopenharmony_ci } 2848e5c31af7Sopenharmony_ci 2849e5c31af7Sopenharmony_ci void main() 2850e5c31af7Sopenharmony_ci { 2851e5c31af7Sopenharmony_ci ${SETUP} 2852e5c31af7Sopenharmony_ci out0 = func(in0); 2853e5c31af7Sopenharmony_ci ${OUTPUT} 2854e5c31af7Sopenharmony_ci } 2855e5c31af7Sopenharmony_ci "" 2856e5c31af7Sopenharmony_ci end 2857e5c31af7Sopenharmony_ci 2858e5c31af7Sopenharmony_ci case return_after_continue 2859e5c31af7Sopenharmony_ci version 310 es 2860e5c31af7Sopenharmony_ci values 2861e5c31af7Sopenharmony_ci { 2862e5c31af7Sopenharmony_ci input float in0 = [ -0.5 | 1.5 ]; 2863e5c31af7Sopenharmony_ci output float out0 = [ 0.5 | -1.5 ]; 2864e5c31af7Sopenharmony_ci } 2865e5c31af7Sopenharmony_ci 2866e5c31af7Sopenharmony_ci both "" 2867e5c31af7Sopenharmony_ci #version 310 es 2868e5c31af7Sopenharmony_ci precision highp float; 2869e5c31af7Sopenharmony_ci ${DECLARATIONS} 2870e5c31af7Sopenharmony_ci 2871e5c31af7Sopenharmony_ci float func (float a) 2872e5c31af7Sopenharmony_ci { 2873e5c31af7Sopenharmony_ci for (int i = 0; i < 6; i++) 2874e5c31af7Sopenharmony_ci { 2875e5c31af7Sopenharmony_ci if (i == 4) 2876e5c31af7Sopenharmony_ci continue; 2877e5c31af7Sopenharmony_ci a = -a; 2878e5c31af7Sopenharmony_ci } 2879e5c31af7Sopenharmony_ci return a; 2880e5c31af7Sopenharmony_ci } 2881e5c31af7Sopenharmony_ci 2882e5c31af7Sopenharmony_ci void main() 2883e5c31af7Sopenharmony_ci { 2884e5c31af7Sopenharmony_ci ${SETUP} 2885e5c31af7Sopenharmony_ci out0 = func(in0); 2886e5c31af7Sopenharmony_ci ${OUTPUT} 2887e5c31af7Sopenharmony_ci } 2888e5c31af7Sopenharmony_ci "" 2889e5c31af7Sopenharmony_ci end 2890e5c31af7Sopenharmony_ci 2891e5c31af7Sopenharmony_ci case return_in_nested_loop 2892e5c31af7Sopenharmony_ci version 310 es 2893e5c31af7Sopenharmony_ci values 2894e5c31af7Sopenharmony_ci { 2895e5c31af7Sopenharmony_ci input float in0 = [ -0.5 | 1.5 ]; 2896e5c31af7Sopenharmony_ci output float out0 = [ 0.5 | -1.5 ]; 2897e5c31af7Sopenharmony_ci } 2898e5c31af7Sopenharmony_ci 2899e5c31af7Sopenharmony_ci both "" 2900e5c31af7Sopenharmony_ci #version 310 es 2901e5c31af7Sopenharmony_ci precision highp float; 2902e5c31af7Sopenharmony_ci ${DECLARATIONS} 2903e5c31af7Sopenharmony_ci 2904e5c31af7Sopenharmony_ci float func (float a) 2905e5c31af7Sopenharmony_ci { 2906e5c31af7Sopenharmony_ci for (int i = 0; i < 6; i++) 2907e5c31af7Sopenharmony_ci { 2908e5c31af7Sopenharmony_ci a = -a; 2909e5c31af7Sopenharmony_ci for (int j = 0; j < 4; j++) 2910e5c31af7Sopenharmony_ci { 2911e5c31af7Sopenharmony_ci a = -a; 2912e5c31af7Sopenharmony_ci if (i == 1) 2913e5c31af7Sopenharmony_ci return a; 2914e5c31af7Sopenharmony_ci } 2915e5c31af7Sopenharmony_ci if (i == 4) 2916e5c31af7Sopenharmony_ci return 1.0; 2917e5c31af7Sopenharmony_ci } 2918e5c31af7Sopenharmony_ci return 1.0; 2919e5c31af7Sopenharmony_ci } 2920e5c31af7Sopenharmony_ci 2921e5c31af7Sopenharmony_ci void main() 2922e5c31af7Sopenharmony_ci { 2923e5c31af7Sopenharmony_ci ${SETUP} 2924e5c31af7Sopenharmony_ci out0 = func(in0); 2925e5c31af7Sopenharmony_ci ${OUTPUT} 2926e5c31af7Sopenharmony_ci } 2927e5c31af7Sopenharmony_ci "" 2928e5c31af7Sopenharmony_ci end 2929e5c31af7Sopenharmony_ci 2930e5c31af7Sopenharmony_ci case return_after_loop_sequence 2931e5c31af7Sopenharmony_ci version 310 es 2932e5c31af7Sopenharmony_ci values 2933e5c31af7Sopenharmony_ci { 2934e5c31af7Sopenharmony_ci input float in0 = [ -0.5 | 1.5 ]; 2935e5c31af7Sopenharmony_ci output float out0 = [ 0.5 | -1.5 ]; 2936e5c31af7Sopenharmony_ci } 2937e5c31af7Sopenharmony_ci 2938e5c31af7Sopenharmony_ci both "" 2939e5c31af7Sopenharmony_ci #version 310 es 2940e5c31af7Sopenharmony_ci precision highp float; 2941e5c31af7Sopenharmony_ci ${DECLARATIONS} 2942e5c31af7Sopenharmony_ci 2943e5c31af7Sopenharmony_ci float func (float a) 2944e5c31af7Sopenharmony_ci { 2945e5c31af7Sopenharmony_ci int i; 2946e5c31af7Sopenharmony_ci for (i = 0; i < 6; i++) // negate a 2947e5c31af7Sopenharmony_ci { 2948e5c31af7Sopenharmony_ci a = -a; 2949e5c31af7Sopenharmony_ci if (i == 4) 2950e5c31af7Sopenharmony_ci a = -a; 2951e5c31af7Sopenharmony_ci } 2952e5c31af7Sopenharmony_ci 2953e5c31af7Sopenharmony_ci for (; i < 10; i++) // keep a 2954e5c31af7Sopenharmony_ci { 2955e5c31af7Sopenharmony_ci if (i == 8) 2956e5c31af7Sopenharmony_ci continue; 2957e5c31af7Sopenharmony_ci else if (i == 9) 2958e5c31af7Sopenharmony_ci break; 2959e5c31af7Sopenharmony_ci a = -a; 2960e5c31af7Sopenharmony_ci } 2961e5c31af7Sopenharmony_ci 2962e5c31af7Sopenharmony_ci return a; 2963e5c31af7Sopenharmony_ci } 2964e5c31af7Sopenharmony_ci 2965e5c31af7Sopenharmony_ci void main() 2966e5c31af7Sopenharmony_ci { 2967e5c31af7Sopenharmony_ci ${SETUP} 2968e5c31af7Sopenharmony_ci out0 = func(in0); 2969e5c31af7Sopenharmony_ci ${OUTPUT} 2970e5c31af7Sopenharmony_ci } 2971e5c31af7Sopenharmony_ci "" 2972e5c31af7Sopenharmony_ci end 2973e5c31af7Sopenharmony_ci 2974e5c31af7Sopenharmony_ci case mixed_return_break_continue 2975e5c31af7Sopenharmony_ci version 310 es 2976e5c31af7Sopenharmony_ci values 2977e5c31af7Sopenharmony_ci { 2978e5c31af7Sopenharmony_ci input float in0 = [ -0.5 | 1.5 ]; 2979e5c31af7Sopenharmony_ci output float out0 = [ 0.5 | -1.5 ]; 2980e5c31af7Sopenharmony_ci } 2981e5c31af7Sopenharmony_ci 2982e5c31af7Sopenharmony_ci both "" 2983e5c31af7Sopenharmony_ci #version 310 es 2984e5c31af7Sopenharmony_ci precision highp float; 2985e5c31af7Sopenharmony_ci ${DECLARATIONS} 2986e5c31af7Sopenharmony_ci 2987e5c31af7Sopenharmony_ci float func (float a) 2988e5c31af7Sopenharmony_ci { 2989e5c31af7Sopenharmony_ci int i; 2990e5c31af7Sopenharmony_ci for (i = 0; i < 6; i++) 2991e5c31af7Sopenharmony_ci { 2992e5c31af7Sopenharmony_ci if (i == 0) 2993e5c31af7Sopenharmony_ci continue; 2994e5c31af7Sopenharmony_ci else if (i == 1) 2995e5c31af7Sopenharmony_ci { 2996e5c31af7Sopenharmony_ci } 2997e5c31af7Sopenharmony_ci else if (i == 3) 2998e5c31af7Sopenharmony_ci break; 2999e5c31af7Sopenharmony_ci else 3000e5c31af7Sopenharmony_ci return a; 3001e5c31af7Sopenharmony_ci a = -a; 3002e5c31af7Sopenharmony_ci } 3003e5c31af7Sopenharmony_ci 3004e5c31af7Sopenharmony_ci return 1.0; 3005e5c31af7Sopenharmony_ci } 3006e5c31af7Sopenharmony_ci 3007e5c31af7Sopenharmony_ci void main() 3008e5c31af7Sopenharmony_ci { 3009e5c31af7Sopenharmony_ci ${SETUP} 3010e5c31af7Sopenharmony_ci out0 = func(in0); 3011e5c31af7Sopenharmony_ci ${OUTPUT} 3012e5c31af7Sopenharmony_ci } 3013e5c31af7Sopenharmony_ci "" 3014e5c31af7Sopenharmony_ci end 3015e5c31af7Sopenharmony_ci 3016e5c31af7Sopenharmony_ciend # control_flow 3017e5c31af7Sopenharmony_ci 3018e5c31af7Sopenharmony_cigroup misc "Miscellaneous" 3019e5c31af7Sopenharmony_ci 3020e5c31af7Sopenharmony_ci case multi_arg_float 3021e5c31af7Sopenharmony_ci version 310 es 3022e5c31af7Sopenharmony_ci values 3023e5c31af7Sopenharmony_ci { 3024e5c31af7Sopenharmony_ci input vec4 in0 = [ vec4(0.0, 1.0, -2.0, 0.5) | vec4(2.0, 2.5, 4.0, -7.0) ]; 3025e5c31af7Sopenharmony_ci output float out0 = [ 0.5 | -1.5 ]; # -sum(in0) 3026e5c31af7Sopenharmony_ci } 3027e5c31af7Sopenharmony_ci 3028e5c31af7Sopenharmony_ci both "" 3029e5c31af7Sopenharmony_ci #version 310 es 3030e5c31af7Sopenharmony_ci precision highp float; 3031e5c31af7Sopenharmony_ci ${DECLARATIONS} 3032e5c31af7Sopenharmony_ci 3033e5c31af7Sopenharmony_ci float sum(vec4 v) { return (v.x + v.y + v.z + v.w); } 3034e5c31af7Sopenharmony_ci 3035e5c31af7Sopenharmony_ci float func (float a, vec3 b, vec2 c, vec2 d, vec4 e) 3036e5c31af7Sopenharmony_ci { 3037e5c31af7Sopenharmony_ci return -sum(vec4(a, b) + vec4(c, d)) + sum(e); 3038e5c31af7Sopenharmony_ci } 3039e5c31af7Sopenharmony_ci 3040e5c31af7Sopenharmony_ci void main() 3041e5c31af7Sopenharmony_ci { 3042e5c31af7Sopenharmony_ci ${SETUP} 3043e5c31af7Sopenharmony_ci out0 = func(in0.y, in0.xzw, in0.wz, in0.yx, in0); 3044e5c31af7Sopenharmony_ci ${OUTPUT} 3045e5c31af7Sopenharmony_ci } 3046e5c31af7Sopenharmony_ci "" 3047e5c31af7Sopenharmony_ci end 3048e5c31af7Sopenharmony_ci 3049e5c31af7Sopenharmony_ci case multi_arg_int 3050e5c31af7Sopenharmony_ci version 310 es 3051e5c31af7Sopenharmony_ci values 3052e5c31af7Sopenharmony_ci { 3053e5c31af7Sopenharmony_ci input ivec4 in0 = [ ivec4(-1, 0, 2, 2) | ivec4(1, 4, -8, 2) ]; 3054e5c31af7Sopenharmony_ci output int out0 = [ -3 | 1 ]; 3055e5c31af7Sopenharmony_ci } 3056e5c31af7Sopenharmony_ci 3057e5c31af7Sopenharmony_ci both "" 3058e5c31af7Sopenharmony_ci #version 310 es 3059e5c31af7Sopenharmony_ci precision highp float; 3060e5c31af7Sopenharmony_ci precision highp int; 3061e5c31af7Sopenharmony_ci ${DECLARATIONS} 3062e5c31af7Sopenharmony_ci 3063e5c31af7Sopenharmony_ci int sum(ivec4 v) { return (v.x + v.y + v.z + v.w); } 3064e5c31af7Sopenharmony_ci 3065e5c31af7Sopenharmony_ci int func (int a, ivec3 b, ivec2 c, ivec2 d, ivec4 e) 3066e5c31af7Sopenharmony_ci { 3067e5c31af7Sopenharmony_ci return -sum(ivec4(a, b) + ivec4(c, d)) + sum(e); 3068e5c31af7Sopenharmony_ci } 3069e5c31af7Sopenharmony_ci 3070e5c31af7Sopenharmony_ci void main() 3071e5c31af7Sopenharmony_ci { 3072e5c31af7Sopenharmony_ci ${SETUP} 3073e5c31af7Sopenharmony_ci out0 = func(in0.y, in0.xzw, in0.wz, in0.yx, in0); 3074e5c31af7Sopenharmony_ci ${OUTPUT} 3075e5c31af7Sopenharmony_ci } 3076e5c31af7Sopenharmony_ci "" 3077e5c31af7Sopenharmony_ci end 3078e5c31af7Sopenharmony_ci 3079e5c31af7Sopenharmony_ci case argument_eval_order_1 3080e5c31af7Sopenharmony_ci version 310 es 3081e5c31af7Sopenharmony_ci values 3082e5c31af7Sopenharmony_ci { 3083e5c31af7Sopenharmony_ci input int in0 = [ 0 | 1 | 3 | 5 ]; 3084e5c31af7Sopenharmony_ci output int out0 = [ -1 | 5 | 11 | 17 ]; 3085e5c31af7Sopenharmony_ci } 3086e5c31af7Sopenharmony_ci 3087e5c31af7Sopenharmony_ci both "" 3088e5c31af7Sopenharmony_ci #version 310 es 3089e5c31af7Sopenharmony_ci precision highp float; 3090e5c31af7Sopenharmony_ci precision highp int; 3091e5c31af7Sopenharmony_ci ${DECLARATIONS} 3092e5c31af7Sopenharmony_ci 3093e5c31af7Sopenharmony_ci int func (float a, int b, bool c, int d) 3094e5c31af7Sopenharmony_ci { 3095e5c31af7Sopenharmony_ci if (c) 3096e5c31af7Sopenharmony_ci return b + int(a) + d; 3097e5c31af7Sopenharmony_ci else 3098e5c31af7Sopenharmony_ci return -1; 3099e5c31af7Sopenharmony_ci } 3100e5c31af7Sopenharmony_ci 3101e5c31af7Sopenharmony_ci void main () 3102e5c31af7Sopenharmony_ci { 3103e5c31af7Sopenharmony_ci ${SETUP} 3104e5c31af7Sopenharmony_ci float v0 = float(in0); 3105e5c31af7Sopenharmony_ci int v1 = in0; 3106e5c31af7Sopenharmony_ci out0 = func((v0 += 1.0), v1++, (v0 > 1.5), v1); 3107e5c31af7Sopenharmony_ci ${OUTPUT} 3108e5c31af7Sopenharmony_ci } 3109e5c31af7Sopenharmony_ci "" 3110e5c31af7Sopenharmony_ci end 3111e5c31af7Sopenharmony_ci 3112e5c31af7Sopenharmony_ci case argument_eval_order_2 3113e5c31af7Sopenharmony_ci version 310 es 3114e5c31af7Sopenharmony_ci values 3115e5c31af7Sopenharmony_ci { 3116e5c31af7Sopenharmony_ci input int in0 = [ 0 | -1 | 3 | 5 ]; 3117e5c31af7Sopenharmony_ci output int out0 = [ 3 | -1 | 9 | 13 ]; 3118e5c31af7Sopenharmony_ci } 3119e5c31af7Sopenharmony_ci 3120e5c31af7Sopenharmony_ci both "" 3121e5c31af7Sopenharmony_ci #version 310 es 3122e5c31af7Sopenharmony_ci precision highp float; 3123e5c31af7Sopenharmony_ci precision highp int; 3124e5c31af7Sopenharmony_ci ${DECLARATIONS} 3125e5c31af7Sopenharmony_ci 3126e5c31af7Sopenharmony_ci int g; 3127e5c31af7Sopenharmony_ci 3128e5c31af7Sopenharmony_ci int modG (int v) 3129e5c31af7Sopenharmony_ci { 3130e5c31af7Sopenharmony_ci g += v; 3131e5c31af7Sopenharmony_ci return v; 3132e5c31af7Sopenharmony_ci } 3133e5c31af7Sopenharmony_ci 3134e5c31af7Sopenharmony_ci int func (float a, int b, bool c, int d) 3135e5c31af7Sopenharmony_ci { 3136e5c31af7Sopenharmony_ci if (c) 3137e5c31af7Sopenharmony_ci return b + int(a) + d; 3138e5c31af7Sopenharmony_ci else 3139e5c31af7Sopenharmony_ci return -1; 3140e5c31af7Sopenharmony_ci } 3141e5c31af7Sopenharmony_ci 3142e5c31af7Sopenharmony_ci void main () 3143e5c31af7Sopenharmony_ci { 3144e5c31af7Sopenharmony_ci ${SETUP} 3145e5c31af7Sopenharmony_ci out0 = func(float(g = in0), modG(2), --g > 0, g); 3146e5c31af7Sopenharmony_ci ${OUTPUT} 3147e5c31af7Sopenharmony_ci } 3148e5c31af7Sopenharmony_ci "" 3149e5c31af7Sopenharmony_ci end 3150e5c31af7Sopenharmony_ci 3151e5c31af7Sopenharmony_ciend # misc 3152